PHP で OOP についてもっと学ぼうとする私の探求の中で。私はコンストラクター関数に何度か出くわしましたが、もう無視することはできません。私の理解では、オブジェクトを作成した瞬間にコンストラクターが呼び出されますが、これは正しいですか?
しかし、「通常の」関数またはメソッドを呼び出しとして使用できるのに、なぜこのコンストラクターを作成する必要があるのでしょうか?
乾杯、キース
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);
更新:なぜこれを使用する必要があるのか という質問もありました.実際の例はデータベースクラスで、コンストラクターが接続するユーザー名とパスワード、および接続するテーブルを使用してオブジェクトを呼び出します. 次に、そのデータベース内ですべての作業を行う関数を用意します。
コンストラクターの考え方は、オブジェクトの最初のデータの束を準備することであり、期待どおりに動作できるようにします。
Just call a method
それを忘れる可能性があり、これは構文で「作業前に必要」として指定できないため、取引ではありません。したがって、「壊れた」オブジェクトが取得されます。
コンストラクターは、さまざまなことに適しています。クラスの変数を初期化します。BankAccount クラスを作成しているとします。$b = 新しい BankAccount(60); 銀行口座に初期値を与えるコンストラクターがあります。基本的にクラス内で変数を設定するか、他のクラスを初期化(継承)することもできます。
コンストラクターは、オブジェクトの作成時に行われる初期化用です。
新しく作成されたオブジェクトで任意のメソッドを呼び出すことは望ましくありません。これはカプセル化の考え方に反するためです。また、このオブジェクトを使用するコードには、その内部動作に関する固有の知識が必要になります (さらに多くの労力が必要になります)。