PHP延迟静态绑定示例分享
没怎么用过这个新特性,其实也不算新啦,试试吧,现在静态类的继承很方便了
<?php class A { protected static $def = '123456'; public static function test() { echo get_class(new static); } public static function test2() { echo static::$def; } } class B extends A { protected static $def = '456789'; } class C extends A { protected static $def = 'abcdef'; } echo B::test(); echo '<br>'; echo C::test(); echo '<br>'; echo B::test2(); echo '<br>'; echo C::test2(); echo '<br>'; echo A::test(); echo '<br>'; echo A::test2(); echo '<br>';
// 输出结果 B C 456789 abcdef A 123456
相关推荐
-
PHP5.3以上版本安装ZendOptimizer扩展
现在很多PHP程序都需要ZendOptimizer环境,但是ZendOptimizer在PHP5.2之后已经被支持,那怎么办,Zend也不会这么做,原来PHP5.3开始ZendOptimizer正式改为Zend Guard Loader. Zend Guard Loader的发布,而且Zend Optimizer不会再更新,并且由于差异很大使用Zend Guard加密代码时将提示你是否使用php5.3,如果使用5.3那么代码就无法在php5.2上运行. Zend Guard Loader安装说明
-
php5.3后静态绑定用法详解
本文实例讲述了php5.3后静态绑定用法.分享给大家供大家参考,具体如下: 手册原文: 自 PHP 5.3.0 起,PHP 增加了一个叫做后期静态绑定的功能,用于在继承范围内引用静态调用的类. 准确说,后期静态绑定工作原理是存储了在上一个"非转发调用"(non-forwarding call)的类名.当进行静态方法调用时,该类名即为明确指定的那个(通常在 :: 运算符左侧部分):当进行非静态方法调用时,即为该对象所属的类.所谓的"转发调用"(forwarding c
-
windows下升级PHP到5.3.3的过程及注意事项
就升级了本地的开发环境,没有涉及到生产环境.其实从5.3.0升级到5.3.3的过程还算蛮简单的,就是修改自己的程序有点麻烦,遇到了个小问题就是升级后竟然自己的项目无法连接mysql了,原因就是数据库配置串的问题,将localhost换成了127.0.0.1就好了.以后我在也不会在用localhost了........ 正文 环境介绍:WAMP PHP版本 5.3.0 vc6 ,升级到 5.3.3 vc6 步骤 0.停止WAMP服务 复制解压的php5.3.3 到 E:\Wamp\bin\p
-
深入理解C++的动态绑定与静态绑定的应用详解
为了支持c++的多态性,才用了动态绑定和静态绑定.理解他们的区别有助于更好的理解多态性,以及在编程的过程中避免犯错误.需要理解四个名词:1.对象的静态类型:对象在声明时采用的类型.是在编译期确定的.2.对象的动态类型:目前所指对象的类型.是在运行期决定的.对象的动态类型可以更改,但是静态类型无法更改.关于对象的静态类型和动态类型,看一个示例: 复制代码 代码如下: class B{}class C : public B{}class D : public B{}D* pD = new D();/
-
PHP Static延迟静态绑定用法分析
本文实例讲述了PHP Static延迟静态绑定用法.分享给大家供大家参考,具体如下: PHP5.3以后引入了延迟静态绑定static,它是为了解决什么问题呢?php的继承模型中有一个存在已久的问题,那就是在父类中引用扩展类的最终状态比较困难.来看一个例子. class A { public static function echoClass(){ echo __CLASS__; } public static function test(){ self::echoClass(); } } cla
-
理解Java中的静态绑定和动态绑定
一个Java程序的执行要经过编译和执行(解释)这两个步骤,同时Java又是面向对象的编程语言.当子类和父类存在同一个方法,子类重写了父类的方法,程序在运行时调用方法是调用父类的方法还是子类的重写方法呢,这应该是我们在初学Java时遇到的问题.这里首先我们将确定这种调用何种方法实现或者变量的操作叫做绑定. 在Java中存在两种绑定方式,一种为静态绑定,又称作早期绑定.另一种就是动态绑定,亦称为后期绑定. 程序绑定的概念: 绑定指的是一个方法的调用与方法所在的类(方法主体)关联起来.对java来说,
-
PHP面向对象之后期静态绑定功能介绍
本文将对PHP后期静态绑定功能进行介绍,它主要用于解决在继承范围内引用静态调用的类. 首先来看下面这个例子: 复制代码 代码如下: class Person { public static function status() { self::getStatus(); } protected static function getStatus() { echo "Person is alive"; }
-
简单谈谈php延迟静态绑定
使用场景 先来观察以下代码: abstract class base { //do sth } class aClass extends base{ public static function create(){ return new aClass(); } } class bClass extends base{ public static function create(){ return new bClass(); } } var_dump(aClass::create()); var_
-
PHP5.3安装Zend Guard Loader图文教程
Zend Optimizer/3.3.3 解密加代码优化,提高PHP应用程序的执行速度,显著降低服务器的CPU负载. Zend Guard Loader/5.5.0/6.0 解密加代码优化,提高PHP应用程序的执行速度,显著降低服务器的CPU负载. PHP 5.3.X 开始 Zend Optimizer 正式被 Zend Guard Loader 取代了.安装方法有所不同,以下是安装 Zend Guard Loader的具体方法: 下载地址:ZendGuardLoader-php-5.3-Win
-
Java中的静态绑定和动态绑定详细介绍
一个Java程序的执行要经过编译和执行(解释)这两个步骤,同时Java又是面向对象的编程语言.当子类和父类存在同一个方法,子类重写了父类的方法,程序在运行时调用方法是调用父类的方法还是子类的重写方法呢,这应该是我们在初学Java时遇到的问题.这里首先我们将确定这种调用何种方法实现或者变量的操作叫做绑定. 在Java中存在两种绑定方式,一种为静态绑定,又称作早期绑定.另一种就是动态绑定,亦称为后期绑定. 区别对比 1.静态绑定发生在编译时期,动态绑定发生在运行时 2.使用private或stati
-
php延迟静态绑定实例分析
本文实例讲述了php延迟静态绑定的方法.分享给大家供大家参考.具体分析如下: php延迟静态绑定:指类的self,不是以定义时为准,而是以计算时的运行结果为准.先看一个实例 <?php header("content-type:text/html;charset=utf-8"); class Human{ public static function hei(){ echo "我是父类的hei()方法"; } public function say(){//如
随机推荐
- AnjularJS中$scope和$rootScope的区别小结
- angular forEach方法遍历源码解读
- DedeCMS 核心类TypeLink.class.php摘要笔记
- 简单讲解Java的Future编程模式
- 浅谈java实现背包算法(0-1背包问题)
- Oracle数据库的启动与关闭方法
- Python获取暗黑破坏神3战网前1000命位玩家的英雄技能统计
- 服务器常用组件
- java 线程锁详细介绍及实例代码
- Android中关于FragmentA嵌套FragmentB的问题
- 利用docker搭建LAMP运行环境教程详解
- web的各种前端打印方法之jquery打印插件PrintArea实现网页打印
- jQuery中siblings()方法用法实例
- jquery判断字符输入个数(数字英文长度记为1,中文记为2,超过长度自动截取)
- MSG命令使用详解
- SOSO地图API使用(一)在地图上画圆实现思路与代码
- Android手机联系人快速索引(手机通讯录)
- js constructor的实际作用分析
- Java+opencv3.2.0实现hough直线检测
- 基于Vue开发数字输入框组件