我在LAMP环境中创建了一个包含以下代码的文件test.class.php:
<?php
class MyClass
{
public var $variable;
};
$obj = new MyClass();
?>
当我跑步时:
php myclass.php
从命令行,我收到错误:
解析错误:语法错误,意外的T_STRING,在第5行的/path/html/_dev/classes/test.class.php中期待T_OLD_FUNCTION或T_FUNCTION或T_VAR或'}'
如果我通过浏览器访问同一个文件,我没有错误。有关可能发生的事情的任何建议吗?
答案 0 :(得分:4)
您不需要var
个关键字;你应该使用:
public $variable;
这是正确的PHP 5语法。
var
是PHP 4的补充,您已经使用过它:
var $variable;
但PHP 4中没有public
关键字 - 而public
(PHP 5)和var
(PHP 4)不能一起使用。
有关public
,var
和其他同类关键字的更多信息,请参阅PHP手册的此页面:Visibility
至于为什么您的代码在您的网络服务器运行时不会显示任何错误...在一种情况下,可能会导致错误无法显示的配置差异?
注意:CLI和PHP / Apache可以使用不同的配置文件 - 通常也可以。
作为旁注(它没有问题),你不需要在类定义的末尾加分号:你的代码应该是这样的:
class MyClass
{
public $variable;
}
$obj = new MyClass();
答案 1 :(得分:0)
确保您正在运行php5
的cli:
$ php -v
PHP 5.3.3 (cli) (built: Aug 22 2010 19:41:55)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
您可以使用以下命令检查您正在使用的php版本或位置:which php
。
正如其他人所说,摆脱这个var
。但它似乎不是问题。该错误报告private
是未知令牌。
答案 2 :(得分:0)
删除var
关键字,没有必要。
<?php
class MyClass
{
public $variable;
};
$obj = new MyClass();
?>
答案 3 :(得分:0)
public var $variable;
太多了。只需使用其中一个关键字。
答案 4 :(得分:0)
想出来。 PHP命令在我的环境中默认使用的PHP CLI版本是PHP 4.4.8。
我的主机还有一个PHP5命令设置为使用PHP 5.2.14。当我执行命令
时PHP5 myclass.php
一切正常。但是,我发布的代码最初产生了另一个错误。在
public var $variable
行,这是另一个Stack Overflow帖子的解决方案无效。我用
替换了它public $variable
并且能够通过该更改成功进行测试。
这个链接帮了很多忙 http://www.yiiframework.com/forum/index.php?/topic/4319-error-on-yiibase-php-on-line-55/