Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何访问PHP OOP中的函数_Php_Oop - Fatal编程技术网

如何访问PHP OOP中的函数

如何访问PHP OOP中的函数,php,oop,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($va

要从函数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;
    }


}
试试这个:

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

innerOne($this);
试试这个:

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

innerOne($this);

此函数仅在该范围内定义。因此,您不能在上述范围之外访问它。这里有一些技巧,但我不会推荐任何技巧。

此函数仅在该范围内定义。因此,您不能在上述范围之外访问它。这里有一些技巧,但我不会推荐任何。innerOne实际上是一个全局函数

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

class myClass  {

    static function one(){

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


    }
}

myClass::one();

innerOne();
发出“布加!”。必须先调用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");

innerOne
实际上是一个全局函数

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

class myClass  {

    static function one(){

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


    }
}

myClass::one();

innerOne();
发出“布加!”。必须先调用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分钟才能接受这个答案”是一个非常棒的信息——不是每天你都能这么快得到答案。祝雅各布生日快乐!谢谢你,伙计!我用了你的例子,有点跳出框框思考,并且能够解决它!如果有人想知道的话,可以在我的原始帖子中发布我的解决方案。谢谢!当然,在我写评论的时候我不能接受。“你必须等2分钟才能接受这个答案”是一个非常棒的信息——不是每天你都能这么快得到答案。祝雅各布生日快乐!不是真的。innerOne在定义之后是一个全局函数。不是真的。innerOne在定义之后是一个全局函数。