ホームページ  >  記事  >  バックエンド開発  >  PHPのマジック変数とマジック関数に関するチュートリアルのまとめ

PHPのマジック変数とマジック関数に関するチュートリアルのまとめ

WBOY
WBOYオリジナル
2016-07-25 08:51:441176ブラウズ
  1. echo 'This is the " ' . __LINE__ . ' " line';
  2. ?>
コードをコピー

出力結果は次のとおりです。 これは「2」行目です

__ファイル__ ファイルの絶対パスとファイル名。インクルードされたファイル内で使用された場合、インクルードされたファイルの名前を返します。 PHP 4.0.2 以降、__FILE__ には常に絶対パス (シンボリック リンクの場合は解決された絶対パス) が含まれますが、それより前のバージョンには相対パスが含まれる場合がありました。

例:

  1. echo 'ファイルは「 ' . __FILE__ . ' " ';
  2. ?>
コードをコピーします

出力結果は次のとおりです: ファイルは「 E:wampwwwtestindex.php 」にあります

__DIR__ ファイルが置かれているディレクトリ。インクルードされたファイル内で使用された場合、インクルードされたファイルが配置されているディレクトリを返します。 これは dirname(__FILE__) と同等です。ルート ディレクトリでない限り、ディレクトリ名には末尾のスラッシュは含まれません。 (PHP 5.3.0の新機能)

例:

  1. echo 'ファイルは「 ' . __DIR__ . ' " ';
  2. ?>
コードをコピーします

出力結果は次のとおりです: ファイルは「 E:wampwwwtest 」にあります

__機能__ 関数名 (PHP 4.3.0 の新機能)。 PHP 5 以降、この定数は定義されたとおりの関数名を返します (大文字と小文字は区別されます)。 PHP 4 では、この値は常に小文字です。

例:

  1. function test() {
  2. echo '関数が呼び出されます:' . __FUNCTION__ ;
  3. }
  4. test();
  5. ?>
コードをコピーします

結果は次のとおりです。 関数名: テスト

__クラス__ クラスの名前 (PHP 4.3.0 の新機能)。 PHP 5 以降、この定数は定義されたときのクラスの名前を返します (大文字と小文字は区別されます)。 PHP 4 では、この値は常に小文字です。クラス名には、それが宣言されているスコープが含まれます (例: FooBar)。 PHP 5.4 以降、__CLASS__ はトレイトに対しても機能することに注意してください。特性メソッド内で使用される場合、__CLASS__ は特性メソッドを呼び出すクラスの名前になります。

例:

  1. class test {
  2. function _print() {
  3. echo 'クラス名は:' . __CLASS__ . "
    ";
  4. echo '関数名は:' 。 ;
  5. }
  6. }
  7. $t = new test();
  8. $t->_print();
  9. ?>
コードをコピーします
出力結果は次のとおりです。 クラス名: テスト 関数名:_print

__特徴__ トレイトの名前 (PHP 5.4.0 の新機能)。 PHP 5.4.0 以降、PHP はトレイトと呼ばれるコード再利用の方法を実装しています。 トレイト名には、それが宣言されるスコープが含まれます (例: FooBar)。 基本クラスから継承されたメンバーは、挿入された SayWorld トレイトの MyHelloWorld メソッドによってオーバーライドされます。 その動作は、MyHelloWorld クラスで定義されたメソッドと一致しています。 優先順位としては、現在のクラスのメソッドが特性メソッドをオーバーライドし、特性メソッドが基本クラスのメソッドをオーバーライドします。

例:

  1. class Base {
  2. public function SayHello() {
  3. echo 'Hello ';
  4. }
  5. }
  6. {
  7. public functionsayHello() {
  8. parent::sayHello();
  9. echo 'World!';
  10. }
  11. }
  12. class MyHelloWorld extends Base {
  13. }
  14. $o = new MyHelloWorld();
  15. $o->sayHello();
  16. ?>
コードをコピー
出力: ハローワールド!

__方法__ クラスのメソッド名 (PHP 5.0.0 の新機能)。定義されたとおりのメソッド名を返します (大文字と小文字が区別されます)。

例:

  1. function test() {
  2. echo '関数が呼び出されます:' __METHOD__ ;
  3. }
  4. test();
  5. ?>
コードをコピーします
結果は次のとおりです。 関数名: テスト

__名前空間__ 現在のネームスペースの名前 (大文字と小文字が区別されます)。この定数はコンパイル時に定義されます (PHP 5.3.0 の新機能)。

例:

  1. namespace MyProject;
  2. echo '名前空間は: "', __NAMESPACE__, '"' // 出力 "MyProject"
  3. ?>
コードをコピー;

出力結果は次のとおりです。 名前空間は「MyProject」です

魔法の機能 __construct() オブジェクトがインスタンス化されるときに呼び出されます。 __construct とクラス名の関数が同時に存在する場合、__construct が呼び出され、もう一方は呼び出されません。 __destruct() オブジェクトが削除されるとき、またはオブジェクトの操作が終了するときに呼び出されます。 __電話() オブジェクトがメソッドを呼び出し、 メソッドが存在する場合は、それを直接呼び出します。 存在しない場合は、__call 関数が呼び出されます。 __得る() オブジェクトのプロパティを読み取るとき、 属性が存在する場合は、属性値が直接返されます。 存在しない場合は、__get 関数が呼び出されます。 __セット() オブジェクトのプロパティを設定するときは、 属性が存在する場合は、それを直接割り当てます。 存在しない場合は、__set 関数が呼び出されます。 __toString() オブジェクトを印刷するときに呼び出されます。 echo $obj や print $obj など。 __クローン() オブジェクトのクローンを作成するときに呼び出されます。例: $t=new Test();$t1=clone $t; __寝る() Serialize は以前に呼び出されました。オブジェクトが比較的大きく、シリアル化する前に少し削除したい場合は、この関数を検討できます。 __起きろ() これは、オブジェクトの初期化作業を行うために unserialize が使用されるときに呼び出されます。 __isset() オブジェクトのプロパティが存在するかどうかを確認するときに呼び出されます。例: isset($c->name)。 __unset() オブジェクトのプロパティの設定を解除するときに呼び出されます。例: unset($c->name)。 __set_state() var_export が呼び出されたときに呼び出されます。 __set_state の戻り値を var_export の戻り値として使用します。 __autoload() オブジェクトをインスタンス化するときに、対応するクラスが存在しない場合は、このメソッドが呼び出されます。



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