探讨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编写PDF文档生成器
Oct 09 PHP
php后台多用户权限组思路与实现程序代码分享
Feb 13 PHP
一个简单的网页密码登陆php代码
Jul 17 PHP
PHP中判断变量为空的几种方法分享
Aug 26 PHP
PHP加密函数 Javascript/Js 解密函数
Sep 23 PHP
PHP禁止个别IP访问网站
Oct 30 PHP
php中__destruct与register_shutdown_function执行的先后顺序问题
Oct 17 PHP
文件上传之SWFUpload插件(代码)
Jul 30 PHP
PHP和Mysql中转UTF8编码问题汇总
Oct 10 PHP
Yii2框架使用计划任务的方法
May 25 PHP
php单元测试phpunit入门实例教程
Nov 17 PHP
PHP与Web页面的交互示例详解二
Aug 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中取得image按钮传递的name值
2006/10/09 PHP
上传多个文件的PHP脚本
2006/11/26 PHP
PHP 配置文件中open_basedir选项作用
2009/07/19 PHP
PHP中最容易忘记的一些知识点总结
2013/04/28 PHP
浅析PHP程序设计中的MVC编程思想
2014/07/28 PHP
PHP的中使用非缓冲模式查询数据库的方法
2017/02/05 PHP
PHP基于GD2函数库实现验证码功能示例
2019/01/27 PHP
thinkphp5框架实现的自定义扩展类操作示例
2019/05/16 PHP
再谈javascript 动态添加样式规则 W3C校检
2009/12/25 Javascript
JS图片浏览组件PhotoLook的公开属性方法介绍和进阶实例代码
2010/11/09 Javascript
jsTree 基于JQuery的排序节点 Bug
2011/07/26 Javascript
jQuery Ajax请求状态管理器打包
2012/05/03 Javascript
ajax的hide隐藏问题解决方法
2012/12/11 Javascript
全面解析JavaScript中“&amp;&amp;”和“||”操作符(总结篇)
2016/07/18 Javascript
ionic实现可滑动的tab选项卡切换效果
2020/04/15 Javascript
bootstrap下拉列表与输入框组结合的样式调整
2016/10/08 Javascript
Vue.js组件tree实现省市多级联动
2016/12/02 Javascript
使用D3.js+Vue实现一个简单的柱形图
2018/08/05 Javascript
微信小程序自定义tabBar组件开发详解
2020/09/24 Javascript
Vue 中 a标签上href无法跳转的解决方式
2019/11/12 Javascript
js实现select下拉框选择
2020/01/11 Javascript
[52:32]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第三场 11.18
2020/11/18 DOTA
Python获取文件ssdeep值的方法
2014/10/05 Python
在Python的Flask框架中使用模版的入门教程
2015/04/20 Python
Python数据结构与算法之列表(链表,linked list)简单实现
2017/10/30 Python
Django 导出项目依赖库到 requirements.txt过程解析
2019/08/23 Python
HTML5 Canvas锯齿图代码实例
2014/04/10 HTML / CSS
青春无悔演讲稿
2014/05/08 职场文书
党的群众路线教育实践活动党员个人整改措施
2014/10/27 职场文书
委托证明范本
2014/11/25 职场文书
学校食品安全责任书
2015/01/29 职场文书
病假条格式范文
2015/08/17 职场文书
2016小学新学期寄语
2015/12/04 职场文书
您对思维方式了解多少?
2019/12/09 职场文书
《工作是最好的修行》读后感3篇
2019/12/13 职场文书
解析python中的jsonpath 提取器
2022/01/18 Python