探讨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 相关文章推荐
php4的session功能评述(三)
Oct 09 PHP
php修改时间格式的代码
May 29 PHP
实现PHP多线程异步请求的3种方法
Jan 17 PHP
Laravel 5框架学习之日期,Mutator 和 Scope
Apr 08 PHP
php实现的RSS生成类实例
Apr 23 PHP
php函数连续调用实例分析
Jul 30 PHP
php英文单词统计器
Jun 23 PHP
CodeIgniter框架验证码类库文件与用法示例
Mar 18 PHP
PHP基于正则批量替换Img中src内容实现获取缩略图的功能示例
Jun 07 PHP
PHP面向对象中new self()与 new static()的区别浅析
Aug 17 PHP
Laravel 5.4因特殊字段太长导致migrations报错的解决
Oct 22 PHP
Yii2框架自定义验证规则操作示例
Feb 08 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最常用的正则表达式
2017/02/13 PHP
PHP实现Markdown文章上传到七牛图床的实例内容
2020/02/11 PHP
复制小说文本时出现的随机乱码的去除方法
2010/09/07 Javascript
jquery插件实现鼠标经过图片右侧显示大图的效果(类似淘宝)
2013/02/04 Javascript
js整数字符串转换为金额类型数据(示例代码)
2013/12/26 Javascript
自己使用jquery写的一个无缝滚动的插件
2014/04/30 Javascript
javascript中scrollTop详解
2015/04/13 Javascript
基于jquery插件编写countdown计时器
2016/06/12 Javascript
js实现String.Fomat的实例代码
2016/09/02 Javascript
前端常见跨域解决方案(全)
2017/09/19 Javascript
ES6中Array.includes()函数的用法
2017/09/20 Javascript
详解vue项目的构建,打包,发布全过程
2017/11/23 Javascript
react中fetch之cors跨域请求的实现方法
2018/03/14 Javascript
nodejs中实现修改用户路由功能
2019/05/24 NodeJs
npm的lock机制解析
2019/06/20 Javascript
[29:23]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第一场1
2014/05/23 DOTA
[02:20]DOTA2亚洲邀请赛 EHOME战队出场宣传片
2015/02/07 DOTA
Python中的一些陷阱与技巧小结
2015/07/10 Python
python编码总结(编码类型、格式、转码)
2016/07/01 Python
Python用sndhdr模块识别音频格式详解
2018/01/11 Python
Django视图和URL配置详解
2018/01/31 Python
Python批量查询关键词微信指数实例方法
2019/06/27 Python
使用python打印十行杨辉三角过程详解
2019/07/10 Python
Python3enumrate和range对比及示例详解
2019/07/13 Python
python如何调用java类
2020/07/05 Python
学生如何注册Pycharm专业版以及pycharm的安装
2020/09/24 Python
使用postMessage让 iframe自适应高度的方法示例
2019/10/08 HTML / CSS
财务分析个人的自荐书范文
2013/11/24 职场文书
大学生个人自我鉴定
2013/12/03 职场文书
致800米运动员广播稿
2014/02/16 职场文书
联谊活动总结
2014/08/28 职场文书
2014红色之旅心得体会
2014/10/07 职场文书
英语辞职信范文
2015/02/28 职场文书
2016党校培训心得体会
2016/01/07 职场文书
《詹天佑》教学反思
2016/02/20 职场文书
关于战胜挫折的名言警句大全!
2019/07/05 职场文书