探讨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 相关文章推荐
rephactor 优秀的PHP的重构工具
Jun 09 PHP
php curl常见错误:SSL错误、bool(false)
Dec 28 PHP
PHP header()函数使用详细(301、404等错误设置)
Apr 17 PHP
PHP中对各种加密算法、Hash算法的速度测试对比代码
Jul 08 PHP
详解PHP导入导出CSV文件
Nov 03 PHP
php采用file_get_contents代替使用curl实例
Nov 07 PHP
PHP输出两个数字中间有多少个回文数的方法
Mar 23 PHP
php通过淘宝API查询IP地址归属等信息
Dec 25 PHP
PHP调用存储过程返回值不一致问题的解决方法分析
Apr 26 PHP
[原创]解决wincache不支持64位PHP5.5/5.6的问题(提供64位wincache下载)
Jun 22 PHP
PHP常用函数之base64图片上传功能详解
Oct 21 PHP
thinkphp框架表单数组实现图片批量上传功能示例
Apr 04 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改进计算字符串相似度的函数similar_text()、levenshtein()
2014/10/27 PHP
jQuery EasyUI NumberBox(数字框)的用法
2010/07/08 Javascript
基于jQuery捕获超链接事件进行局部刷新代码
2012/05/10 Javascript
js实现倒计时(距离结束还有)示例代码
2013/07/24 Javascript
js调用css属性写法
2013/09/21 Javascript
gridview生成时如何去掉style属性中的border-collapse
2014/09/30 Javascript
jQuery对象和DOM对象之间相互转换的方法介绍
2015/02/28 Javascript
Node.js连接MongoDB数据库产生的问题
2017/02/08 Javascript
checkbox:click事件触发span元素内容改变的方法
2017/09/11 Javascript
Vue.js搭建移动端购物车界面
2020/06/28 Javascript
详解vue-cli之webpack3构建全面提速优化
2017/12/25 Javascript
vue服务端渲染页面缓存和组件缓存的实例详解
2018/09/18 Javascript
Vue中控制v-for循环次数的实现方法
2018/09/26 Javascript
基于node简单实现RSA加解密的方法步骤
2019/03/21 Javascript
实现elementUI表单的全局验证的方法步骤
2019/04/29 Javascript
node基于async/await对mysql进行封装
2019/06/20 Javascript
js回溯法计算最佳旅行线路代码实例
2019/09/11 Javascript
Vue项目打包压缩的实现(让页面更快响应)
2020/03/10 Javascript
详解pyenv下使用python matplotlib模块的问题解决
2018/11/29 Python
Python3非对称加密算法RSA实例详解
2018/12/06 Python
Python3.6实现带有简单界面的有道翻译小程序
2019/04/16 Python
Python机器学习算法库scikit-learn学习之决策树实现方法详解
2019/07/04 Python
opencv 形态学变换(开运算,闭运算,梯度运算)
2020/07/07 Python
Marriott中国:万豪国际酒店查询预订
2016/09/02 全球购物
留学生如何写好自荐信
2013/12/27 职场文书
2014新年寄语
2014/01/20 职场文书
创建无烟单位实施方案
2014/03/29 职场文书
检举信的格式及范文
2014/04/04 职场文书
工商管理专业自荐信
2014/06/03 职场文书
关于读书的演讲稿500字
2014/08/27 职场文书
2014年政务公开工作总结
2014/12/09 职场文书
党员剖析材料范文
2014/12/18 职场文书
清明节扫墓活动总结
2015/02/09 职场文书
六年级作文之预言作文
2019/10/25 职场文书
Python实战之大鱼吃小鱼游戏的实现
2022/04/01 Python
el-table-column 内容不自动换行的解决方法
2022/08/14 Vue.js