PHP面向对象中静态属性和静态方法讲解
静态方法
static public/protected/private function(){
}
普通方法,存放于类内,只有一份
静态方法,也是存放于类内,只有一份
区别在于:普通方法需要对象去调用,需要绑定$this
即普通方法必须要有对象,用对象调动
而静态方法,不属于哪个对象,因此不需要去绑定$this
即 静态方法,通过类名可以调用
*/
class Human{
public $name='小红';
static public function Cry(){
echo '555大哭';
}
public function eat() {
echo '吃饭吧';
}
public function hello() {
echo $this->name;
}
}
echo Human::Cry();
//echo Human::eat();
/*
从逻辑来理解,如果用类名静态调用非静态方法
比如:eat()
那么:$this 到底是指哪个对象???
因此直接报错:
Strict standards: Non-static method Human::eat() should not be called statically in D:\wamp\www\bbs2\class6.php on line 31
*/
/* 如上分享,其实非静态方法,是不能友类名静态调用的
但是,PHP中的面向对象检查的并不严格
只要该方法没有$this,就会转化静态方法来调用
因此PHP5.3之前的eat(),是可以调用的
但是,在PHP5.3的strict级别下,或者PHP5.4的默认级别都已经对
类名::非静态 方法做了提示 */
echo '<hr />';
//动访问静
$jun=new Human();
echo $jun->Cry();
/*
类-->访问->静态方法 可以
类-->访问->动态方法 不可以
对象-->访问-->动态方法 可以
对象-->访问->静态方法 可以
*/
Dcr163的博客
http://dcr163.cn/30.html(转载时请注明本文出处及文章链接)