php static与self,PHP5.3新特性static与self区别
很多人都说,PHP 简单,入门门槛较低,但是要学精通确很难。随着 PHP 不断的发展,新特性不断的增加,同时又得兼容老版本 PHP4 的一写语法特征,初学者在学习 PHP 时,显然就不再那么容易了。特别是 PHP 的面向对象(OOP)有很多自身独特的功能,写法上为了兼容老版本,本身就比较混乱;另外一点,PHP 的 OOP 是 PHP4 以后才有的,它出生只是为了个人主页,这导致 PHP 在面向对象方面群龙无首,不同的框架在各方面写法都不一致,这点学起来比其他语言更麻烦。
PHP 5.3 以后 static 关键词加上了一个 Late Static Bindings 后期静态绑定功能,很好的弥补了 self 和 __CLASS__ 的局限性,并且能够很好的处理静态绑定的层级关系。摘自 PHP 官网:As of PHP 5.3.0, PHP implements a feature called late static bindings which can be used to reference the called class in a context of static inheritance. 该功能相当于 get_class($this); 。如下代码示例:<?php
class A {
public static function who() {
echo __CLASS__;
}
public static function test() {
static::who(); // Here comes Late Static Bindings
}
}
class B extends A {
public static function who() {
echo __CLASS__;
}
}
B::test(); // output B
?>
上面的例子是后期静态绑定中最简单的一个,static 后期静态绑定会改变方法的域,同时在遇到了 self,parent 关键词时会向上一级传递调用信息。详细参考:http://php.net/manual/en/language.oop5.late-static-bindings.php。
PHP 5.3 以后除了后期绑定功能,在静态属性和方法的访问上支持使用变量加上双冒号操作符去访问静态成员。如下代码示例:<?php
class Foo {
public static function aStaticMethod() {
// ...
}
}
Foo::aStaticMethod();
$classname = 'Foo';
$classname::aStaticMethod(); // As of PHP 5.3.0
?>
上面的例子在 PHP 官网也有详细描述,参考链接:http://php.net/manual/en/language.oop5.static.php。
php static与self,PHP5.3新特性static与self区别相关推荐
- PHP5.3, PHP5.4, PHP5.5新特性
因为用到PHP新版本,一些新特性必须要了解,且有些可以在开发时就使用,如果不使用,那么何必升级PHP版本呢,显得有些得不偿失了! 所以整理了一下 一些特性,有可能不全,待添加 PHP 5.3中的新特性 ...
- [转] php5.3 PHP5.4 PHP5.5 新特性/使用PHP5.5要注意的
因为用到PHP新版本,一些新特性必须要了解,且有些可以在开发时就使用,如果不使用,那么何必升级PHP版本呢,显得有些得不偿失了! 所以整理了一下 一些特性,有可能不全,待添加 PHP 5.3中的新特性 ...
- PHP7相对于PHP5的新特性,学习猿地-整理PHP5.5 ~ PHP7.2 新特性
PHP5.5 ~ PHP7.2 新特性整理 一.从PHP 5.5.x 移植到 PHP 5.6.x 使用表达式定义常量 在之前的 PHP 版本中, 必须使用静态值来定义常量,声明属性以及指定函数参数默认 ...
- php 5.6 新特性,PHP5.6新特性介绍
本文将介绍这些特性,并讨论它们可以给开发者带来哪些好处. 常量标量表达式(Constant scalar expressions) 在常量.属性声明和函数参数默认值声明时,以前版本只允许常量值,PHP ...
- PHP5.4新特性(转)
PHP5.4正式前两天发布了,之前有看了一些PHP5.4主要特性相关文章,因此在这里小结一下. 其中好几点更新是由Laruence贡献的!本文部分内容也是源自Laruence的博客. 1. Buid- ...
- php phar包require报错,被遗忘的PHP5.3新特性——Phar
看样子phar应该是山寨jar的吧,不过方便的确是方便许多.使用phar打包PHP代码的话,就可以直接在网上下载phar包,然后像这样直接运行他! $ php foo.phar 我在本地自己做了个测试 ...
- PHP 5.3-5.5 新特性
PHP5.3, PHP5.4, PHP5.5新特性 因为用到PHP新版本,一些新特性必须要了解,且有些可以在开发时就使用,如果不使用,那么何必升级PHP版本呢,显得有些得不偿失了! 所以整理了一下 一 ...
- C# 3.0/3.5语法新特性示例汇总[转]
//作者:杨卫国 //时间:2008年2月21日 //说明:C#语法新特型示例 using System; using System.Collections.Generic; using System ...
- php yield 个人小解_PHP5.5新特性之yield理解与用法实例分析
本文实例讲述了PHP5.5新特性之yield理解与用法.分享给大家供大家参考,具体如下: yield生成器是php5.5之后出现的,yield提供了一种更容易的方法来实现简单的迭代对象,相比较定义类实 ...
最新文章
- Docker的镜像导出与导入与拷贝
- 使用WinSetupFromUSB来U盘安装windowsXP(不使用win PE系统)
- mysql galera 下载_Mysql-Galera Cluster
- matlab课程设计图像处理,MATLAB课程设计--GUI图像处理
- anaconda和python的区别_anaconda和python区别
- 第一课 矩阵的行图像与列图像(麻省理工公开课:线性代数)【转载】
- 责任链(Chain of Responsibility)模式
- ChIP-Seq,MeRIP-seq峰(peak),eccDNA等染色体分布可视化
- java init是什么
- java知识点ppt背景图片_Java 给 PowerPoint 文档添加背景颜色和背景图片
- 戴尔云客户端:三大发力点实现高速增长
- Acer 4750 安装黑苹果_傻瓜式黑苹果安装神器
- Win10 清除 PowerShell 命令行历史记录的方法
- 基于ESB权限初始化流程开发总结
- 【ReactJs学习笔记总目录】
- 2022谈谈手机充电头/快充头/电源适配器
- 上亿会员 为b站会员购众筹项目打下消费基础
- 如何制作调查问卷、问卷报告
- 【数据结构】带你细致理解十大排序(附源码)
- 载波 、基带信号、调制波、调频信号