我正在编写PHP类,并且在定义范围方面遇到了相当大的麻烦。我已经在SO上阅读了很多关于这个概念的文章,但我似乎无法确定我的代码是什么问题。
class Logger {
private static $logger ;
private $res ;
private $file ;
private $mode ;
public static function getInstance() {
if (!self::$logger) $instance = new self() ;
self::$logger = $instance ;
return self::$logger ;
}
private function initializeLogger( ) {
$this->file = '/tmp/mydirectory/mylog.log' ;
$this->res = fopen($this->file, 'a') or exit("Can't open ".$this->file);
}
public function write( $message , $modeLevel ) {
if ( !is_resource($this->res )) {
$this->initializeLogger( ) ;
}
fwrite($this->res, "$message" . PHP_EOL);
}
public function close()
{
fclose(self::$logger);
}
}
$log = Logger::getInstance();
$log.write( "WOW, it's working!!" , 1 );
此代码在运行时产生: 在/var/www/myfile.php中调用未定义的函数write()
有关如何创建可以非静态方式引用但
的对象的任何建议答案 0 :(得分:3)
替换:
$log.write( "WOW, it's working!!" , 1 );
使用:
$log->write( "WOW, it's working!!" , 1 );
$log
是类Logger
的一个实例,write
是此类的一种方法。