コアポイント
__LINE__
(ソースファイルの行番号を返します)、__FILE__
(そのフルパスを含むファイル名を表します)、__DIR__
(ファイルパスのみを表します)、__CLASS__
(現在のクラスの名前を返す)、(現在の関数の名前を返す)、__FUNCTION__
__METHOD__
__NAMESPACE__
魔法の方法は、特別なPHP動作にリンクするメカニズムを提供します。 __construct()
(プロパティが未定義またはgetterコンテキストで呼び出された場合)、__destruct()
セットを解除したい)、および__get()
(オブジェクトを文字列として表すのに役立ちます)。 __set()
__isset()
__unset()
PHPは、プログラムに定義された定数と魔法の方法の特別なセットを提供します。 __toString()
で設定された定数とは異なり、これらの定数の値はコードの使用場所に依存し、コードとPHPに関する読み取り専用情報にアクセスするために使用されます。マジックメソッドは、特別なPHP機能に引っ掛けるためにクラスで使用できる予約メソッド名です。 PHPの魔法の方法と定数について学んだことがないなら、この記事はあなたのためです!より便利な方法とコードでそれらを使用する方法をいくつか確認します。 事前定義された定数define()
定義された定数は、コードに関する情報にアクセスするために使用されます。ここの定数は、やなどの二重のアンダースコアで囲まれたすべての大文字に記載されています。 PHP:
によって提供されるいくつかの有用な定数を以下に示します__LINE__
以下に示すように、ソースファイルに表示される定数の行番号を返します。
<?php echo "line number: " . __LINE__; // line number: 2 echo "line number: " . __LINE__; // line number: 3 echo "line number: " . __LINE__; // line number: 4 ?>
__FILE__
<?php echo "the name of this file is: " . __FILE__; // the directory and name of file is: C:wampwwwindex.php ?>
__DIR__
<?php echo "the directory of this file is: " . __DIR__; // the directory of this file is: C:wampwww ?>
__CLASS__
<?php class Sample { public function __construct() { echo __CLASS__; } } $obj = new Sample(); // Sample ?>
__FUNCTION__
<?php function mySampleFunc() { echo "the name the function is: " . __FUNCTION__; } mySampleFunc(); //the name of function is: mySampleFunc ?>
__METHOD__
<?php class Sample { public static function myMethod() { echo "the name of method is: " . __METHOD__; } } Sample::myMethod(); // the name of the method is: myMethod ?>
__NAMESPACE__
<?php namespace MySampleNS; echo "the namespace is: " . __NAMESPACE__; // the name space is: MySampleNS ?>
魔法の方法は、特別なPHP動作にリンクするメカニズムを提供します。以前の定数とは異なり、それらの名前は、
やなどの2つの主要なアンダースコアを使用して小文字/ラクダ文字で書かれています。 __construct()
は、PHPによって呼ばれる魔法の方法で、クラスオブジェクトのインスタンスを作成します。任意の数のパラメーターを受け入れることができます。 __destruct()
__construct()
名前が示すように、
<?php class MySample { public function __construct($foo) { echo __CLASS__ . " constructor called with $foo."; } } $obj = new MySample(42); // MySample constructor called with 42 ?>
__destruct()
次のマジックメソッドは、プロパティのオーバーロードを処理し、PHPが未定義の(またはアクセスできない)プロパティとメソッド呼び出しを処理する方法を提供します。プロパティが未定義である(またはアクセスできない)場合、ゲッターコンテキストで呼び出された場合、PHPは
<?php class MySample { public function __destruct() { echo __CLASS__ . " destructor called."; } } $obj = new MySample; // MySample destructor called ?>
<?php echo "line number: " . __LINE__; // line number: 2 echo "line number: " . __LINE__; // line number: 3 echo "line number: " . __LINE__; // line number: 4 ?>
上記の例コードでは、プロパティ名はクラスで定義されていません。値「mysample」をそれに割り当てようとしましたが、PHPは魔法の方法__set()
を呼び出します。 「名前」を$prop
パラメーターとして、「alireza」は$value
として取得し、値をプライベート$myArray
配列に保存します。 __get()
メソッドは同様に機能します$obj->name
の場合、__get()
メソッドが呼び出され、「name」が$prop
パラメーターとして渡されます。サンプルコードにも表示される、アクセス可能なメンバー変数を取得して確認するのに役立つ他の魔法の方法があります:__isset()
、__unset()
、および__toString()
。 __isset()
と__unset()
は、両方ともPHPの同じ名前(アンダースコアなし)の関数によってトリガーされます。 __isset()
プロパティが設定されているかどうかを確認し、テストするプロパティであるパラメーターを受け入れます。 __unset()
パラメーター、つまりプログラムが解明したいプロパティの名前を受信します。多くの場合、ユーザーや他のプロセスへの出力など、オブジェクトを文字列として表すことが有用です。通常、PHPはそれらをメモリ内のIDとして表しますが、これは私たちにとって良くありません。この方法は、オブジェクトを文字列として表すのに役立ちます。このメソッドは、オブジェクトが文字列として使用される場合、たとえば__toString()
としてトリガーされます。また、他の通常のパブリックメソッドと同様に直接呼ぶこともできます。これは、キャストする空の文字列を追加するなどのトリックよりも好ましいものです。 echo "Hello $obj"
概要
オブジェクト指向プログラミングは、メンテナンスとテストが簡単なコードを作成できます。より良い、より標準的なPHPコードを作成するのに役立ちます。さらに、PHPが提供する魔法の方法と定数を利用できます。
stepan kapl / shutterstock の写真 PHPマジックメソッドと事前定義された定数のFAQ PHPの魔法方法のさまざまな種類は何ですか?
PHPの魔法方法は、特定の条件が満たされたときに自動的にトリガーされる特別な機能です。彼らは常に二重のアンダースコア()から始めます。 PHPのさまざまな種類の魔法方法が含まれます`
construct()destruct()call()、
callstatic()、
get()、
set()、
set()、sleep()、
wakeup()、
toString()、
invoke()、
set_state()、
clone()、
やPHP_VERSION
などのコア定数が含まれます。事前定義された定数を使用するには、ドル記号($)を排除することなく、その名前を書くだけです。たとえば、PHPの現在のバージョンを取得するには、以下に示すようにPHP_OS
定数を使用できます。
PHP_VERSION
PHPの魔法方法の目的は何ですか? echo PHP_VERSION;
__construct()
__construct()
はい、
PHPの魔法の方法と従来の方法の違いは何ですか? define()
const
魔法の方法とPHPの従来の方法の主な違いは、特定のイベントによって魔法の方法が自動的にトリガーされ、従来の方法を明示的に呼び出す必要があることです。また、魔法の方法は常にダブルアンダースコア(__)から始まりますが、従来の方法は常にそうではありません。
PHPのdefined()
__destruct()
PHPで静的な方法で魔法の方法を使用できますか? はい、PHPで静的な方法を備えた魔法の方法を使用できます。クラスにはアクセスできない、または存在しない静的メソッドを呼び出すと、__destruct()
魔法のメソッドが自動的に発生されます。
定数を使用してPHPバージョンを確認でき、__callStatic()
定数を使用してオペレーティングシステムを確認できます。
はい、PHPで魔法の方法を書き直すことができます。サブクラスを作成するときは、独自のMagicメソッドの実装を提供できます。ただし、親クラスの実装を呼び出す場合は、PHP_VERSION
キーワードを使用できます。 PHP_OS
以上がPHPの魔法の方法と定義済み定数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。