2012-02-17 132 views
4

在Java中,我可以通過一個物體直參數傳遞一個對象作爲參數,在PHP

public int foo (Bar bar) 
{ 
    ... call the methods from Bar class 
} 

所以,我該怎麼做同樣的事情用PHP。感謝 這是我的代碼:

class Photo 
{ 
    private $id, $name, $description; 
    public function Photo($id, $name, $description) 
    { 
     $this->id = $id; 
     $this->name = $name; 
     $this->description = $description; 
    } 
} 
class Photos 
{ 
    private $id = 0; 
    private $photos = array(); 

    private function add(Photo $photo) 
    { 
     array_push($this->photos, $photo); 
    } 
    public function addPhoto($name, $description) 
    { 
     add(new Photo(++$this->id, $name, $description)); 
    } 
} 
$photos = new Photos(); 
$photos->addPhoto('a', 'fsdfasd'); 
var_dump($photos); // blank 

如果我改變函數添加

function add($name, $description) 
{ 
    array_push($this->photos, new Photo(++$this->id, $name, $description)); 
} 

它的工作原理pefectly。那麼,什麼是錯的?

+3

您是否試過這樣做?如果是這樣,我們可以看到代碼嗎?什麼地方出了錯?你有錯誤嗎?另請參閱[關於對象的PHP手冊](http://php.net/language.types.object)和[函數參數](http://php.net/functions.arguments)。 – Charles 2012-02-17 17:15:54

+8

完全相同的方式。 – 2012-02-17 17:16:08

+0

*如果我改變功能添加[...]它完美的工作。那麼,什麼是錯的?*這是你告訴我們的。你期望發生什麼,發生了什麼?你是否收到任何錯誤信息等等。從我所看到的,你應該調用函數作爲'$ this-> add(...)'而不僅僅是'add(...)'。 – 2012-02-17 17:54:52

回答

10

你這樣做完全一樣的方式,只是一些語法變化,當然:

public function foo(Bar $bar) 
{ 
    // $bar->method() 
} 

請記住,你只能type hint類和數組。

相關問題