探讨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+MYSQL的文章管理系统(一)
Oct 09 PHP
COM in PHP (winows only)
Oct 09 PHP
php 应用程序安全防范技术研究
Sep 25 PHP
php Smarty模板生成html文档的方法
Apr 12 PHP
PHP数据流应用的一个简单实例
Sep 14 PHP
PHP实现自动登入google play下载app report的方法
Sep 23 PHP
Codeigniter购物车类不能添加中文的解决方法
Nov 29 PHP
smarty模板引擎中内建函数if、elseif和else的使用方法
Jan 22 PHP
PHP实现基于mysqli的Model基类完整实例
Apr 08 PHP
php提取微信账单的有效信息
Oct 01 PHP
PHP PDOStatement::fetchObject讲解
Feb 01 PHP
PHP SESSION跨页面传递失败解决方案
Dec 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 图片上传类代码
2009/07/17 PHP
2个Codeigniter文件批量上传控制器写法例子
2014/07/25 PHP
JS 控制非法字符的输入代码
2009/12/04 Javascript
javascript弹出层输入框(示例代码)
2013/12/11 Javascript
escape编码与unescape解码汉字出现乱码的解决方法
2014/07/02 Javascript
SeaJS 与 RequireJS 的差异对比
2014/12/08 Javascript
实例详解angularjs和ajax的结合使用
2015/10/22 Javascript
jQuery1.9+中删除了live以后的替代方法
2016/06/17 Javascript
Nodejs 发送Post请求功能(发短信验证码例子)
2017/02/09 NodeJs
Angular 2父子组件之间共享服务通信的实现
2017/07/04 Javascript
js使用原型对象(prototype)需要注意的地方
2017/08/28 Javascript
vuejs数据超出单行显示更多,点击展开剩余数据实例
2019/05/05 Javascript
解决layer.confirm快速点击会重复触发事件的问题
2019/09/23 Javascript
js实现上传图片并显示图片名称
2019/12/18 Javascript
Angular 多模块项目构建过程
2020/02/13 Javascript
[43:58]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第二局
2016/02/27 DOTA
Python利用多进程将大量数据放入有限内存的教程
2015/04/01 Python
Python实现树莓派WiFi断线自动重连的实例代码
2017/03/16 Python
Python如何快速上手? 快速掌握一门新语言的方法
2017/11/14 Python
Python使用pip安装报错:is not a supported wheel on this platform的解决方法
2018/01/23 Python
好的Python培训机构应该具备哪些条件
2018/05/23 Python
详解python配置虚拟环境
2019/04/08 Python
Python中base64与xml取值结合问题
2019/12/22 Python
Python用input输入列表的实例代码
2020/02/07 Python
Python多进程编程multiprocessing代码实例
2020/03/12 Python
Python3基于print打印带颜色字符串
2020/07/06 Python
微软澳洲官方网站:Microsoft Australia
2017/01/10 全球购物
吉列剃须刀美国官网:Gillette美国
2018/07/13 全球购物
Theo + George官方网站:都柏林时尚品牌
2019/04/08 全球购物
领导班子个人查摆问题对照检查材料
2014/10/02 职场文书
2014年小班保育员工作总结
2014/12/23 职场文书
故意伤害罪辩护词
2015/05/21 职场文书
2015大学迎新晚会策划书
2015/07/16 职场文书
七年级上册生物的课件
2019/08/07 职场文书
盘点2020年适合农村地区创业的项目
2019/10/16 职场文书
【D4DJ】美少女DJ企划 动画将于明年冬季开播第2季
2022/04/11 日漫