php 类中的静态属性与静态方法->static

1、php类中,假设所有的属性方法的可见性为public,那么在外部访问类的方法或属性时,都必须通过对象【类的实例化过程】来调用。

eg:

class Log
{
    public $root = DIRECTORY_SEPARATOR;
    public $logPath = '/data/app/www/test-realtime.monitoring.c.kunlun.com/log';
    public $defaultDir = 'default';
    
    public function writeLog($logName, $logType, $data, $newDir = FALSE)
    {
        $fileName = '';
        
        if (!file_exists($this->logPath))
        {
            mkdir($this->logPath, 0777);
        }
        
        if ($newDir !== FALSE)
        {
            @mkdir($this->logPath.$this->root.$newDir, 0777);
            $fileName = $this->logPath.$this->root.$newDir.$this->root.date('Y-m-d', time()).'_'.$logName.'_'.$logType.'.log';
        }
        else
        {
            @mkdir($this->logPath.$this->root.$this->defaultDir, 0777);
            $fileName = $this->logPath.$this->root.$this->defaultDir.$this->root.date('Y-m-d', time()).'_'.$logName.'_'.$logType.'.log';
        }
        
        file_put_contents($fileName, date('Y-m-d H:i:s').' '.$data."\n", FILE_APPEND);
    }
}

类的实例化对象的过程:$logObj = new Log();

访问类中的方法:$logObj->writeLog($param1, $param2, $param3, $param4);

访问类中的属性:echo $logObj->root;

2、如果类中的属性前被static关键字修饰时,就不能通过对象来访问被static修饰的属性,但如果是类中的方法static修饰时则即可以通过对象也可以通过类名::方法名的方式来进行访问。

3、如果类中的方法static修饰则,方法中不能用$this,$this指的是类的实例化对象,由于静态方法不用通过对象就可以调用,所以伪变量$this不可用。


你可能感兴趣的:(PHP,Date,function,File,Class)