static关键字

       和其他一些面向对象的编程语言一样,不是所有的变量(方法)都要通过创建对象来调用,还可以通过给变量(方法)加上static关键字来直接调用。调用静态成员的格式为:
       关键字::静态成员
       关键字可以是如下两种
       self:在类内部调用静态成员时使用。
       静态成员所在的类名:在类外调用类内部的静态成员时使用。

       注意:在静态方法中,只能调用静态变量,而不能调用普通变量,但普通方法可以调用静态变量。
使用静态成员,除了可以不需要实例化对象,另一个作用就是在对象被销毁后,仍然保存被修改的静态数据,以便下次继续使用。这个概念比较抽象,下面来看一个实例。

       例如:首先声明一个静态变量$num,声明一个方法,在方法内部调用静态变量,然后给变量加1。一次实例化这个类的两个对象,并输出方法。可以发现两个对象中的方法返回的结果有了一点联系。直接使用类名输出静态变量,看看有什么效果,代码如下:
<?php

class Book
{
    static $num = 0;

    public function showMe()
    {
        echo "您是第" . self::$num . "访客";
        self::$num++;
    }
}

$book1 = new Book();
$book1->showMe();
echo "<br>";
$book2=new Book();
$book2->showMe();
echo "<br>";
echo "您是第".Book::$num."位访客";

如果将程序中的静态变量改为普通变量,如“private $num=0”结果就不一样了,读者可以尝试一下。


       说明:静态成员不需要实例化对象,当类第一次被加载时就已经分配了内存空间,所以直接调用静态成员的速度要快一些。但如果静态成员声明过多,空间一直被占用,反而会影响系统的功能。


你可能感兴趣的:(PHP,面向对象,关键字)