目次
1 __LINE__ - 実行ライン番号を追跡します
2。__ __FILE__ - 現在のスクリプトへのフルパスを取得します
3。__ __DIR__ - dirname(__FILE__)に代わるより安全な代替
4。__ __FUNCTION__ - 現在の関数を特定します
5。__ __CLASS__ - 現在のクラス名を取得します
6。__ __TRAIT__ - 現在の特性を特定します
7 __METHOD__ - 完全なメソッド名はクラスを含みます
ボーナス: __NAMESPACE__ - 動的な名前空間処理用
マジック定数を使用するための実用的なヒント
ホームページ バックエンド開発 PHPチュートリアル コンテキスト認識アプリケーションのPHPのマジック定数を分類します

コンテキスト認識アプリケーションのPHPのマジック定数を分類します

Jul 30, 2025 am 05:42 AM
PHP Constants

PHPの7つの魔法の定数は、__line__、__file__、__dir__、__function__、__class__、__trait__、__method__であり、コードの場所とコンテキスト情報を動的に返すことができます。 1。ラインは、正確なデバッグのために現在の行番号を返します。 2。ファイルは、現在のファイルの絶対パスを返します。これは、ファイルを確実に導入したり、ルートディレクトリを定義したりするためによく使用されます。 3。dir現在のファイルが配置されているディレクトリを返します。これは、dirName(__ file__)よりも明確で効率的です。 4。関数は、関数レベルのログトラッキングに適した現在の関数名を返します。 5。クラスは、ログモードと工場モードでハードコーディングを回避し、現在のクラス名(名前空間を含む)を返します。 6.特性は特性でその名前を返します。これは、特性の動作をデバッグするのに役立ちます。 7.メソッド「Class :: Method」の形式で完全なメソッド名を返します。これは、詳細な通話トレースに適しています。さらに、__namespace__は、動的なインスタンス化またはルーティングのために現在の名前空間を取得できます。これらの定数の合理的な組み合わせは、コードの保守性とデバッグ効率を向上させることができますが、ログの冗長性は避け、特性のクラスと特性の行動の違いに注意を払う必要があります。それらは「魔法」と呼ばれますが、自動コンテキストの解析に基づいて組み込みの定数であり、コードをより自己認識します。

コンテキスト対応アプリケーション用のphp \ 'の魔法の定数を分類します

PHPの魔法の定数は、一見するとマイナーな機能のように思えるかもしれませんが、それらはコンテキスト認識、保守可能、デバッグに優しいアプリケーションを構築するための強力なツールです。通常の定数とは異なり、マジック定数はPHPによって事前に定義され、コードの使用場所に基づいて動的に変更されます。それらを理解することで、ロギング、デバッグ、モジュラーコードの構造を大幅に改善できます。

コンテキスト認識アプリケーションのPHPのマジック定数を分類します

7つの魔法の定数の内訳と、実際のアプリケーションでそれらを効果的に使用する方法を次に示します。


1 __LINE__ - 実行ライン番号を追跡します

__LINE__ 、使用されているファイルの現在の行番号を返します。これは、デバッグ中に特に役立ちます。

コンテキスト認識アプリケーションのPHPのマジック定数を分類します
エコー「現在の線:」。 __ライン__;

使用事例:
ロギングエラーまたは実行フローのトレースを含める場合は、 __LINE__を含めて、何かがうまくいかなかった場所を正確に特定します。

 error_log( "erserが行で発生しました"。__line__。 "in"。__file__);

これは、特に大きな手続きファイルまたはレガシーコードで、一般的なメッセージよりも便利です。

コンテキスト認識アプリケーションのPHPのマジック定数を分類します

2。__ __FILE__ - 現在のスクリプトへのフルパスを取得します

__FILE__ 、ファイル名を含む現在のファイルへの絶対パスを提供します。

 echo __file__; // EG、/var/www/project/index.php

使用事例:
一般に、現在のファイルの場所に関連するファイルを含めるために使用され、相対パスの問題を回避します。

 require_once dirname(__ file__)。 '/config.php';

さらに良いことに、オートローディングで使用するか、ベースディレクトリを定義するときに使用してください。

 define( 'app_root'、dirname(__ file__));

注:最新のPHPでは、 dirname(__DIR__)ディレクトリを上げるためにしばしばクリーンです。


3。__ __DIR__ - dirname(__FILE__)に代わるより安全な代替

はじめにPHP 5.3で、 __DIR__現在のファイルのディレクトリを返しますdirname(__FILE__)

 echo __dir__; // eg、/var/www/project/include

使用事例:
それを使用して、信頼できる依存関係またはロード構成ファイルを含める:

 __dir__を含めます。 '/helpers.php';

読みやすく、 dirname(__FILE__)よりもわずかに高速であるため、すべての新しいコードで推奨されるはずです。


4。__ __FUNCTION__ - 現在の関数を特定します

__FUNCTION__ 、使用されている関数の名前を返します。

関数calculateTotal(){
    エコー「内部関数:」。 __関数__;
}

使用事例:
関数呼び出しのデバッグやトレースログの作成に最適です。

関数プロセスオーダー($ id){
    error_log( "start"。__function__。 "Order ID:"。$ id);
    // ...
}

注:クラスではなく、関数名のみを返します。クラスのコンテキストについては、 __METHOD__を参照してください。


5。__ __CLASS__ - 現在のクラス名を取得します

__CLASS__ 、該当する場合は名前空間を含め、使用されているクラスの名前を返します。

 class Payneggateway {
    public function log(){
        エコー「クラス:」。 __クラス__;
    }
}

使用事例:
ロギング、工場パターン、またはハードコード名のないクラス固有の動作が必要な場合:

パブリック関数logerror($ message){
    error_log( "[$ __ class__] $ message");
}

それは継承を尊重します。したがって、子どものクラスでさえ、それが書かれているクラスを返します(特性で使用されない限り - 以下を参照)。


6。__ __TRAIT__ - 現在の特性を特定します

特性内で使用すると、 __TRAIT__特性の名前を返します。

特性ログ可能{
    パブリック関数ログ($ msg){
        echo "["。 __trait__。 "]」 $ msg;
    }
}

使用事例:
特性を介して注入される動作をデバッグまたはログにするのに役立ちます。複数のクラスで特性が使用されている場合、 __TRAIT__クラスではなく、特性の名前を引き続き返すことに注意してください。


7 __METHOD__ - 完全なメソッド名はクラスを含みます

__METHOD__クラス名とメソッド名をClassName::methodName形式で返します。

クラスユーザー{
    パブリック関数save(){
        エコー「メソッドと呼ばれる:」。 __方法__;
        //出力:ユーザー::保存
    }
}

使用事例:
特にAPIまたは複雑なオブジェクト階層での詳細なロギングとデバッグに最適:

パブリック関数fetchdata(){
    error_log( "Entering"。__method__。 "at line"。__line__);
}

__FUNCTION__とは異なり、クラスのコンテキストが含まれているため、ログをより有益にします。


ボーナス: __NAMESPACE__ - 動的な名前空間処理用

常にCore Sevenにリストされているわけではありませんが、 __NAMESPACE__現在の名前空間を返すもう1つの魔法の定数です。

 namespace app \ controllers;

echo __namespace__; // App \ Controllers

使用事例:
オートローディングロジック、動的クラスのインスタンス化、またはルーティングシステムに役立ちます。

 $ fullclass = __namespace__。 '\\ usercontroller';
$ instance = new $ fullclass();

マジック定数を使用するための実用的なヒント

  • 生産ログの過剰使用を避けます- 役立つ、過剰なライン番号またはメソッド名はログを混乱させる可能性があります。
  • より良いコンテキストのために組み合わせる- __METHOD__ . '()' . ' at line ' . __LINE__詳細なスタックトレースについては。
  • 特性に注意してください- 特性の中で__CLASS__ __TRAIT__クラスを返します。違いを知る。
  • それらは名前が覆われていますが、慣習は大文字です- 常に__FILE__ではなく__file__としてそれらを書きます。

魔法の定数は魔法ではありません。スマートでコンテキストを意識したツールをPHPに焼きました。思慮深く使用すると、アプリケーションをより自己認識し、デバッグしやすく、保守しやすくします。

基本的に、彼らはあなたのコードがそれがどこにあるかを知るのを助けます - そしてそれは強力です。

以上がコンテキスト認識アプリケーションのPHPのマジック定数を分類しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

ホットトピック

PHPのエンジンにおける一定の発現評価を理解する PHPのエンジンにおける一定の発現評価を理解する Jul 29, 2025 am 05:02 AM

phpevaluates constantexpressionsionsatimeTimetoepperpeperformandenableerrordetection.1.constantexpressionevaluationmeansComputingValuesduring during during during duringは、constantslikeliterals、class Conconstants、またはcledefinedconstants.2.phphphse

Jul 29, 2025 am 03:58 AM

phpdoesnotalowcontantredeclarationbetweentraitsandclasses、rucesinginginafatalerror rurror rurorror radescuracrosstraits、parentclasses、olchildclasses;

不変性を備えたアーキテクトリング:PHPでの定数の戦略的使用 不変性を備えたアーキテクトリング:PHPでの定数の戦略的使用 Jul 29, 2025 am 04:52 AM

ConstantsshouldbeusedtoenforceimmutabilityinPHPforbettercodeclarityandsafety;1)useconstantsforconfigurationanddomainlogiclikestatuscodesorAPIendpointstoavoidmagicvalues;2)preferclassorinterface-scopedconstantsoverglobalonestoimprovenamespacinganddisc

パフォーマンスパラダイム:定数の速度と変数の分析 パフォーマンスパラダイム:定数の速度と変数の分析 Jul 30, 2025 am 05:41 AM

✅、constantans arefasterthanvariablesincompiledlanguagesduetocopile-timeevaluationandinlining.1.constantantantantantantantantantantantantantantantantantantantantatantantatantatantatimeating、constingvalueinlining、constryfolding、andelimination ofmemoryallocation、whire-bariablesuntimeruntimeruntimeruntimeruntimeRuntimeRuntimememorya

名前のスペースと定数:大規模プロジェクトの衝突の回避 名前のスペースと定数:大規模プロジェクトの衝突の回避 Jul 30, 2025 am 05:35 AM

名前を作成してください

`define()` vs. `const`:a php constant宣言に深く潜る `define()` vs. `const`:a php constant宣言に深く潜る Jul 30, 2025 am 05:02 AM

コンパイル時に解析し、パフォーマンスが向上し、名前空間をサポートするため、最初にconstを使用します。 2。条件と関数で定数を定義する必要がある場合、または動的名を使用する必要がある場合、define()を使用する必要があります。 3.クラス内の定数を定義するためにconstのみを使用できます。 4。定義()は、実行時に式を動的に定義し、名前空間文字列を完全に定義できます。 5.両方が定義されると、変更できませんが、定義()はdefined()を介して繰り返し定義を回避できますが、constはチェックできません。 6. const名は文字通りでなければならず、可変補間をサポートしていません。したがって、constは固定および明示的な定数に適しており、定義はランタイムロジックまたは動的命名を必要とするシナリオに適しています。

コンテキスト認識アプリケーションのPHPのマジック定数を分類します コンテキスト認識アプリケーションのPHPのマジック定数を分類します Jul 30, 2025 am 05:42 AM

PHPの7つの魔法の定数は、__line__、__file__、__dir__、__function__、__class__、__trait__、__method__であり、コードの場所とコンテキスト情報を動的に返すことができます。 2。ファイルは、ファイルを確実に導入したり、ルートディレクトリを定義したりするためによく使用される現在のファイルの絶対パスを返します。 3。dir現在のファイルが配置されているディレクトリを返します。これは、dirName(__file__)よりも明確で効率的です。 4。関数は、関数レベルのログトラッキングに適した現在の関数名を返します。 5。クラスは、ログと工場で現在のクラス名(名前空間を含む)を返します

クラス定数のマスター:可視性、継承、および「最終的な修飾子」 クラス定数のマスター:可視性、継承、および「最終的な修飾子」 Aug 01, 2025 am 06:17 AM

classConstantsArepublicbydefaultandcanbecontrolledvisibilityModifiers:1。publicallowsacss fromany where、2.protectedRestrictSacestotheclassanditssubclasses、3.privateLimitsacesstothedededededonly;

See all articles