ホームページ  >  記事  >  バックエンド開発  >  PHP マジック関数、マジック定数、事前定義定数の使用方法の詳細な説明 (例付き)

PHP マジック関数、マジック定数、事前定義定数の使用方法の詳細な説明 (例付き)

WBOY
WBOYオリジナル
2016-06-20 13:00:47961ブラウズ

PHP マジック関数、マジック定数、事前定義定数

1. 魔法の機能 (13)

__construct()

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

__destruct()

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

__call()

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

__get()

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

__set()

オブジェクトの属性を設定するとき、属性が存在する場合は値を直接割り当てます。

存在しない場合は、__set 関数が呼び出されます。

__toString()

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

など

__clone()

オブジェクトのクローンを作成するときに呼び出されます。例: $t=new Test();$t1=clone $t;

__sleep()

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

__wakeup()

オブジェクトの初期化作業を行うために unserialize が使用されるときに呼び出されます。

__isset()

オブジェクトのプロパティが存在するかどうかを確認するときに呼び出されます。例: isset($c->name)。

__unset()

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

__set_state()

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

__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();从而程序将会输出:打印 Test;
5. オブジェクトのクローン作成時に __clone() が呼び出されます。

class Test 
{ 
     public function __clone() 
     { 
         echo "我被复制了!"; 
     }
}
 
$t = new Test(); 
$t1 = clone $t;
 
程序输出:我被复制了!
2. 魔法定数(8個)

LINE

ファイル内の現在の行番号を返します。

ファイル

ファイルのフルパスとファイル名を返します。インクルード ファイルで使用された場合は、インクルード ファイル名を返します。 PHP 4.0.2 以降、

FILE には常に絶対パスが含まれますが、それより前のバージョンには相対パスが含まれる場合がありました。

ディレクトリ

ファイルが置かれているディレクトリ。インクルードされたファイル内で使用された場合、インクルードされたファイルが配置されているディレクトリを返します。 dirname(

FILE) と同等です。ルート ディレクトリでない限り、ディレクトリ名には末尾のスラッシュは含まれません。 (PHP 5.3.0 の新機能)

機能

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

クラス

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

特性 トレイト名 (PHP 5.4.0 の新機能)。 PHP 5.4 以降、この定数は定義されたとおりの特性の名前を返します (大文字と小文字が区別されます)。トレイト名には、それが宣言されるスコープが含まれます (例: FooBar)。

方法

クラスのメソッド名を返します (PHP 5.0.0 で新しく追加されました)。定義されたとおりのメソッド名を返します (大文字と小文字が区別されます)。 形式: クラス名::メソッド名

ネームスペース

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

3. 事前定義された定数

PHP_VERSION PHP プログラムのバージョン (4.0.2 など)

PHP_OS PHP インタープリターを実行するオペレーティング システムの名前 (Windows

など) PHP_SAPI は、コマンドラインまたはブラウザーのどちらを使用して実行されるかを決定するために使用されます。PHP_SAPI=='cli' は、コマンドラインで実行されることを意味します

E_ERROR 最近のエラー

E_WARNING 最近の警告

E_PARSE 解析構文には潜在的な問題があります
E_NOTICE 何か異常なことが発生しましたが、必ずしもエラーであるとは限りません

PHP_EOL システム改行文字、Windows は (rn)、Linux は (/n)、MAC は (r)、PHP 4.3.10 および PHP 5.0.2 以降で使用可能

DIRECTORY_SEPARATOR システム ディレクトリ区切り文字、Windows はバックスラッシュ ()、Linux はスラッシュ (/)

PATH_SEPARATOR マルチパス区切り文字、Windows はバックスラッシュ (;)、Linux はスラッシュ (:)

PHP_INT_MAX INT 最大値。値は 32 ビット プラットフォームでは 2147483647 で、PHP 4.4.0 および PHP 5.0.5 以降で利用可能です
PHP_INT_SIZE INT ワード長、値は 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 と同様の機能を備えています。


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