巅云智能建站平台搭建版(创业流派版)火爆上线,毕生受权!新增:文章智能收罗+全站真静态打包+都会分站+智能小法式+不法词过滤+H5自顺应+智能链词等功效功效概况
赞助文档Help

php面向工具全攻略 (十) final static const关头字的操纵

一佰互联网站建造(www.taishanly.com) 宣布日期 2020-05-01 19:06:15 阅读数: 144

14.final 关头字的操纵
这个关头字只能用来界说类和界说体例,不能操纵final 这个关头字来界说成员属性,因
为final 是常量的意义,咱们在PHP 里界说常量操纵的是define()函数,以是不能操纵final 来
界说成员属性。
操纵final 关头标记的类不能被担当;
代码片断
final class Person{
… …
}
class Student extends Person{
}
会呈现上面毛病:
Fatal error: Class Student may not inherit from final class (Person)
操纵final 关头标记的体例不能被子类笼盖,是终究版本;
代码片断
class Person{
final function say() {
}
}
class Student extends Person{
function say() {
}
}
会呈现上面毛病:
Fatal error: Cannot override final method Person::say()
15.static 和const 关头字的操纵
Static 关头字是在类中描写成员属性和成员体例是静态的;静态的成员益处在那边呢?
后面咱们申明了“Person”的人类,在“Person”这个类里若是咱们加上一个“人所属国度”
的属性,如许用“Person”这个类实例化出几百个或更多个实例工具,每一个工具外面就都
有“所属国度”的属性了,若是开辟的名目便是为中国人而开辟的,那末每一个工具外面就都
有一个国度的属性是“中国”别的的属性是差别的,若是咱们把“国度”的属性做成静态的
成员,如许国度的属性在内存中就只要一个,而让这几百个或更多的工具共用这一个属性,
static 成员能够或许或许限定外部的拜候,由于static 的成员是属于类的,是不属于任何工具实例,是
在类第一次被加载的时辰分派的空间,其余类是没法拜候的,只对类的实例同享,能必然程
度对类该成员构成掩护;
从内存的角度咱们来阐发一下,内存从逻辑上被分为四段,此中工具是放在“堆内存”里
面,工具的援用被放到了“栈内存”里,而静态成员则放到了“初始化静态段”,在类第一次
被加载的时辰放入的,能够或许或许让堆内存外面的每一个工具所同享,以下图;
=700) window.open("/upload/20090930223111418.gif");" src="http://files.jb51.net/upload/20090930223111418.gif" onload="if(this.width>"700")this.width="700";if(this.height>"700")this.height="700";" border=0> 
类的静态变量,很是近似全局变量,能够或许或许被一切类的实例同享,类的静态体例也是一样
的,近似于全局函数。
代码片断
复制代码 代码以下:
<?
class Person{
//上面是人的静态成员属性
public static $myCountry="中国";
// var $name; //人的名子
//这是人的静态成员体例
public static function say(){
echo "我是中国人<br>";
}
}
//输入静态属性
echo Person::$myCountry;
//拜候静态体例
Person::say();
//从头给静态属性赋值
Person::$myCountry="美国";
echo Person::$myCountry;
?>

由于静态成员是在类第一次加载的时辰就建立的,以是在类的外部不须要工具而操纵类
名便能够或许或许拜候的到静态的成员;上面说过,静态成员被这个类的每一个实例工具所同享,那末
咱们操纵工具可不能够或许或许拜候类中的静态成员呢?从上图中咱们能够或许或许看到,静态的成员不是在
每一个工具外部存在的,可是每一个工具都能够或许或许同享,以是咱们若是操纵工具拜候成员的话就会
呈现不这个属性界说,操纵工具拜候不到静态成员的,在别的的面向工具的说话中,比方
Java 是能够或许或许操纵工具的体例拜候静态成员的,若是PHP 中能够或许或许操纵工具拜候静态成员的话,
咱们也尽可能不要去操纵,由于静态的成员咱们在做名目标时辰目标便是操纵类名去拜候。
类外面的静态体例只能拜候类的静态的属性,在类外面的静态体例是不能拜候类的非静
态成员的,缘由很简略,咱们要想在本类的体例中拜候本类的别的成员,咱们须要操纵$this
这个援用,而$this 这个援用指针是代表挪用此体例的工具,咱们说了静态的体例是不必工具
挪用的,而是操纵类名来拜候,以是底子就不工具存在,也就不$this 这个援用了,不
了$this 这个援用就不能拜候类外面的非静态成员,又由于类外面的静态成员是能够或许或许不必工具
来拜候的,以是类外面的静态体例只能拜候类的静态的属性,即然$this 不存在,在静态体例
中访别的静态成员咱们操纵的是一个特别的类“self”;self 和$this 近似,只不过self 是代表
这个静态体例地点的类。以是在静态体例里,能够或许或许操纵这个体例地点的类的“类名”,也能够或许或许
操纵“self”来拜候别的静态成员,若是不特别环境的话,咱们凡是操纵后者,即“self::成
员属性”的体例。
代码片断
复制代码 代码以下:
<?
class Person{
//上面是人的静态成员属性
public static $myCountry="中国";
//这是人的静态成员体例, 经由进程self拜候别的静态成员
public static function say(){
echo "我是".self::$myCountry."<br>";
}
}
//拜候静态体例
Person::say();
?>

在非静态体例里可不能够或许或许拜候静态成员呢,固然也是能够或许或许的了,可是也不能操纵“$this”
援用也要操纵类名或是“self::成员属性的情势”。
const 是一个界说常量的关头字,在PHP 中界说常量操纵的是“define()”这个函数,但
是在类外面界说常量操纵的是“const”这个关头字,近似于C 中的#define 若是在法式中转变
了它的值,那末会呈现毛病,用“const”润色的成员属性的拜候体例和“static”润色的成员
拜候的体例差未几,也是操纵“类名”,在体例外面操纵“self”关头字。可是不必操纵“$”
标记,也不能操纵工具来拜候。
代码片断
复制代码 代码以下:
<?php
class MyClass{
//界说一个常量constant
const constant = "constant value";
function showConstant() {
echo self::constant . " "; //操纵self拜候,不要加”$”
}
}
echo MyClass::constant . " "; //操纵类名来拜候,也不加”$”
$class = new MyClass();
$class->showConstant();
// echo $class::constant; 是不许可的
一佰互联是天下着名建站品牌办事商,咱们有九年、网站建造、网页设想、php开辟和域名注册及假造主机办事经历,供给的办事更是天下着名。最近几年来还整合团队上风自立开辟了可视化多用户”“3.0平台版,拖拽排版网站建造设想,轻松完成pc站、手机微网站、小法式、APP一体化全网营销网站扶植 ,已胜利的为天下上百家收集公司供给自助建站平台搭建办事。

相干消息more

09
04月
站在5G风口的UI设想师,靠甚么手艺腾飞?

UI和设想这一行仿佛愈来愈难混了:进要懂手绘,退要明交互,以往一个界面的工作,现在都不够了。上一屏到下一屏之间的变更,若是做不到转场动效的完... >>概况

20
05月
搜索引擎优化排名教程_巅云建站

ta charset="UTF-8"> 搜索引擎优化排名教程_巅云建站 a:hover, a:focus,.post-like.acti... >>概况

25
04月
PHP设想形式之模板形式界说与用法详解

本文实例报告了PHP设想形式之模板形式界说与用法。分享给大师供大师参考,具体以下:模板形式筹办一个笼统类,将局部逻辑以具体体例和具体机关形... >>概况

24
03月
3个商城购物网站模板保举

分享 网站学会做了,但经常由于找不到都雅的网站模板而懊恼不已,特... >>概况

高端网站扶植

美工统筹SEO,为企业电子商务营销助力!

德律风:

023-85725751
建站

产物

域名注册 假造主机 云办事器 企业邮局
智能建站 APP打包 微站/小法式 创业平台
网站推行 媒体营销 智能收罗 AI机械人
400德律风 短信营销 店销机械人
私家定制 流派网站