探讨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&amp;mysql(一)
Oct 09 PHP
PHP MYSQL乱码问题,使用SET NAMES utf8校正
Nov 30 PHP
php生成的html meta和link标记在body标签里 顶部有个空行
May 18 PHP
PHP MemCached 高级缓存应用代码
Aug 05 PHP
PHP中将网页导出为Word文档的代码
May 25 PHP
CI框架中libraries,helpers,hooks文件夹详细说明
Jun 10 PHP
thinkphp中html:list标签传递多个参数实例
Oct 30 PHP
PHP的压缩函数实现:gzencode、gzdeflate和gzcompress的区别
Jan 27 PHP
ECshop 迁移到 PHP7版本时遇到的兼容性问题
Feb 15 PHP
php实现搜索类封装示例
Mar 31 PHP
PHP设计模式之工厂模式(Factory Pattern)的讲解
Mar 21 PHP
PHP实现提取多维数组指定一列的方法总结
Dec 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对csv文件的读取,写入,输出下载操作详解
2013/08/10 PHP
PHP通过引用传递参数用法分析
2016/12/01 PHP
Laravel框架控制器的request与response用法示例
2019/09/30 PHP
ThinkPhP+Apache+PHPstorm整合框架流程图解
2020/11/23 PHP
代码生成器 document.write()
2007/04/15 Javascript
json跟xml的对比分析
2008/06/10 Javascript
基于jquery的返回顶部效果(兼容IE6)
2011/01/17 Javascript
由JavaScript中call()方法引发的对面向对象继承机制call的思考
2011/09/12 Javascript
javascript检测浏览器flash版本的实现代码
2011/12/06 Javascript
ajax的hide隐藏问题解决方法
2012/12/11 Javascript
jquery入门必备的基本认识及实例(整理)
2013/06/24 Javascript
jQuery实现个性翻牌效果导航菜单的方法
2015/03/09 Javascript
js跨浏览器的事件侦听器和事件对象的使用方法
2015/12/17 Javascript
分享javascript计算时间差的示例代码
2020/03/19 Javascript
JavaScript模拟鼠标右键菜单效果
2020/12/08 Javascript
关于iframe跨域POST提交的方法示例
2017/01/15 Javascript
浅谈webpack-dev-server的配置和使用
2018/05/17 Javascript
JS实现轮播图效果
2020/01/11 Javascript
Node.js 在本地生成日志文件的方法
2020/02/07 Javascript
node.js使用yargs处理命令行参数操作示例
2020/02/11 Javascript
使用Node.js实现base64和png文件相互转换的方法
2020/03/11 Javascript
javascript单张多张图无缝滚动实例代码
2020/05/10 Javascript
多页vue应用的单页面打包方法(内含打包模式的应用)
2020/06/11 Javascript
python计算时间差的方法
2015/05/20 Python
Python 中迭代器与生成器实例详解
2017/03/29 Python
Python二叉树的镜像转换实现方法示例
2019/03/06 Python
利用pyuic5将ui文件转换为py文件的方法
2019/06/19 Python
初一地理教学反思
2014/01/16 职场文书
丑小鸭教学反思
2014/02/03 职场文书
农业局学习党的群众路线教育实践活动心得体会
2014/03/07 职场文书
毕业生自荐信如何写
2014/03/24 职场文书
优秀家长自荐材料
2014/08/26 职场文书
乌镇导游词
2015/02/02 职场文书
区域经理岗位职责
2015/02/02 职场文书
导游词之青岛太清宫
2019/12/13 职场文书
windows server 2012安装FTP并配置被动模式指定开放端口
2022/06/10 Servers