如何在PHP OOP中访问函数

时间:2010-05-23 18:03:32

标签: php oop

从我的函数innerOne中调用$ this-> two()需要做什么?这可能与PHP OOP有关吗?

这是我收到的错误:

Fatal error: Using $this when not in object context

以下是我的代码的外观:

class myClass  {

    function one(){

        function innerOne() {
            // Some code
            $this->two($var1, $var2);
        }

        // Some code

        innerOne();

    }

    function two($var1, $var2) {
    // Does magic with passed variables
        return $var1 . $var2;
    }


}

3 个答案:

答案 0 :(得分:2)

试试这个:

function innerOne($t) {
  //some code...
  $t->two($var1, $var2);
}

innerOne($this);

答案 1 :(得分:2)

innerOne实际上是一个全局函数。

你在方法中定义它的事实并不重要,它在全局函数表中。参见:

class myClass  {

    static function one(){

        function innerOne() {
            // Some code
            echo "buga!";
        }


    }
}

myClass::one();

innerOne();

给出了“buga!”。您必须先调用one()才能定义函数。

你想要的是这个:

class myClass  {

    function one($var1, $var2){
        return $this->innerOne($var1, $var2);
    }

    private function innerOne($var1, $var2) {
        return $this->two($var1, $var2);
    }

    function two($var1, $var2) {
    // Does magic with passed variables
        return $var1 . $var2;
    }


}

$var = new myClass();
echo $var->one("bu","ga");

答案 2 :(得分:1)

此功能仅在该范围内定义。所以你不能在所述范围之外访问它。周围有一些技巧,但不是我要推荐的任何技巧。