PHP范围问题或静态问题

时间:2012-11-23 00:11:34

标签: php static

我正在编写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()

有关如何创建可以非静态方式引用但

的对象的任何建议

1 个答案:

答案 0 :(得分:3)

替换:

$log.write( "WOW, it's working!!" , 1 );

使用:

$log->write( "WOW, it's working!!" , 1 );

$log是类Logger的一个实例,write是此类的一种方法。

文档:PHP classes and objects