探讨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新手上路(八)
Oct 09 PHP
Windows PHP5和Apache的安装与配置
Jun 08 PHP
php入门教程 精简版
Dec 13 PHP
php模拟post行为代码总结(POST方式不是绝对安全)
Feb 22 PHP
PHP实现手机归属地查询API接口实现代码
Aug 27 PHP
使用淘宝IP库获取用户ip地理位置
Oct 27 PHP
php利用cookies实现购物车的方法
Dec 10 PHP
php+xml实现在线英文词典之添加词条的方法
Jan 23 PHP
PHP守护进程化在C和PHP环境下的实现
Nov 21 PHP
PHP手机短信验证码实现流程详解
May 17 PHP
PHP常见数组排序方法小结
Aug 20 PHP
PHP实现单条sql执行多个数据的insert语句方法
Oct 11 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 at(@)符号的用法简介
2009/07/11 PHP
PHP析构函数destruct与垃圾回收机制的讲解
2019/03/22 PHP
jquery鼠标停止移动事件
2013/12/21 Javascript
jQuery实现复选框全选/取消全选/反选及获得选择的值
2014/06/12 Javascript
node.js使用require()函数加载模块
2014/11/26 Javascript
快速学习JavaScript的6个思维技巧
2015/10/13 Javascript
JavaScript jquery及AJAX小结
2016/01/24 Javascript
Highcharts学习之数据列
2016/08/03 Javascript
jQuery获取select选中的option的value值实现方法
2016/08/29 Javascript
JS图片放大效果简单实现代码
2016/09/08 Javascript
AngularJS的Filter的示例详解
2017/03/07 Javascript
angularjs中使用ng-bind-html和ng-include的实例
2017/04/28 Javascript
vue2.0 路由模式mode=&quot;history&quot;的作用
2018/10/18 Javascript
小程序开发中如何使用async-await并封装公共异步请求的方法
2019/01/20 Javascript
Vue.js watch监视属性知识点总结
2019/11/11 Javascript
在Gnumeric下使用Python脚本操作表格的教程
2015/04/14 Python
PHP网页抓取之抓取百度贴吧邮箱数据代码分享
2016/04/13 Python
python3使用matplotlib绘制散点图
2019/03/19 Python
python opencv minAreaRect 生成最小外接矩形的方法
2019/07/01 Python
如何用OpenCV -python3实现视频物体追踪
2019/12/04 Python
在django admin中配置搜索域是一个外键时的处理方法
2020/05/20 Python
Pycharm安装第三方库失败解决方案
2020/11/17 Python
使用CSS实现阅读进度条
2017/02/27 HTML / CSS
HTML5所有标签汇总及标签意义解释
2015/03/12 HTML / CSS
Html5 Canvas动画基础碰撞检测的实现
2018/12/06 HTML / CSS
为什么说Ruby是一种真正的面向对象程序设计语言
2012/10/30 面试题
孝老爱亲模范事迹
2014/01/24 职场文书
机电专业大学生职业规划书范文
2014/02/25 职场文书
业务员的岗位职责
2014/03/15 职场文书
单位授权委托书范文
2014/08/02 职场文书
党员自评材料范文
2014/12/17 职场文书
2016教师廉洁教育心得体会
2016/01/13 职场文书
初中地理教学反思
2016/02/19 职场文书
使用Pytorch训练two-head网络的操作
2021/05/28 Python
Java并发编程之Executor接口的使用
2021/06/21 Java/Android
详解Python类和对象内容
2021/06/22 Python