深入了解PHP
ilovecose
这个作者很懒,什么都没留下…
展开
-
关于多继承层次的set魔术方法解析
<br />我们通常会将私有方法定义为$_pro,然后用一个set魔术方法进行修改,如下:<br />class A<br />{<br />private $_pro;<br /> <br />public function __set($pro, $val)<br />{<br /> $pro = "-".$pro;<br /> $this->$pro = $val;<br />}<br /> <br />}<br /> <br />通过类A的魔术set方法,只要私有变量定义为$_pro形式原创 2011-04-05 16:16:00 · 1538 阅读 · 1 评论 -
对字符串进行HTML转义:htmlspecialchars与htmlentities
<br />html语言也有一些特殊字符,这些字符不会直接显示到浏览器当中,而作为解析内容的标记,这些字符包括:<br />单引号('),双引号("),左尖括号(<),右尖括号(>),与(&)<br /> <br />如果我们要直接向浏览器输入这些符号,通常使用一种被称作HTML转义的语法,这些语法暗示着,接下来的字符完全是浏览器应当显示的内容,而不是内容解析标记,对应上述符号,分别是:<br />'"<>& <br /> <br />因此,使用htmlspecial原创 2011-04-05 21:02:00 · 37150 阅读 · 0 评论 -
PHP继承当中一种诡异的语法特性——延迟定义
封装、继承和多态,是面向对象的三大特性,其中多态,有人认为在php当中作用不大,原因是php是弱类型语言,并不需要在客户端代码(指的是实例化并且使用类具体对象的代码)当中用父类指针保存子类对象。因此,php当中,多态的更多作用表现在类设计本身。比如,父类当中的某个方法,会调用其另外一个方法:class A{ function called() { } function call() { $this->called(); }}上述类A,在call方法当中,会调原创 2011-04-05 06:20:00 · 1257 阅读 · 0 评论 -
PHP:魔术方法set和get的深入特性分析
在类当中,设计通用的set和get方法,可以简化对属性的读写,这种方法不同于针对于独立的属性的普通的get和set方法,后者针对每个属性,都必须提供一对方法,前者针对所有属性,因此,可以看作是批量定义set和get方法的策略。另外一种常见的魔术方法是construct,在这里作为对照进行介绍。第一,关于访问权限修饰符。construct设计为public,那么可以在new创建对象时,系统会调用构造方法对对象进行初始化,否则将无法实例化此类(常用于纯静态类,或者单例模式当中),而set和get,设计为priv原创 2011-04-05 06:51:00 · 3609 阅读 · 0 评论 -
PHP继承体系当中的多态——什么情况下会表现出多态特性?
简而言之,调用子类的某个方法时,会沿着继承树向上搜索,搜索到第一个实现此方法的父类时,方法就被执行了,在父类当中执行此方法时,此方法可能会调用其他方法或者引用变量,那么,到底执行此方法当中的方法和变量,还是子类当中的呢?过程如下:第一步:如果调用的是静态方法和变量,且没有被显示声明为延迟静态绑定,那么直接调用当前父类的方法和变量。这种情况下,没有表现多态的特性。第二步:如果调用的是非静态方法和非静态变量,或者显式声明为延迟静态绑定的静态方法和变量时,首先检查当前父类有没有私有的方法和变量,如果有,直接调用。原创 2011-04-05 07:10:00 · 1112 阅读 · 0 评论