将函数插入变量

时间:2013-10-10 09:49:47

标签: php zend-framework2 zend-db

我正在学习Zend Framework 2,在http://framework.zend.com/manual/2.2/en/modules/zend.db.adapter.html的Zend \ Db文档中,他们有以下代码:

$qi = function($name) use ($adapter) { return $adapter->platform->quoteIdentifier($name);};
$fp = function($name) use ($adapter) { return $adapter->driver->formatParameterName($name); };

我从来没有见过这种创建函数的方法。

问题在于,当我将此代码添加到我的班级时,eclipse会抱怨

  sytax error: unexpected "function"

当我在我的网站上运行时,PHP抱怨

Parse error: syntax error, unexpected 'function' (T_FUNCTION)

使用php 5.4

所以..他们的文档中有错误吗?或者我在这里错过了什么?

感谢

更新

我的eclipse项目已设置为5.4版

我的网页界面php版本是5.5.1,为什么我仍然会收到这些错误?

3 个答案:

答案 0 :(得分:5)

不,那些是anonymous functions,而且代码完全有效。自5.3以来,PHP中存在匿名函数。如果您收到语法错误,则运行PHP 5.3或更高版本。

答案 1 :(得分:0)

这对我来说很好用:

<?
$adapter = 'y';
$qi = function($name) use ($adapter) { return $adapter->platform->quoteIdentifier($name);};
$fp = function($name) use ($adapter) { return $adapter->driver->formatParameterName($name); };
?>

PHP 5.4.9

旧的(<5.4)版本的php不支持这种匿名函数。

答案 2 :(得分:0)

第1行的错误是?你是用FTP上传的吗?

如果是这样,您的FTP就会将所有内容压缩成一行。

尝试将FTP客户端中的传输类型从自动更改为二进制,然后重新上传。