解析函数外声明的变量的错误
我在写一个简单的类,它将为我的站点创建一个简单的日志文件。出于某种原因,当我具备的功能之外可变FILE_PATH,我得到这个错误...解析函数外声明的变量的错误
Parse error: parse error, expecting `','' or `';''
有了这个代码..
class Logger {
public $file_path = SITE_ROOT.DS.'logs'.DS.'log.txt';
public static function log_action ($message="") {
if (file_exists($file_path)) {
file_put_contents($file_path, $message, FILE_APPEND);
} else {
return "could not write to log file";
}
}
但是当变量的函数内,这错误不会来。为什么是这样?
public static function log_action ($action, $message="") {
$file_path = SITE_ROOT.DS.'logs'.DS.'log.txt';
if (file_exists($file_path)) {
file_put_contents($file_path, $message, FILE_APPEND);
} else {
return "could not write to log file";
}
内部类,PHP代码可以运行外方法是有限的:
类成员[...]是通过使用公共的关键字之一,保护的定义 ,或私人, 后跟一个正常的变量声明。这个声明可能包含一个初始化,但这个初始化必须是一个常量 值 - 也就是说,它必须能够在编译时进行评估,并且 必须不依赖运行时信息才能评估。
因此,这是无效的:
public $file_path = SITE_ROOT.DS.'logs'.DS.'log.txt';
谢谢!那么当我想要在类中使用其他函数时,如何重用这个文件路径? – 2013-04-28 17:16:25
它通常会在构造函数中设置,但由于您打算在静态方法中使用它,因此这不是一个选项。你需要从类之外设置它(毕竟它是一个公共属性),或者让静态方法调用另一个静态方法来获取路径。 – 2013-04-28 17:19:37
不能使用的功能,定义类属性时运营商,如串联,等等。如果你想分配一个使用串联的值,那么请在你的类的构造函数中这样做 – 2013-04-28 17:08:29