探讨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 相关文章推荐
用header 发送cookie的php代码
Mar 16 PHP
让PHP支持断点续传的源码
May 16 PHP
PHP中通过语义URL防止网站被攻击的方法分享
Sep 08 PHP
php array_filter除去数组中的空字符元素
Jun 21 PHP
使用php计算排列组合的方法
Nov 13 PHP
使用CodeIgniter的类库做图片上传
Jun 12 PHP
成为好程序员必须避免的5个坏习惯
Jul 04 PHP
Yii控制器中操作视图js的方法
Jul 04 PHP
PHP自定义多进制的方法
Nov 03 PHP
yii2 url重写并隐藏index.php方法
Dec 10 PHP
PHP实现的策略模式示例
Mar 20 PHP
php输出反斜杠的实例方法
Sep 19 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项目中比较通用的php自建函数的详解
2013/06/06 PHP
php实现建立多层级目录的方法
2014/07/19 PHP
列举PHP的Yii 2框架的开发优势
2015/07/03 PHP
JQuery选择器绑定事件及修改内容的方法
2015/01/23 Javascript
javascript实现客户端兼容各浏览器创建csv并下载的方法
2015/03/23 Javascript
jquery获取所有选中的checkbox实现代码
2016/05/26 Javascript
js获取当前年月日-YYYYmmDD格式的实现代码
2016/06/01 Javascript
如何制作幻灯片(代码分享)
2017/01/06 Javascript
JS实现图片高斯模糊切换效果的焦点图实例
2017/01/21 Javascript
从零学习node.js之模块规范(一)
2017/02/21 Javascript
微信小程序开发之数据存储 参数传递 数据缓存
2017/04/13 Javascript
vue2手机APP项目添加开屏广告或者闪屏广告
2017/11/28 Javascript
web前端vue filter 过滤器
2018/01/12 Javascript
jQuery使用bind动态绑定事件无效的处理方法
2018/12/11 jQuery
vue中created和mounted的区别浅析
2019/08/13 Javascript
layui 富文本图片上传接口与普通按钮 文件上传接口的例子
2019/09/23 Javascript
请求时token过期自动刷新token操作
2020/09/11 Javascript
原生js实现无缝轮播图效果
2021/01/28 Javascript
PyTorch快速搭建神经网络及其保存提取方法详解
2018/04/28 Python
Django restframework 源码分析之认证详解
2019/02/22 Python
Python 变量的创建过程详解
2019/09/02 Python
树莓派极简安装OpenCv的方法步骤
2019/10/10 Python
利用Tensorflow构建和训练自己的CNN来做简单的验证码识别方式
2020/01/20 Python
Python之字典添加元素的几种方法
2020/09/30 Python
H5 meta小结(前端必看篇)
2016/08/24 HTML / CSS
北京捷通华声语音技术有限公司Java软件工程师笔试题
2012/04/10 面试题
材料加工硕士生求职信
2013/10/10 职场文书
老师推荐信
2013/10/28 职场文书
路政管理毕业自荐书范文
2014/02/10 职场文书
给学校建议书范文
2014/05/13 职场文书
2014年党的群众路线学习心得体会
2014/11/05 职场文书
无锡灵山大佛导游词
2015/02/09 职场文书
2015年国培研修感言
2015/08/01 职场文书
学习十八大的感悟
2015/08/11 职场文书
新手必备Python开发环境搭建教程
2021/05/28 Python
用Python仅20行代码编写一个简单的端口扫描器
2022/04/08 Python