探讨PHP中OO之静态关键字以及类常量的详解


Posted in PHP onJune 07, 2013

闲着没事随便找了点PHP的关于OO的点资料看看,访问控制修饰符,self,parent,const,static几个关键字,箭头操作符(书上也这么叫..即“->”),范围解析操作符(即双冒号“::”),不过觉得这个跟C#语言里的OO很多是一样的,很容易理解不过还是看看理清PHP里的OO思路还是应该的吧。
--------------------------------------------------------------------------------
声明静态的类的成员和方法,使它不需要一个类的实例.一个static成员的声明不能通过一个类对象的实例来访问(尽管一个静态方法可以)。
静态声明必须在可见性声明之后。为了兼容PHP 4,如果没有可见性被声明,那么成员和方法将被当作是已经声明为public。
由于静态方法可以调用非对象实例,伪变量$this不可以在声明为静态的方法中使用。
事实上static方法调用形式在编译时被确定。当使用必须要声明的类名时,方法是完全标识和无继承规则的应用。当使用必须要声明的类名时,这种方法就被完全确认,而且没有使用继承的规则。
如果self已经被声明,那么self就被当前所属的类所解释。也不适用与继承规则。静态属性不能通过箭头操作符->.访问非静态方法,这将产生一个E_STRICT 级的警告。

<?php
class Foo
{   public static $my_static='foo';
    public function staticValue(){   return self::$my_static;   }
}
class Bar extends Foo
{   public function fooStatic(){   return parent::$my_static;   }
}
print Foo::$my_static."/n";
$foo = new Foo();
print $foo->staticValue()."/n";
print $foo->my_static."/n";// Undefined "Property" my_static 
// $foo::my_static is not possible
print Bar::$my_static."/n";
$bar = new Bar();
print $bar->fooStatic()."/n";
?>

//静态方法实例(Static method example) 
<?php
class Foo
{   public static function aStaticMethod() {    }
}
Foo::aStaticMethod();
?>

可以在每个基类中定义常量使它保持不变。在你不使用$符号去声明或使用它时,常量不同于普通变量。就象静态成员,常量值不能通过对象的实例来访问(而应使用$object::constant). 常量值必须是一个常量表达式,而不是一个变量,一个类的成员,一个数学表达式或函数调用的结果。
<?php
class MyClass
{   const constant = 'constant value';
    function showConstant() {   echo  self::constant."/n";   }
}
echo MyClass::constant."/n";
$class = new MyClass();
$class->showConstant();// echo $class::constant; is not allowed
?>

PHP 相关文章推荐
实用函数3
Nov 08 PHP
php数组函数序列之array_slice() - 在数组中根据条件取出一段值,并返回
Nov 07 PHP
php中0,null,empty,空,false,字符串关系的详细介绍
Jun 20 PHP
apache中为php 设置虚拟目录
Dec 17 PHP
PHP 使用redis简单示例分享
Mar 05 PHP
php将字符串转换成16进制的方法
Mar 17 PHP
typecho插件编写教程(四):插件挂载
May 28 PHP
Yii数据读取与跳转参数传递用法实例分析
Jul 12 PHP
PHP入门教程之日期与时间操作技巧总结(格式化,验证,获取,转换,计算等)
Sep 11 PHP
PHP7.1新功能之Nullable Type用法分析
Sep 26 PHP
PHP实现的日历功能示例
Sep 01 PHP
php curl发送请求实例方法
Aug 01 PHP
PHP5常用函数列表(分享)
Jun 07 #PHP
深入理解php的MySQL连接类
Jun 07 #PHP
PHP之生成GIF动画的实现方法
Jun 07 #PHP
深入HTTP响应状态码速查表的详解
Jun 07 #PHP
探讨如何把session存入数据库
Jun 07 #PHP
基于PHP对XML的操作详解
Jun 07 #PHP
关于初学PHP时的知识积累总结
Jun 07 #PHP
You might like
如何从一个php文件向另一个地址post数据,不用表单和隐藏的变量的
2007/03/06 PHP
让的PHP代码飞起来的40条小技巧(提升php效率)
2010/04/12 PHP
php ctype函数中文翻译和示例
2014/03/21 PHP
php实现按照权重随机排序数据的方法
2015/01/09 PHP
php中json_encode不兼容JSON_UNESCAPED_UNICODE的解决方案
2016/05/31 PHP
Yii框架实现图片上传的方法详解
2017/05/20 PHP
js类后台管理菜单类-MenuSwitch
2007/09/12 Javascript
解决Jquery鼠标经过不停滑动的问题
2014/03/03 Javascript
Javascript中的Array数组对象详谈
2014/03/03 Javascript
jQuery animate easing使用方法图文详解
2016/06/17 Javascript
jQuery的中 is(':visible') 解析及用法(必看)
2017/02/12 Javascript
jQuery Ajax全解析
2017/02/13 Javascript
js实现瀑布流效果(自动生成新的内容)
2017/03/16 Javascript
Vue中在新窗口打开页面及Vue-router的使用
2018/06/13 Javascript
使用vue点击li,获取当前点击li父辈元素的属性值方法
2018/09/12 Javascript
JS尾递归的实现方法及代码优化技巧
2019/01/19 Javascript
JavaScript代理模式原理与用法实例详解
2020/03/10 Javascript
微信小程序实现搜索功能
2020/03/10 Javascript
微信小程序picker组件两列关联使用方式
2020/10/27 Javascript
python字符串str和字节数组相互转化方法
2017/03/18 Python
利用python编写一个图片主色转换的脚本
2017/12/07 Python
Python list列表中删除多个重复元素操作示例
2019/02/27 Python
浅析python中while循环和for循环
2019/11/19 Python
Python实现密码薄文件读写操作
2019/12/16 Python
Python基于numpy模块实现回归预测
2020/05/14 Python
python实现斗地主分牌洗牌
2020/06/22 Python
纯css3(无图片/js)制作的几个社交媒体网站的图标
2013/03/21 HTML / CSS
html5写一个BUI折叠菜单插件的实现方法
2019/09/11 HTML / CSS
教师年度考核自我鉴定
2014/01/19 职场文书
三项教育活动实施方案
2014/03/30 职场文书
信用卡工资证明格式
2014/09/13 职场文书
2015年财务试用期工作总结
2014/12/24 职场文书
病人家属写给医院的感谢信
2015/01/23 职场文书
CentOS8.4安装Redis6.2.6的详细过程
2021/11/20 Redis
详解JavaScript的计时器和按钮效果设置
2022/02/18 Javascript
HDFS免重启挂载新磁盘
2022/04/06 Servers