2013-02-01 55 views
-1

當我嘗試使用此代碼時,我面臨錯誤。無法訪問類中的包含文件功能

我的代碼:

require_once 'functions/general.functions.inc'; 

class AccessingNodes { 

    function getNodeId($parent_id){ 
     $node_id = $this->getNodeIdByParentId($parent_id); // This function is defined in general.functions.inc file 
     return $node_id; 
    } 

} 

我無法訪問的一個函數包含的文件。它給了我一個錯誤。

錯誤:

致命錯誤電話未定義的方法 AccessingNodes :: getNodeIdByParentId

的general.functions.inc由一些一項所定義。我不知道這裏缺少什麼。我在SO中得到了我以前的帖子的答案。據說,我們可以將.inc文件的函數作爲文件的自身函數。所以我使用$this運算符來調用函數。

任何人都請指導我解決這個問題。

+0

這可能是你正在使用$此 –

+0

刪除$這個 - >然後嘗試 –

+0

呼叫只'getNodeIdByParentId($ PARENT_ID);',因爲它不是你的類功能 – GBD

回答

2

.inc文件函數可以被視爲文件的自身函數,但不能作爲該類的自身函數。

刪除$這個和代碼應該工作。

2

您有誤解$this$this是對調用對象的引用。所以除非有一個課程擴展你的課程 - AccessingNodes和方法getNodeIdByParentId和你的方法getNodeId被包含在腳本中提到的類的實例調用,你將無法調用它。 (注:這是可怕的設計,因爲父類不應該知道任何關於子類)

所以看看那個文件裏面有什麼。

  1. 如果只定義了函數,就像函數一樣使用它。例如。

    function getParentIdByParentId($id) { } 
    
    class AccessingNodes { 
    
        function getNodeId($parent_id){ 
          $node_id = getNodeIdByParentId($parent_id); // This function is defined in general.functions.inc file 
          return $node_id; 
        } 
    } 
    
  2. 如果是一些類的靜態方法:

    class MyClass { 
        public static function getNodeIdByParentId($id) {} 
    } 
    
    class AccessingNodes { 
    
        function getNodeId($parent_id){ 
         $node_id = MyClass::getNodeIdByParentId($parent_id); // This function is defined in general.functions.inc file 
         return $node_id; 
        } 
    } 
    
  3. 如果有有方法getNodeIdByParentId創建它的實例,並調用然後該方法的類:

    class MyClass { 
        public function getNodeIdByParentId($id) {} 
    } 
    
    class AccessingNodes { 
    
        function getNodeId($parent_id){ 
         $obj = new MyClass; 
         $node_id = $obj->getNodeIdByParentId($parent_id); // This function is defined in general.functions.inc file 
         return $node_id; 
        } 
    } 
    

ps欲瞭解更多信息,請閱讀manual並看看OOP concepts

+0

非常感謝小巴幫我開車。我知道哎呀,我知道如何訪問類功能。在這種情況下,我只是被.inc文件弄糊塗了。非常感謝。 –

+0

@EdwinAlex不客氣。 – Leri