2016-09-15 116 views
0

我在這裏苦苦掙扎了一些PHP代碼。就像標題所說,我試圖將一個Class的實例作爲參數傳遞給一個函數(注意,這個文件位於另一個文件中,並且具有不同的作用域,因此我需要將它作爲參數傳遞)。 這是我目前設置代碼:將方法的類實例傳遞給一個函數PHP

// requires built this page, the classes and the functions are in seperate files. 
    // That's why I need to pass it in as a parameter. 

    class ClassName { 
    private $name; 
    private $age; 

    public function getAge(){ 
     return $this->age; 
    } 
    } $className = new ClassName(); 

    // seperate file 
    var_dump($className); // works, but has no methods. 

    function randomFunc($className){ 
     echo $className->getAge(); // call to undefined method className::getAge() 
    } randomFunc($className); 

編輯2: 我在這裏上傳我的代碼: http://sandbox.onlinephpfunctions.com/code/99954d61ca4d3f53ce549dab9f8333630633d89c

我希望你們這些人能幫助我,任何幫助,將不勝感激。

+0

您是否將具有類定義的文件包含在單獨的文件中? –

+0

這是正確的! @CharlotteDunois –

+0

'var_dump'不顯示方法,對於'echo'也不顯示方法,如果沒有輸出或沒有數據顯示,則不會顯示方法。喲沒有在你的課堂中設置年齡,所以'getAge'返回NULL,不能用'echo'顯示。爲了測試目的'私人$年齡= 12;'(或任何其他數字),它會工作。 –

回答

0

這工作得很好:

<?php 
class ClassName { 
    private $name; 
    private $age = 19; 

    public function getAge(){ 
     return $this->age; 
    } 
    } 

    function randomFunc($className){ 
     echo $className->getAge(); // call to undefined method className::getAge() 
    } 

$className = new ClassName(); 

randomFunc($className); 

輸出:19

你的代碼也運行正常對我來說,它只是輸出沒有因爲年齡$是空的。

您運行的是哪個版本的PHP?

+0

我在XAMPP上使用PHP 5/7。你必須明白,這是一個基於我面臨的問題的例子。目前的代碼要複雜得多,但它在同樣的事情上失敗了。你在$年代是正確的,這是我在複製這個例子時犯的一個小錯誤。所以從理論上講,這沒有錯? –

+0

是的,你的代碼應該很好:) – skrilled

+0

我已經得到了我的答案,我犯了一個愚蠢的錯誤。無論如何,非常感謝你提供這樣一個很好的答案! –

相關問題