1

有谁知道 jquery 函数和匿名函数是如何定义的?我正在尝试在 php 中创建一个小类,以与 jquery 相同的方式使用。例如:

$('.blabla').click(function()
{
   console.log($(this).attr('id');
});

在 php 中,该类将如何做到这一点?

$object->click(function()
{
   var_dump($this->attr('id');
});

这可能吗?我试图理解匿名函数,这样我就可以知道何时真正使用它。

4

2 回答 2

1

要调用您的方法作为参数接收的函数,应该是这样的:

function click($callback) {
    // Do stuff...
    $callback();
    // Do more stuff...
}

PHP 没有任何类似于 Javascript 的特殊变量的东西this$this只能在类方法中使用,不能在其他函数中使用。如果您希望回调可以访问该变量,则应将其作为显式参数传递。

于 2013-10-05T08:54:33.307 回答
0

是的,您可以在 php 5.3 或更高版本中,您可以在此处阅读文档:http: //php.net/manual/en/functions.anonymous.php

它的工作方式与 JavaScript 不太一样。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 中仍然是一种新的东西。

于 2013-10-05T08:55:31.943 回答