質問
PHP の OOP についてもっと学ぼうとする私の探求。私はコンストラクター関数に何度か遭遇しましたが、もう無視できません。私の理解では、オブジェクトを作成した瞬間にコンストラクターが呼び出されますが、これは正しいですか?
しかし、「通常の」関数やメソッドを呼び出すことができるのに、なぜこのコンストラクターを作成する必要があるのでしょうか?
乾杯、キース
解決
はい、オブジェクトの作成時にコンストラクターが呼び出されます。
コンストラクターの有用性の小さな例を次に示します。
class Bar
{
// The variable we will be using within our class
var $val;
// This function is called when someone does $foo = new Bar();
// But this constructor has also an $var within its definition,
// So you have to do $foo = new Bar("some data")
function __construct($var)
{
// Assign's the $var from the constructor to the $val variable
// we defined above
$this->val = $var
}
}
$foo = new Bar("baz");
echo $foo->val // baz
// You can also do this to see everything defined within the class
print_r($foo);
アップデート:なぜこれを使用する必要があるのかという質問もありました。実際の例はデータベース クラスで、ユーザー名とパスワード、および接続先のテーブルを使用してオブジェクトを呼び出し、コンストラクターが接続します。そうすれば、そのデータベース内ですべての作業を実行する関数が得られます。
他のヒント
コンストラクタを使用すると、オブジェクトを使用する前に特定の状態にすることができます。たとえば、オブジェクトに使用に必要な特定のプロパティがある場合、コンストラクタでそれらを初期化できます。また、コンストラクターを使用すると、オブジェクトを効率的に初期化できます。
コンストラクターの考え方は、オブジェクトのデータの初期束を準備して、オブジェクトが期待どおりに動作するようにすることです。
メソッドを呼び出すだけ
は取り引きではありません。それは忘れてしまう可能性があり、「作業の前に必要」として指定することはできません。構文で-あなたは「壊れた」を得るでしょうオブジェクト。
コンストラクターはさまざまな用途に適しています。クラス内の変数を初期化します。 BankAccountクラスを作成しているとします。 $ b =新しいBankAccount(60);銀行口座に初期値を与えるコンストラクターがあります。基本的にクラス内で変数を設定するか、他のクラスを初期化することもできます(継承)。
コンストラクタは、オブジェクトの作成時に初期化を行うためのものです。
これは、カプセル化の考え方に反するため、新しく作成されたオブジェクトで任意のメソッドを呼び出したくないでしょう。また、このオブジェクトを使用するコードには、内部の動作に関する固有の知識が必要です(そして、より多くの労力が必要です)。