2012-11-23 78 views
1

我正在写一个PHP类,并且在定义范围时遇到相当大的麻烦。我已经阅读了很多关于这个概念的文章,但我似乎无法确定我的代码有什么问题。PHP范围问题或静态问题

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

上如何创建可以在非被引用的对象的任何建议静态的方式,但

回答

3

替换:

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

有:

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

$logLogger类的一个实例,而write是这个类的一个方法。

文档:PHP classes and objects

+1

是的,它不是Javascript! +1投票 – SaidbakR

+0

呃...谢谢。我讨厌盯着代码这么久,而没有看到它。 – NEW2WEB