ホームページ  >  記事  >  バックエンド開発  >  PHP マジック定数、マジック関数、事前定義定数の詳細な紹介と例

PHP マジック定数、マジック関数、事前定義定数の詳細な紹介と例

王林
王林転載
2019-08-28 16:36:512194ブラウズ

1. マジック定数

1、__construct()

インスタンス化オブジェクト, __constructとクラス名と関数名の関数が同時に存在する場合、__constructが呼び出され、もう一方は呼び出されません。

2, __destruct()

オブジェクトが削除されるかオブジェクト操作が終了するときに呼び出されます

3, __call()

オブジェクトはメソッドを呼び出します。メソッドが存在する場合は直接呼び出されます。メソッドが存在しない場合は、__call 関数が呼び出されます。

4、 __get()

オブジェクトの属性を読み取る場合、属性が存在する場合は属性値が直接返され、存在しない場合は __get 関数が呼び出されます。

5. __set()
オブジェクトの属性を設定する場合、属性が存在する場合は値が直接割り当てられ、存在しない場合は __set 関数が割り当てられます。呼ばれる。

6. __toString()
オブジェクトを印刷するときに呼び出されます。 echo $obj; や print $obj;

7 など、オブジェクトの複製時に __clone()
が呼び出されます。例: $t=new Test();$t1=clone $t;

8, __sleep()
serialize は前に呼び出されています。オブジェクトが比較的大きく、シリアル化する前に少し削除したい場合は、この関数を検討できます。

9. __wakeup()
は、シリアル化解除時に呼び出され、オブジェクトの初期化作業を実行します。

10. __isset()
オブジェクトの属性が存在するかどうかを検出するときに呼び出されます。例: isset($c->name)。

11. __unset()
オブジェクトのプロパティの設定を解除するときに呼び出されます。例: unset($c->name)。

12. __set_state()
var_export が呼び出されたときに呼び出されます。 __set_state の戻り値を var_export の戻り値として使用します。

13. __autoload()
オブジェクトをインスタンス化する際、対応するクラスが存在しない場合、このメソッドが呼び出されます。

例:

1, __get() 存在しないプロパティを読み取ろうとしたときに呼び出されます。

オブジェクトに存在しないプロパティを読み取ろうとすると、PHP はエラー メッセージを表示します。クラスに __get メソッドを追加すると、この関数を使用して Java のリフレクションと同様のさまざまな操作を実装できます。

class Test 
{ 
     public function __get($key) 
    { 
         echo $key . " 不存在"; 
    } 
} 

$t = new Test(); 
echo $t->name; 
输出:name不存在

2, __set() 存在しないプロパティに値を書き込もうとするときに呼び出されます。

class Test 
{ 
    public function __set($key, $value) 
    { 
         echo '对' . $key . "附值" . $value; 
    } 
} 

$t = new Test(); 
$t->name = "aninggo"; 
输出:对name赋值aninggo

3, __call() このメソッドは、オブジェクトに存在しないメソッドを呼び出そうとしたときに呼び出されます。

class Test 
{ 
    public function __call($Key, $Args) 
    { 
         echo "您要调用的 {$Key} 方法不存在。你传入的参数是:" . print_r($Args, true); 
    } 
} 

$t = new Test(); 
$t->getName(aning, go);

程序将会输出:
您要调用的 getName 方法不存在。参数是:Array
(
     [0] => aning
     [1] => go
)

4, __toString() は、オブジェクトを印刷するときに呼び出されます。このメソッドは、Java の toString メソッドに似ています。この関数は、オブジェクトを直接印刷するときに呼び出されます。

class Test 
{ 
     public function __toString() 
     { 
         return "打印 Test"; 
     } 
} 

$t = new Test(); 
echo $t;

echo $t; が実行されると、$t->__toString(); が呼び出され、プログラムは次のように出力します: print Test;

5,__clone() オブジェクトが複製されるときに呼び出されます。

class Test 
{ 
     public function __clone() 
     { 
         echo "我被复制了!"; 
     }
}

$t = new Test(); 
$t1 = clone $t;

程序输出:我被复制了!

2. マジック定数

1. __LINE__
ファイル内の現在の行番号を返します。
2, __FILE__
ファイルの完全なパスとファイル名を返します。インクルード ファイルで使用された場合は、インクルード ファイル名を返します。 PHP 4.0.2 以降、__FILE__ には常に絶対パスが含まれますが、それより前のバージョンには相対パスが含まれる場合がありました。

3, __DIR__
ファイルが配置されているディレクトリ。インクルードされたファイル内で使用された場合、インクルードされたファイルが配置されているディレクトリを返します。これは dirname(__FILE__) と同等です。ルート ディレクトリでない限り、ディレクトリ名には末尾のスラッシュは含まれません。 (PHP 5.3.0 の新機能)
4, __FUNCTION__
関数名を返します (PHP 4.3.0 の新機能)。 PHP 5 以降、この定数は定義されたとおりの関数名を返します (大文字と小文字は区別されます)。 PHP 4 では、この値は常に小文字です。
5, __CLASS__
クラスの名前を返します (PHP 4.3.0 で新しく追加されました)。 PHP 5 以降、この定数は定義されたときのクラスの名前を返します (大文字と小文字は区別されます)。 PHP 4 では、この値は常に小文字です。

6, __TRAIT__
Trait の名前 (PHP 5.4.0 で新しく追加されました)。 PHP 5.4 以降、この定数は定義されたとおりの特性の名前を返します (大文字と小文字が区別されます)。トレイト名には、それが宣言されているスコープが含まれます (例: Foo\Bar)。
7, __METHOD__
クラスのメソッド名を返します (PHP 5.0.0 で新しく追加されました)。定義されたとおりのメソッド名を返します (大文字と小文字が区別されます)。形式: クラス名::メソッド名

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

3. 事前定義された定数

PHP_VERSION PHP プログラムのバージョン (4.0.2 など)
#PHP_OS PHP インタープリターを実行するオペレーティング システムの名前 (Windows など) PHP_SAPI
コマンドラインまたはブラウザによって実行されるかどうかを判断するために使用されます。 )、MAC は (\r)、PHP 4.3.10 および PHP 5.0.2 以降で使用可能DIRECTORY_SEPARATOR
システム ディレクトリ区切り文字、Windows は逆勾配 (\)、Linux は斜線 (/) Path_Separat
マルチパス間隔記号、Windows はアンチスロープ ()、Linux はスラッシュ (:) Qp_int_max
int 値、32 ビット プラットフォーム値は 2147483647 です。PHP 4.4.0 および PHP 5.0.5 は から入手できます。 » 32 ビット プラットフォームの値は 4 (4 バイト) で、PHP 4.4.0 および PHP 5.0.5 から入手できます
4. PHP 実行環境検出関数php_sapi_name()
この関数は、PHP と WEB サーバー間のインターフェイスを説明する小文字の文字列を返します。
PHP (サーバー API、SAPI) で使用されるインターフェイスの種類を説明する小文字の文字列を返します。 たとえば、CLI PHP ではこの文字列は「cli」になりますが、Apache では、使用される特定の SAPI に応じて、いくつかの異なる値が存在する可能性があります。 可能な値は以下のとおりです:
aolserver、apache、apache2filter、apache2handler、caudium、cgi (PHP 5.3 まで)、cgi-fcgi、cli、continuity、embed、isapi、litespeed、milter、nsapi、phttpd 、pi3web、roxen、thttpd、tux、webjames。 SAPI: サーバーサイド API。CGI と同じもののようです。各サーバーが提供する API は異なりますが、すべて CGI を提供します。 したがって、CGI はすべてのサーバーに必要な SAPI であることが理解できます。 Apache には独自の SAPI があり、IIS にも独自の SAPI があります。ただし、php はそれぞれの SAPI をサポートしているため、これらの異なるサーバー上で動作できます。
PHP-CLI: php コマンド ライン インターフェイス。php はこのモードまたは CGI モードで動作します。 SAPI の一種であり、CGI と同様の機能を備えています。 関連するコンテンツについてさらに詳しく知りたい場合、またはこれらの関数と定数をさらに詳しく知りたい場合は、PHP 中国語 Web サイトにアクセスしてください:
PHP ビデオ チュートリアル

以上がPHP マジック定数、マジック関数、事前定義定数の詳細な紹介と例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。