ホームページ  >  記事  >  バックエンド開発  >  PHPでのマジック関数とマジック定数の使い方の詳細な説明

PHPでのマジック関数とマジック定数の使い方の詳細な説明

黄舟
黄舟オリジナル
2017-07-24 14:50:011267ブラウズ

この記事では主に php マジック関数とマジック定数の関連知識を紹介します。必要な方は

php マジック関数

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()
オブジェクトをインスタンス化する際、対応するクラスが存在しない場合、このメソッドが呼び出されます。

phpの魔法定数

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

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

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

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

5. __METHOD__
クラスのメソッド名を返します (PHP 5.0.0 で新しく追加されました)。メソッドが定義されたときの名前を返します (大文字と小文字が区別されます)。

(1) マジックメソッドの最初の紹介
Php 5.0 は、リリース以来、多くのオブジェクト指向機能、特に多くの使いやすいマジックメソッドを提供してきました。これにより、コーディングが簡素化され、より便利になります。システムをうまく設計してください。今日はphp5.0が提供するマジックメソッドについて学びます。

マジック関数を使用したPHPとマジック関数を使用しないPHPの比較


/**
* use magic 0.31868386268616s
* not use magic 0.11876797676086s
*/
class Test {
  private $varstr = "123";

  function __get($name) {
    return $this->varstr;
  }
}

function microtime_float()
{
  list($usec, $sec) = explode(" ", microtime());
  return ((float)$usec + (float)$sec);
}

$time_start = microtime_float();

$i = 0;
while ($i<100000) {
  $i++;
  $t = new Test();
  $t->varstr;
}

$time_end = microtime_float();
$time = $time_end - $time_start;

echo "Did nothing in $time seconds\n";

PHPのマジック関数はできるだけ使用しないことをお勧めします

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

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