PHP の複数のコンストラクター パターン
PHP では、同じクラス内で個別のパラメーター シグネチャを持つ多数のコンストラクターを定義することは実現できません。この課題は、使用するコンストラクターに基づいてさまざまなインスタンス変数を初期化する場合に発生します。
解決策:
一般的に使用される手法には、デフォルトのコンストラクターとともに静的ヘルパー メソッドを利用することが含まれます。実装例を次に示します:
class Student { public function __construct() { // Allocate necessary resources } public static function withID($id) { $instance = new self(); $instance->loadByID($id); return $instance; } public static function withRow(array $row) { $instance = new self(); $instance->fill($row); return $instance; } protected function loadByID($id) { // Perform database query $row = my_db_access_stuff($id); $this->fill($row); } protected function fill(array $row) { // Populate all properties based on the provided array } }
使用法:
利用可能なデータに応じて、適切なヘルパー メソッドを使用して Student オブジェクトをインスタンス化できます:
ID が既知:
$student = Student::withID($id);
データベース行情報を含む配列が使用可能な場合:
$student = Student::withRow($row);
利点:
以上が複数のコンストラクターを使用する場合、PHP で異なるインスタンス変数を初期化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。