3

在 Javascript 中有call()and ,那是部分的,但在 PHP 中apply()解析为call_user_func()and 。call_user_func_array()

现在,这里的区别在于我们可以传递一个变量,call()并在函数范围内apply()使用。this

我可以用 PHP 实现这样的目标吗?

更新:

在 Javascript 中:

var x = function(passed)
{
    return { dis : this, passd : passed };
};

console.log(x(44)); // window, 44

console.log(x.call(25, 44)); // 25, 44

.call()函数范围内的第一个参数,变为this.

4

3 回答 3

3

您可以尝试通过引用传递它:http: //php.net/manual/en/language.references.pass.php

function Example (&$obj) {
    $obj->callFunction();
}
于 2012-05-15T13:14:56.823 回答
3

来自回调的PHP 手册

实例化对象的方法作为数组传递,该数组包含索引 0 处的对象和索引 1 处的方法名称。

下面的例子:

// Type 3: Object method call
$obj = new MyClass();
call_user_func(array($obj, 'myCallbackMethod'));
于 2012-05-15T13:20:26.507 回答
2

从 PHP5.4 开始,可以将对象绑定到充当$this.

参考: http: //lv.php.net/manual/en/closure.bindto.php

代码:

<?php

$object = new StdClass;

$closure = function($a)
{
    $this->a = $a;

    return $this;
};

// Here, we bind it.
$closure = $closure->bindTo($object);

// Tests.
$out = $closure('this is "a"')->a;

var_dump($object, $out);

瞧!完全$this支持 PHP。不过,它只适用于闭包。

于 2013-10-24T06:57:47.220 回答