太原做网站

网站维护托管

PHP面向对象的static关键字

static关键字声明一个属性或方法是和类相关的,而不是和类的某个特定的实例相关,因此,这类属性或方法也称为“类属性”或“类方法”。


static的属性,在内存中只有一份,为所有的实例共用。也就是说,在内存中即使有多个实例,静态的属性也只有一份。


static关键字可以用来修饰变量、方法。


通过static关键字定义的属性或方法(例如static $web),只能由当前类通过【self::$web】来访问,其他类和子类是无法访问的。


例如下面这个例子,通过public声明的变量$web,因为实例化子类对象有4个,所以它最后会输出4个结果:


class Config{

public $web;

function __construct(){

echo '<pre>';

$this->show();

}

public function show(){

if(empty($this->web)){

$this->web = include 'test_arry.php';

print_r($this->web);

}

}

}

$config = new Config();

$a = new Config();

$b = new Config();

$c = new Config();

但是以下代码使用static声明的变量,尽管有很多的实例化对象,但是最后的输出结果只有一个:


class Config{

static $web;

function __construct(){

echo '<pre>';

$this->show();

}

static function show(){

if(empty(self::$web)){

self::$web = include 'test_arry.php';

print_r(self::$web);

}

}

}

$config = new Config();

$a = new Config();

$b = new Config();

$c = new Config();

include引用的文件内容是以下代码:


return array(

'web_config'=>array(

'webname'=>'赵一鸣博客',

'weburl'=>'http://www.tyseoer.com'

),

'db_config'=>array(

'db_host'=>'localhost',

'db_name'=>'tyseoer',

'dv_pwd'=>'123456'

)

);

 


发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«   2020年10月   »
1234
567891011
12131415161718
19202122232425
262728293031
网站分类
搜索
最新留言
    文章归档
    友情链接