PHP は、実行するスクリプトに多数の事前定義された定数を提供します。
ただし、多くの定数はさまざまな拡張ライブラリによって定義されており、これらの拡張ライブラリが動的にロードされるか、コンパイル時に組み込まれるかによってロードされるときにのみ表示されます。
コード内の位置に応じて値が変化する魔法の定数が 8 つあります。
たとえば、__LINE__ の値は、スクリプト内でその値が配置されている行によって異なります。これらの特別な定数は大文字と小文字が区別されず、次のとおりです。
ファイル内の現在の行番号。
<?phpエコー'これは行番号" . __LINE__ . ' " ;
上記の例の出力結果は次のとおりです。
これは行「2」です
ファイルのフルパスとファイル名。インクルードされたファイル内で使用された場合、インクルードされたファイルの名前を返します。
PHP 4.0.2 以降、__FILE__ には常に絶対パス (シンボリック リンクの場合は解決された絶対パス) が含まれますが、それより前のバージョンには相対パスが含まれる場合がありました。
例:
<?phpエコー'ファイルは " ' . __FILE__ . ' " ' ? >にあります。
上記の例の出力結果は次のとおりです。
ファイルは「E:wampwwwtestindex.php」にあります。
ファイルが置かれているディレクトリ。インクルードされたファイル内で使用された場合、インクルードされたファイルが配置されているディレクトリを返します。
これは dirname(__FILE__) と同等です。ルート ディレクトリでない限り、ディレクトリ名には末尾のスラッシュは含まれません。 (PHP 5.3.0の新機能)
<?phpエコー'ファイルは " ' . __DIR__ . ' " ' ?>にあります。
上記の例の出力結果は次のとおりです。
ファイルは「 E:wampwwwtest 」にあります。
関数名 (PHP 4.3.0 の新機能)。 PHP 5 以降、この定数は関数が定義されたときの関数の名前を返します (大文字と小文字は区別されます)。 PHP 4 では、この値は常に小文字です。
<?php関数テスト( ) { エコー '関数名: ' __FUNCTION__ ;テスト( ) ? >
上記の例の出力結果は次のとおりです。
関数名: テスト
クラスの名前 (PHP 4.3.0 の新機能)。 PHP 5 以降、この定数は定義されたときのクラスの名前を返します (大文字と小文字は区別されます)。
PHP 4 では、この値は常に小文字です。クラス名には、それが宣言されているスコープが含まれます (例: FooBar)。 PHP 5.4 以降、__CLASS__ はトレイトに対しても機能することに注意してください。特性メソッド内で使用される場合、__CLASS__ は特性メソッドを呼び出すクラスの名前になります。
<?phpクラステスト{ 関数_print ( ) { エコー'クラス名: ' __CLASS__ 。 '関数名: ' __FUNCTION__ ; } $t =新しいテスト( ) ; $t -> _print ( ) ? >
上記の例の出力結果は次のとおりです。
クラス名:test 関数名:_print
トレイトの名前 (PHP 5.4.0 の新機能)。 PHP 5.4.0 以降、PHP はトレイトと呼ばれるコード再利用の方法を実装しました。
トレイト名には、トレイトが宣言されているスコープが含まれます (たとえば、FooBar)。
基本クラスから継承されたメンバーは、挿入された SayWorld トレイトの MyHelloWorld メソッドによってオーバーライドされます。その動作は、MyHelloWorld クラスで定義されたメソッドと一致しています。優先順位としては、現在のクラスのメソッドが特性メソッドをオーバーライドし、特性メソッドが基本クラスのメソッドをオーバーライドします。
<?phpクラスベース{ 公共関数こんにちは( ) { エコー'こんにちは' ; } } 特性セイワールド{ 公共関数こんにちは( ) { 親:: sayHello ( ) ; '世界! ' ; } } クラスマイハローワールド伸びるベース{ 使用セイワールド; $o =新しいMyHelloWorld ( ) ; $o -> sayHello ( ) ? >
上記のルーチンは次を出力します。
「こんにちは世界」
クラスのメソッド名 (PHP 5.0.0 の新機能)。定義されたとおりのメソッド名を返します (大文字と小文字が区別されます)。
例:
<?php関数テスト( ) { エコー '関数名: ' __METHOD__ ;テスト( ) ? >
上記の例の出力結果は次のとおりです。
関数名: テスト
現在のネームスペースの名前 (大文字と小文字が区別されます)。この定数はコンパイル時に定義されます (PHP 5.3.0 の新機能)。
例:
<?php名前空間マイプロジェクト; '名前空間は: " ' , __NAMESPACE__ , ' " ' //出力 "MyProject" ; ?>
上記の例の出力結果は次のとおりです。
名前空間は「MyProject」です。