这个 php 行有啥问题?
Posted
技术标签:
【中文标题】这个 php 行有啥问题?【英文标题】:What is wrong with this php line?这个 php 行有什么问题? 【发布时间】:2011-10-19 10:09:35 【问题描述】:var $foo = array('foo' => $bar);
我收到一个 UNEXPECTED T_VARIABLE 错误。创建数组时不能使用变量?
这个声明在一个类中,我正在运行 php v5.3.2
删除 var 时,我收到另一个错误 Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION
谢谢
【问题讨论】:
php.net/manual/en/language.variables.basics.php 这个声明在一个类里面... 【参考方案1】:尝试:
$foo = array('foo' => $bar);
请参阅此问题,了解您遇到问题的原因: What does PHP keyword 'var' do?
【讨论】:
【参考方案2】:关键字var
仅在类中声明变量(即实例变量)时使用,但即使这样也是 PHP4 语法,目前已被弃用。这会做你想做的事:
$foo = array('foo' => $bar);
【讨论】:
PHP 中没有 'var' 关键字,句号。变量有全局/受保护/私有/公共前缀,但没有“var”。 如果您使用的是足够新的 PHP 版本,我认为它实际上已被完全弃用。从 PHP 5.4 开始(如果我没记错的话),不要使用var
。
php.net/manual/en/language.oop5.properties.php - In versions of PHP from 5.0 to 5.1.3, the use of var was considered deprecated and would issue an E_STRICT warning, but since PHP 5.1.3 it is no longer deprecated and does not issue the warning.
... 请记住
Marc B:这是 PHP 以前版本中的关键字,这就是词法分析器选择 T_VARIABLE 的原因。【参考方案3】:
var
不是 PHP 语法...一个简单的
$foo = array('foo' => $bar);
足够了。
【讨论】:
@alex:您不能在类中声明“动态”变量。他们必须评估为常数。$var = array('a' => 'b')
会很好,因为这都是不变的。你在那里有$bar
,它不是恒定的,因此是错误的。如果你需要像这样在对象中动态分配一个变量,你必须在构造函数中进行。
是的。成员变量必须是完全恒定的。不允许可变部分。以上是关于这个 php 行有啥问题?的主要内容,如果未能解决你的问题,请参考以下文章