有谁知道jquery函数和匿名函数是如何定义的? 我正在尝试在PHP中创建一个小类,以与jquery相同的方式使用。例如:
$('.blabla').click(function()
{
console.log($(this).attr('id');
});
在 PHP 中,类会如何做到这一点?
$object->click(function()
{
var_dump($this->attr('id');
});
这可能吗? 我试图理解匿名函数,以便我知道何时真正使用它。
要调用方法作为参数接收的函数,它将如下所示:
function click($callback) {
// Do stuff...
$callback();
// Do more stuff...
}
PHP没有任何类似于Javascript的特殊变量this
。 $this
只能在类方法中使用,不能用于其他函数。如果希望回调有权访问该变量,则应将其作为显式参数传递。
是的,你可以在 php 5.3 或更高版本中阅读文档:http://php.net/manual/en/functions.anonymous.php
它不像 JavaScript tough那样工作。JavaScript是一种原型语言,php不是。
你可以在 JavaScript 中做到这一点:
var value = 'foo';
object.doSomething(function () {
console.log(value);
});
你可以这样做,因为JavaScript函数有对它的创建者的引用。在 php 中你不能。该值将超出范围。
除此之外,它的工作原理有点相似。例如,如果要对数组或其他结构进行动态迭代。
function iterateOverArray($array, $function) {
foreach ($array as $key => $value) {
$function($key, $value);
}
}
该函数允许您迭代数组并指定自己的操作。例如:
$array = array('foo', 'bar', 'FOBAR');
iterateOverArray($array, function ($key, $value) {
echo $key . ' => ' . $value;
});
这对于修改复杂结构非常有用。但这是我在 php 中使用匿名函数的唯一情况。但也许那是因为它在 php 中仍然是新的。