php菜鸟问题

来源:百度知道 编辑:UC知道 时间:2024/05/08 03:07:15
class Book{ //Book类
static $num = 0; //声明一个静态变量$num,初值为0
public function showMe(){ //申明一个方法
echo '您是第'.self::$num.'位访客'; //输出静态变量
self::$num++; //将静态变量加1
//$this->num++; //注释上面一句 用这句为什么不行?
}
}

$this 是用于“当此方法不是静态类时,引用自身属性或方法”的方式。

self:: 当此方法为静态方法时,所使用的所有属性或方法,均必须使用这个做开通,不能用$this。

比如说

class a{
public $a='hello';
function a(){
echo $this->a; //显示hello
self::$a;//显示错误,因为这个方法不是静态的,自然不能用静态的变量申明符。
}
static function b(){
echo self::$a;//显示hello,因为这是一个静态的。
echo $this->a;//显示失败。
}
}

echo a::b();//因为B方法是静态的,所以不需要生成对象即可使用。

$pbj = new a();
echo $pbj->a();

//因为a不是静态的所以必须先申明对象。

普通方法访问静态属性只能通过self::来访问。如果改成$this会报错。
静态方法中访问普通方法静态属性只能通过self::来访问。如果改成$this会报错。
静态方法中访问普通属性只能通过self::来访问。如果改成$this会报错。
要声明静态属性,将关键字 static 放在可见度修饰符后面,直接位于属性变量前面。
静态方法是通过类而不是通过对象调用的
需要使用静态方法有两个重要原因。首先,实用程序操作可能不需要对象实例来做它的工作。通过声明为静态,为客户机代码节省了创建对象的工作量。第二,静态方法是全局可用的。这意味着可以设置一个所有对象实例都可以访问的值,而且使得静态方法成为共享系统上关键数据的好办法。
尽管静态属性通常被声明为 private 来防止别人干预,但有一种方法可以创建只读静态范围的属性,即声明常量。与全局属性一样,类常量一旦定义就不可更改。它用于状态标志和进程生命周期中不发生更改的其他东西,比如 pi 或非洲的所有国家。

因为num是