2012-11-27 102 views
0

我在從我的交付中訪問Jobinfo類時遇到問題。問題是我需要能夠從我的子類中獲取getQty的值,並且還需要能夠使用父類中的屬性來獲取qty_ship方法。我怎樣才能做到這一點?它似乎並沒有工作,並且對此很困惑......我想能夠動態地使用Parent-> Child和Child-> Parent中的方法。訪問父級方法和屬性PHP

class jobInfo 
{ 
    public $JOB_ID; 
    private $deliveries; // DELIVERIES CLASS 

    function __construct($job_id) 
    { 

     $this->JOB_ID=$job_id; 
     $this->deliveries = new Deliveries(); 

    } 
    public function getQty() 
    { 
     return $this->query_s('job_sheet','*', 'job_id',$this->JOB_ID, 1, 'qty'); 
     //returns a quantity from query method 
    } 

} 


class Deliveries extends jobInfo 
{ 

    function __construct(){} 

    public function qty_ship() 
    { 
     $qty = 0; 
     $SQL = mysql_query("SELECT * FROM deliveries WHERE jID='".parent::JOB_ID."'") or die(mysql_error()); 

     $rows = mysql_num_rows($SQL); 
     if($rows>0) 
     { 
      while($data = mysql_fetch_array($SQL)) 
      { 
       $qty += $data['qty_shipped']; 
      } 
     } 
     return $qty; 
    } 

    public function getTotalBO() 
    { 
     $qty = parent::getQty(); 
     $totalship = $this->qty_ship(); 

     $x = $qty-$totalship; 
     return $x; 
    } 
} 

$A = new Jobinfo(15); 
+0

不確定你是否搜索過,但這已被問了很多次。 [看看這個答案。](http://stackoverflow.com/questions/2423396/parent-object-in-php) –

+0

它看起來像這樣。基本上我想做的是能夠使用父類中的一些,並讓父類使用子類中的某些東西。但我似乎無法得到它... – Dimitri

回答

1

你想$this->getQty()$this->JOB_ID,但出於完整性考慮:

  1. 刪除您的空沒有PARM構造,因爲它實際上不能用來實例化類,除非它調用具有工作ID的父構造器,由於您希望外部定義工作ID,因此無法完成此工作。

  2. 製作JOB_ID protected。爲了更好的封裝,你可以改爲private並提供一個getJobId()方法。

  3. 處理一致的類命名 - jobInfo以小寫字母開頭,Deliveries以大寫字母開頭。

  4. 處理一致的函數命名 - 您將下劃線分隔的函數與駝峯函數混合在一起。

  5. 使用一致的間距 - 您可以混合使用1個字符,2個字符和0個字符的間距,而無需太多押韻或原因。

歡迎來到OOP和祝你好運!

+0

感謝您的帖子。從這一點我有一個想法。在C#中的項目與在PHP中的項目不同...關於一致性,你是對的。很多這些方法都是從網站上的舊功能中派生出來的,從來沒有想過它會被用在課堂上。感謝您指出類名的命名。 – Dimitri