解析函数外声明的变量的错误

问题描述:

我在写一个简单的类,它将为我的站点创建一个简单的日志文件。出于某种原因,当我具备的功能之外可变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"; 
    } 
+4

不能使用的功能,定义类属性时运营商,如串联,等等。如果你想分配一个使用串联的值,那么请在你的类的构造函数中这样做 – 2013-04-28 17:08:29

内部类,PHP代码可以运行方法是有限的:

类成员[...]是通过使用公共的关键字之一,保护的定义 ,或私人, 后跟一个正常的变量声明。这个声明可能包含一个初始化,但这个初始化必须是一个常量 值 - 也就是说,它必须能够在编译时进行评估,并且 必须不依赖运行时信息才能评估

Properties

因此,这是无效的:

public $file_path = SITE_ROOT.DS.'logs'.DS.'log.txt'; 
+0

谢谢!那么当我想要在类中使用其他函数时,如何重用这个文件路径? – 2013-04-28 17:16:25

+1

它通常会在构造函数中设置,但由于您打算在静态方法中使用它,因此这不是一个选项。你需要从类之外设置它(毕竟它是一个公共属性),或者让静态方法调用另一个静态方法来获取路径。 – 2013-04-28 17:19:37