2013-10-10 80 views
1

我学习Zend框架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); }; 

我从来没有见过的方式来创建函数的代码。

的问题是,当我将此代码添加到我的课,日食带

sytax error: unexpected "function" 

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

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

使用PHP 5.4

so ..他们的文档中是否有错误?或者我在这里错过了什么?

感谢

更新

我的Eclipse项目设置为版本5.4

我的web界面PHP版本5.5.1是,那么为什么我仍然得到这些错误?

+2

它们是[匿名函数](http://php.net/manual/en/functions.anonymous.php)(也被称为**闭包**) - 它们不应该在PHP 5.4中引发任何错误... – naththedeveloper

+0

Eclipse可能会抱怨,你的实际网络服务器呢?语法是100%有效 – Sam

+0

也许你在*你的*代码中有错误?手册中的代码很好。 – deceze

回答

5

不是,那些是anonymous functions,并且该代码是完全有效的。从5.3开始,PHP中存在匿名函数。如果你收到语法错误,你是而不是运行PHP 5.3或更高版本。

0

也能正常工作对我来说:

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

PHP PHP 5.4.9的

以上(< 5.4)版本不支持这种匿名函数。

+0

我检查了phpinfo(),我在使用版本5.5.1 – ufk

+0

也许eclipse内部的php分析器只能识别<= 5.3 PHP的sytax –

0

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

如果是这样的话,你的FTP将所有东西压缩成一行。

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