将$ this传递给函数

时间:2012-05-15 13:10:14

标签: php oop

在Javascript中有call()apply(),部分地,但在PHP中解析为call_user_func()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

3 个答案:

答案 0 :(得分:3)

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

function Example (&$obj) {
    $obj->callFunction();
}

答案 1 :(得分:3)

来自PHP manual for Callbacks

  

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

以下示例:

// Type 3: Object method call
$obj = new MyClass();
call_user_func(array($obj, 'myCallbackMethod'));

答案 2 :(得分: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);

瞧! PHP中的完整$this支持。但是,它只适用于闭包。