2013-01-11 123 views
5

我之前已詢問此鏈接 - Answer is in JAVA context和此爲constructor in PHP。由於我是首發,我在OOP概念中實現了我的PHP代碼,因此我非常願意瞭解PHP抽象類中的使用和好處,或者何時使用構造函數。什麼是抽象類中的構造函數的使用php

請提供一個在現實世界中的例子來更好地理解這個概念。

PS - 雖然我在跟着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