如何在方法中将对象传递给函数

时间:2015-10-26 11:19:03

标签: php

我想跟随

class abc{

   public function abc(){

      someFunction(){
          now here I can not call bcg function like due to scope of function 
          function bcg(){
               $this->bcg();
         }

      }

   }

   public function bcg(){
     ...
   }
}

现在我的问题是如何将当前类的对象传递给类的方法中的函数?

2 个答案:

答案 0 :(得分:2)

您可以将当前对象传递给匿名函数/闭包,方法是将其作为参数传递给它:

// In an object method
$yourFunc = function ($object){
   $object->bcg();
}
$yourFunc($this);

如果您的功能是在课堂之外定义的,您也可以将其用作解决方案:

function myFunction($object) {
    $object->bcg();
}

class Foo {
    public function bgc() {
        // ...
    }
    public function doSomething() {
        myFunction($this);
    }
}

请注意,您的bcg功能将在公共范围内访问,因此protectedprivate功能将无效。

答案 1 :(得分:1)

你不能在类方法中创建一个函数。

这应该有效:

class abc {

    public function abc() {
        $this->bcg(); // You can all bcg() here now
    }
    public function bcg() {

    }
}