本文指标:
一、理解static的界说以及作用
二、把握static的用法以及特性
咱们学习一个常识,能够依据3w1h的思绪来学习,略微简略的引见一下3w1h
3w1h即
● what(是甚么)
● why(为何应用它,它有甚么作用)
● where(应用场景)
● how(详细怎样应用)
(一)、static要害字的界说(what)
一、被static润饰的属性或许办法,咱们称之为类的动态成员
(二)、static要害字的作用(why)
一、让类的一切实例都能同享某个属性或许办法
(三)、static应用场景(where)
一、当心愿某个办法或许属功能被一切实例同享的时分,能够思考static
(四)、static的应用详解(how)
总结:
一、动态属性的界说 ,间接正在属性界说前加static 比方 static public $name ;
二、动态属性不克不及用类的实例去猎取,而是经过如下形式猎取:
● 类名::$属性称号
● 正在类的外部,能够经过self::$属性称号
三、动态办法的界说,间接正在办法界说前加static 比方static public function Hello(){ }
四、动态办法不克不及用类的实例去猎取,而是经过如下形式猎取:
● 类名::办法称号
● 正在类的外部,能够经过self::办法称号
五、正在php中,不克不及用static润饰类,只能润饰属性或许办法
六、动态办法外部不克不及挪用非动态属性,只能挪用动态属性
七、动态办法外部不克不及挪用非动态办法,只能挪用动态办法
八、非动态办法外部,既能够挪用非动态属性,也能够挪用动态属性
九、非动态办法外部,既能够挪用非动态办法,也能够挪用动态办法
一切的总结,都是理论患上来的,那末接上去,咱们用实际代码来演示下面的每一一条总结,看看他们究竟是否正确
(四)、详细代码
案例一:
理论指标:
一、动态属性的界说 ,间接正在属性界说前加static 比方 static public $name ;
二、动态属性不克不及用类的实例去猎取,而是经过如下形式猎取:
● 类名::$属性称号
● 正在类的外部,能够经过self::$属性称号
<?php class Human{ static public $name = "人类";//动态属性的界说 public function say(){ echo "self::name = ".self::$name ."<br/>"; } } //输入动态属性 echo "称号为:".Human::$name."<br/>"; $human = new Human(); $human->say(); ?>
运转后果为:
案例二:
理论指标:
一、动态办法的界说,间接正在办法界说前加static 比方static public function Hello(){ }
二、动态办法不克不及用类的实例去猎取,而是经过如下形式猎取:
● 类名::办法称号
● 正在类的外部,能够经过self::办法称号
<?php class Human{ public function __construct(){ self::staticFun1(); } static public function staticFun1(){ echo "我是动态办法<br/>"; } } //输入动态办法 Human::staticFun1(); //运转结构函数,看能否能够被失常挪用 $human = new Human(); ?>
运转后果为:
案例三:
理论指标:
一、正在php中,不克不及用static润饰类,只能润饰属性或许办法
<?php static class Human{ } ?>
运转后果为:
Parse error: syntax error, unexpected 'class' (T_CLASS), expecting :: (T_PAAMAYIM_NEKUDOTAYIM) in D:\E-class\class-code\classing\index.php on line 2
案例四:
理论指标:
一、 动态办法外部不克不及挪用非动态属性,只能挪用动态属性
<?php class Human{ static public $staticName = "动态属性-人类"; public $co妹妹onName="非动态属性-人类"; //界说动态办法 动态办法挪用非动态属性 static public function staticFun1(){ echo $this->co妹妹onName."<br/>"; } //测试动态办法挪用动态属性 static public function staticFun2(){ echo self::$staticName."<br/>"; } } Human::staticFun2();//OK Human::staticFun1();//not OK ?>
运转后果为:
动态属性-人类
Fatal error: Uncaught Error: Using $this when not in object context in D:\E-class\class-code\classing\index.php:8 Stack trace: #0 D:\E-class\class-code\classing\index.php(18): Human::staticFun1() #1 {main} thrown in D:\E-class\class-code\classing\index.php on line 8
案例五:
理论指标:
一、 动态办法外部不克不及挪用非动态办法,只能挪用动态办法
<?php class Human{ //界说动态办法 //测试动态办法挪用 动态办法 static public function staticFun1(){ self::staticFun2(); $this->co妹妹onFun1(); } static public function staticFun2(){ echo "我是动态办法2<br/>"; } //一般办法 public function co妹妹onFun1(){ echo "我是一般办法1<br/>"; } } Human::staticFun1(); ?>
运转后果为:
我是动态办法2
Fatal error: Uncaught Error: Using $this when not in object context in D:\E-class\class-code\classing\index.php:8 Stack trace: #0 D:\E-class\class-code\classing\index.php(20): Human::staticFun1() #1 {main} thrown in D:\E-class\class-code\classing\index.php on line 8
案例六:
理论指标:
一、非动态办法外部,既能够挪用非动态属性也能够挪用动态属性
<?php class Human{ static public $staticName = "动态属性-人类"; public $name = "非动态属性-人类"; ///一般办法 public function co妹妹onFun1(){ echo self::$staticName."<br/>"; echo $this->name."<br/>"; } } $human = new Human(); $human->co妹妹onFun1(); ?>
运转后果为:
动态属性-人类
非动态属性-人类
案例七:
理论指标:
一、非动态办法外部,既能够挪用非动态办法也能够挪用动态办法
<?php class Human{ ///一般办法 public function co妹妹onFun1(){ self::staticFun1(); $this->co妹妹onFun2(); } //测试动态办法挪用 动态办法 static public function staticFun1(){ echo "我是动态办法1<br/>"; } public function co妹妹onFun2(){ echo "我是一般办法2<br/>"; } } $human = new Human(); $human->co妹妹onFun1(); ?>
运转后果为:
我是动态办法1
我是一般办法2
(五)、学致使用
成绩:
一、一切的NBA球员都有一个独特的同盟总裁,David Stern(年夜卫*斯特恩)
二、总裁换成为了“Adam Silver” 怎样办?
各人本人考虑一下,再看前面的后果
.........................
谜底揭晓:
思绪剖析:
一、“换”是一个动词,换总裁,以是是一个办法,而总裁是一个数据,以是是一个属性
二、换总裁要达到一个目的就是,换了当前,这个工具依然要被其余一切的NBA球员工具应用到
三、既然 总裁 (属性) 要被一切的NBA球员工具 同享,那末咱们就能够连系static的作用,将总裁属性界说为动态属性
四、以是依据综上所述,大略的思绪就是界说一个NBA球员类,而后类外面次要有动态属性“总裁”以及一个 换总裁 的办法
详细代码以下:
<?php //Nba球员类 class NbaPlayer{ public $name = ""; //结构函数初始化工具 public function __construct($name){ $this->name = $name; } //总裁 static public $president = "David Stern"; //换总裁办法 public function changePresident($name){ self::$president = $name; } } $jordon = new NbaPlayer("乔丹"); $kebo = new NbaPlayer("科比"); echo "输入他们今朝独特的总裁,总裁为:".NbaPlayer::$president."<br/>"; echo "如今把乔丹总裁换成Adam Silver<br/>"; $jordon->changePresident("Adam Silver"); echo "输入科比的总裁能否也以及乔丹的同样,科比总裁为:".NbaPlayer::$president."<br/>"; ?>
运转后果为:
输入他们今朝独特的总裁,总裁为:David Stern
如今把乔丹总裁换成Adam Silver
输入科比的总裁能否也以及乔丹的同样,科比总裁为:Adam Silver
总结:
一、本文次要是讲了static要害字的界说以及特性
心愿本文能给各人带来肯定的协助,谢谢!!!
以上就是PHP中面向工具之Static要害字详解(代码实例)的具体内容,更多请存眷资源魔其它相干文章!
标签: php开发教程 php开发资料 php开发自学 面向对象 Static
抱歉,评论功能暂时关闭!