2013-01-11 13 views
5

です。私はこのリンクを尋ねる前に、Answer is in JAVA contextとこれをconstructor in PHPと書いています。抽象クラスのコンストラクタの使い方は

私はOOPの概念で自分のPHPコードを実装しているので、PHP抽象クラスでコンストラクタを使用する方法や利点についていつでも知りたいと思います。

実際の状況で、より良いコンセプトを得るための例を示してください。

PS - 私はOOPの概念を理解するためにPHP Manualsに従っていますが、理解するのは少し難しいと思っていますが、リンク/ブログに従うのは本当に感謝しています。

マイコード -

<?php 

abstract class grandClass 
{ 
    abstract function grandmethod(); 

    function __construct() 
    { 
     echo "I am grandClass constructor"; 
    } 
} 

abstract class parentClass extends grandClass 
{ 
    abstract function raiseFlag(); 

    function grandmethod() 
    { 
     echo "This is grandmethod!!!","<br />"; 
    } 

    public function getValue() 
    { 
     echo "Zero is the blackhole for the numbers!!","<br />"; 
    } 
} 

class childClass extends parentClass 
{ 

    function raiseFlag() 
    { 
     echo "Peaceful thoughts!!","<br />"; 
    } 

} 

$myobj = new childClass(); 
$myobj->raiseFlag(); 
$myobj->getValue(); 
$myobj->grandmethod(); 

答えて

27

コンストラクタ抽象クラスでは、具体的なクラスの場合と同じです。たとえば、データの初期化やリソースの割り当てが必要な場合など、コンストラクタを使用します。

私はあなたに例をあげる:

abstract class Db 
{ 
    protected $pdo; 

    public function __construct($pdo) 
    { 
     $this->pdo = $pdo; 
    } 

    abstract function select($table, $fields); 
} 

class Db_Mysql extends Db 
{ 
    public function select($table, $fields) 
    { 
     // Build MySQL specific select query 
     // then execute it with $this->pdo 
    } 
} 

class Db_Pgsql extends Db 
{ 
    public function select($table, $fields) 
    { 
     // Build PostgreSQL specific select query 
     // then execute it with $this->pdo 
    } 
} 

// Usage: 
$db = new Db_Mysql($pdo); 

$db->select('users', array('id', 'name')); 
+0

あなたは正しい理解のためのより多くのテキストを追加してくださいすることができ、私は抽象クラスでコンストラクタの使用について尋ねられたものの...ときRTO使用し、ときにありません。 。+ 1コード: – swapnesh

+0

私の更新された解答を見てください。 – Lauris