探讨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 相关文章推荐
PHP.MVC的模板标签系统(三)
Sep 05 PHP
PHP源码之 ext/mysql扩展部分
Jul 17 PHP
php中选择什么接口(mysql、mysqli)访问mysql
Feb 06 PHP
sql注入与转义的php函数代码
Jun 17 PHP
jQuery+PHP+ajax实现微博加载更多内容列表功能
Jun 27 PHP
PHP正则表达式替换站点关键字链接后空白的解决方法
Sep 16 PHP
WebQQ最新登陆协议的用法
Dec 22 PHP
php选择排序法实现数组排序实例分析
Feb 16 PHP
Yii获取当前url和域名的方法
Jun 08 PHP
php上传功能集后缀名判断和随机命名(强力推荐)
Sep 10 PHP
php脚本运行时的超时机制详解
Feb 17 PHP
Zend Framework数据库操作技巧总结
Feb 18 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 header()函数使用详细(301、404等错误设置)
2013/04/17 PHP
zf框架的zend_cache缓存使用方法(zend框架)
2014/03/14 PHP
PHP实现获取中英文首字母
2015/06/19 PHP
WordPress中使主题支持小工具以及添加插件启用函数
2015/12/22 PHP
php实现基于openssl的加密解密方法
2016/09/30 PHP
jQuery中判断一个元素是否为另一个元素的子元素(或者其本身)
2012/03/21 Javascript
JavaScript中OnLoad几种使用方法
2012/12/15 Javascript
Javascript Throttle &amp; Debounce应用介绍
2013/03/19 Javascript
JavaScript整除运算函数ceil和floor的区别分析
2015/04/14 Javascript
理解AngularJs篇:30分钟快速掌握AngularJs
2016/12/23 Javascript
用JS编写一个函数,返回数组中重复出现过的元素(实例)
2017/09/14 Javascript
基于Vue单文件组件详解
2017/09/15 Javascript
Vue 通过自定义指令回顾v-内置指令(小结)
2018/09/03 Javascript
解决vue组件props传值对象获取不到的问题
2019/06/06 Javascript
vue实现防抖的实例代码
2021/01/11 Vue.js
[02:26]2016国际邀请赛8月3日开战 中国军团出征西雅图
2016/08/02 DOTA
Django 添加静态文件的两种实现方法(必看篇)
2017/07/14 Python
Python+matplotlib绘制不同大小和颜色散点图实例
2018/01/19 Python
在Pytorch中使用样本权重(sample_weight)的正确方法
2019/08/17 Python
Python实现微信好友的数据分析
2019/12/16 Python
关于Tensorflow 模型持久化详解
2020/02/12 Python
Python tkinter实现简单加法计算器代码实例
2020/05/13 Python
使用phonegap检测网络状态的方法
2017/03/30 HTML / CSS
HTML5 拖放(Drag 和 Drop)详解与实例代码
2017/09/14 HTML / CSS
会计专业自我评价
2014/02/12 职场文书
股票投资建议书
2014/05/19 职场文书
施工安全承诺书
2014/05/22 职场文书
送温暖献爱心活动总结
2014/07/08 职场文书
酒店管理失职检讨书
2014/09/16 职场文书
大学生翘课检讨书范文
2014/10/06 职场文书
战略性融资合作协议书范本
2014/10/17 职场文书
收银员岗位职责
2015/02/03 职场文书
好员工观后感
2015/06/17 职场文书
小学运动会通讯稿
2015/07/18 职场文书
SQL之各种join小结详细讲解
2021/08/04 MySQL
mysql 获取时间方式
2022/03/20 MySQL