2013-02-01 53 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