前回記事PHPでオブジェクト指向入門3~メソッド~では、オブジェクト指向における関数の扱い方について記述していきました。 今度はインスタンス化したときの最後のカッコに引数を記述して実行する方法をまとめていきます。9月18日記事
目次
インスタンス化には「new クラス名()」でした。この空白のカッコを少し考えてきます。
インスタンス化した時点で、一気ににメソッドを実行できないか?という疑問が湧いてくると思います。
これができるのがコンストラクタです。
Calculator_Construct.php
<?php //Calculator_Construct.php class Calculator_Construct{ public $a; public $b; public $operate; public function __construct($a,$b,$operate){ $this->a = $a; $this->b = $b; $this->operate = $operate; } public function Show(){ print "{$this->a}と{$this->b}を{$this->operate}します。"; } } ?>
index.php
<?php //今ストラクタ require_once ('../class/Calculator_Construct.php'); $c = new Calculator_Construct(1,2,"足し算"); $c->Show(); ?>
__construct という表現が重要です。アンダーバーを2回記述します。そしてその後引数を定義し、組み立てていきます。
データベースへの接続を表す PDO インスタンスを生成するときに使われています。
$dbh = new PDO($dsn, $user, $password);
この表現には、PDOの引数に、データベース名やユーザ名、パスワード等を決めてからPDOクラスを実行してくださいという意味です。
前回は、4行必要だったのに対し(今回の場合は引数3つあるので、合計5行必要だが・・)コンストラクタを利用することで、
2行で収まりました。
最初にインスタンス化するタイミングでメソッドを実行しました。
インスタンス化するタイミングでメソッドを実行するためにはコンストラクタを使います。
インスタンスを実行するのに、初期化するという考え方を持っておくとなおよいです。
次回は、PHPでオブジェクト指向入門5~デストラクタ~でコンストラクタものを破棄する点について考えていきます。 以上