时间:2021-07-01 10:21:17 帮助过:24人阅读
本篇文章介绍的内容是PHP面向对象中的内容,123图解静态属性与静态方法,现在分享给大家,有需要的朋友可以参考一下
/*
在属性,和方法前
加static 修饰,这种称为静态属性/静态方法.
静态属性
静态属性存放在类空间中
1、类声明完毕,该属性就已存在,不需要依赖于对象而访问.
2、类在内存中只有一个,因此静态属性也只有一个.
*/
class Human { static public $head = 1; public function changeHead() { Human::$head = 9; } public function getHead() { return Human::$head; } }echo Human::$head; //1// 静态属性的访问方法echo '<br >';// 静态属性只有一个,为所有的对象的共享.$m1 = new Human();$m1->changeHead();$m2 = new Human();$m3 = new Human();echo $m2->getHead(),'<br >'; //9echo $m3->getHead(),'<br >'; //9
/*
静态方法
普通方法,存放于类内的,只有1份
静态方法,也是存放于类内的,只有1份
区别在于:
普通方法需要对象去调动,需要绑定$this
即,普通方法,必须要有对象,且用对象调动
而静态方法,不属于哪个对象,属于类,因此不需要去绑定$this.
即,静态方法,通过类名就可以调动.
*/
class Human2 { public $name = '张三'; static public function cry() { echo '5555'; } public function eat() { echo '吃饭'; } public function intro() { echo $this->name; } }// 此时一个对象都没有Human2::cry();// 下面这个eat是非静态方法,应由对象来调用Human2::eat();/* 报错提示: Strict standards: Non-static method Human2::eat() should not be called statically */echo '<br >';//Human2::intro();/* 直接报错: Fatal error: Using $this when not in object context */
/*
总结:
如上分析,其实非静态方法,是不能由类名静态调用的.
*/
$lisi = new Human2();$lisi->cry(); //5555
/*
类->访问->静态方法 可以
类->动态方法 方法内没有this的情况下,严重不支持.逻辑上解释不通.
对象->访问动态方法 可以
对象->静态方法 可以
*/
相关推荐:
php面向对象之继承、多态、封装简介
php面向对象设计原则概述
以上就是PHP面向对象笔记 —— 123 图解静态属性与静态方法 的详细内容,更多请关注Gxl网其它相关文章!