探讨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 多行多列显示
Aug 15 PHP
字母顺序颠倒而单词顺序不变的php代码
Aug 08 PHP
求PHP数组最大值,最小值的代码
Oct 31 PHP
php 删除目录下N分钟前创建的所有文件的实现代码
Aug 10 PHP
PHP内核探索:变量概述
Jan 30 PHP
PHP中imagick函数的中文解释
Jan 21 PHP
PHP 9 大缓存技术总结
Sep 17 PHP
PHP编程实现csv文件导入mysql数据库的方法
Apr 29 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
Nov 16 PHP
PHP使Laravel为JSON REST API返回自定义错误的问题
Oct 16 PHP
docker-compose部署php项目实例详解
Jul 30 PHP
laravel实现Auth认证,登录、注册后的页面回跳方法
Sep 30 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
文章推荐系统(二)
2006/10/09 PHP
理解PHP中的stdClass类
2014/04/18 PHP
php.ini save_handler 修改不生效的解决办法
2014/07/22 PHP
php关闭warning问题的解决方法
2016/05/17 PHP
PHP Ajax实现无刷新附件上传
2016/08/17 PHP
利用switch语句进行多选一判断的实例代码
2016/11/14 PHP
详谈PHP面向对象中常用的关键字和魔术方法
2017/02/04 PHP
php 基础函数
2017/02/10 PHP
PHP开发实现微信退款功能示例
2017/11/25 PHP
搜索附近的人PHP实现代码
2018/02/11 PHP
JS 遮照层实现代码
2010/03/31 Javascript
Javascript绝句欣赏 一些经典的js代码
2012/02/22 Javascript
jquery 多行文本框(textarea)高度变化
2013/07/03 Javascript
javascript操作css属性
2013/12/30 Javascript
JS的事件绑定深入认识
2014/06/26 Javascript
JavaScript实现把数字转换成中文
2015/06/29 Javascript
AngularJS基础 ng-mouseover 指令简单示例
2016/08/02 Javascript
使用jQuery实现购物车结算功能
2017/08/15 jQuery
React Component存在的几种形式详解
2018/11/06 Javascript
js通过循环多张图片实现动画效果
2019/12/19 Javascript
vue3.0中setup使用(两种用法)
2020/12/02 Vue.js
解决基于 keep-alive 的后台多级路由缓存问题
2020/12/23 Javascript
决策树的python实现方法
2014/11/18 Python
python学生信息管理系统(初级版)
2018/10/17 Python
python+mysql实现学生信息查询系统
2019/02/21 Python
Python 使用 Pillow 模块给图片添加文字水印的方法
2019/08/30 Python
Python机器学习工具scikit-learn的使用笔记
2021/01/28 Python
整理HTML5移动端开发的常用触摸事件
2016/04/15 HTML / CSS
html5 canvas绘制网络字体的常用方法
2019/08/26 HTML / CSS
马来西亚网上花店:FlowerAdvisor马来西亚
2020/01/03 全球购物
建筑系毕业生自我鉴定
2014/01/24 职场文书
不打扫卫生检讨书
2014/02/12 职场文书
个人承诺书怎么写
2014/05/24 职场文书
Python数据分析入门之教你怎么搭建环境
2021/05/13 Python
MySQL触发器的使用
2021/05/24 MySQL
浅谈redis的过期时间设置和过期删除机制
2022/03/18 MySQL