相关疑难解决方法(0)

如何调用一个类变量的闭包?

class MyClass {
  var $lambda;
  function __construct() {
    $this->lambda = function() {echo 'hello world';};
    // no errors here, so I assume that this is legal
  }
}

$myInstance = new MyClass();
$myInstance->lambda();
//Fatal error: Call to undefined method MyClass::lambda()
Run Code Online (Sandbox Code Playgroud)

那么到达类变量的正确语法是什么?

php lambda closures anonymous-function

75
推荐指数
1
解决办法
2万
查看次数

在PHP中动态创建实例方法

我希望能够在类的构造函数中动态创建实例方法,如下所示:

class Foo{
   function __construct() {
      $code = 'print hi;';
      $sayHi = create_function( '', $code);
      print "$sayHi"; //prints lambda_2
      print $sayHi(); // prints 'hi'
      $this->sayHi = $sayHi; 
    }
}

$f = new Foo;
$f->sayHi(); //Fatal error: Call to undefined method Foo::sayHi() in /export/home/web/private/htdocs/staff/cohenaa/dev-drupal-2/sites/all/modules/devel/devel.module(1086) : eval()'d code on line 12 
Run Code Online (Sandbox Code Playgroud)

问题似乎是lambda_2函数对象没有在构造函数中绑定到$ this.

任何帮助表示赞赏.

php oop dynamic

8
推荐指数
1
解决办法
8014
查看次数

如何调用php中不存在的类方法?

我只想创建像getFieldname()magento 中一样的函数。

例如:

在 Magento 中

getId()ID- 返回字段值

getName()Name- 返回字段值

我怎样才能创建这样的功能?在这种情况下请帮助我..

我想做的就像下面的代码一样,

Class Called{
    $list=array();
    function __construct() {
        
        $this->list["name"]="vivek";
        $this->list["id"]="1";
    }
    function get(){
        echo $this->list[$fieldname];
    }

}

$instance=new Called();

$instance->getId();
$instance->getName();
Run Code Online (Sandbox Code Playgroud)

php oop overriding magento magic-methods

3
推荐指数
1
解决办法
2733
查看次数