随笔分类 - PHP面向对象,模式与实践
读书笔记
PHP使用反射动态加载第三方类
摘要:用反射加载第三方类用处在于:使用XML或其他配文件配置要加载的类,从而和系统源代码分离对加载的类进行类检查,是加载的类符合自己定义的结构 1 <?php 2 abstract class Module { #核心Module类库 3 function baseFunc() { 4 echo "I am baseFunc"; 5 } 6 7 abstract function execute(); 8 } 9 10 class ModuleRunne...
阅读全文
PHP通过反射获得类源码
摘要:1 <?php 2 function getSource(ReflectionClass $ref) { 3 $path = $ref->getFileName(); #获取脚本文件文件名 4 $file = file($path); #file()方法获取文件内容,并将内容保存在一个数组中,数组每个元素保存一行内容 5 $start = $ref->getStartLine(); #获取类在脚本中的第一行行号 6 $end = $ref->getEndLine(); #获取类在脚本中最后一行的行号 7...
阅读全文
PHP中的__clone()
摘要:php的__clone()方法对一个对象实例进行的浅复制,对象内的基本数值类型进行的是传值复制,而对象内的对象型成员变量,如果不重写__clone方法,显式的clone这个对象成员变量的话,这个成员变量就是传引用复制,而不是生成一个新的对象.如第28行注释所说 1 <?php 2 class Account { 3 public $balance; 4 5 public function __construct($balance) { 6 $this->balance = $balance; 7 ...
阅读全文
PHP的代理模式
摘要:代理模式与父类和接口的异同相同点:代理模式的作用和父类以及接口和组合的作用类似,都是为了聚合共用部分,减少公共部分的代码不同点:相比起父类,他们的语境不同,父类要表达的含义是 is-a, 而代理要表达的含义更接近于接口, 是 has-a,而且使用代理的话应了一句话"少用继承,多用组合",要表达的意思其实也就是降低耦合度了相比起接口,他们实现的功能又不太一样,语境都是has-a,不过接口是has-a-function,而代理对象时是has-a-object,这个object是has-a-function的object,此外,接口是为了说明这个类拥有什么功能,却没有具体实现,实
阅读全文
PHP中的参数提示
摘要:PHP为了解决自己是弱类型语言在调用方法是传参类型可能导致的问题,引入了参数提示,看代码 1 <html> 2 <body> 3 <?php 4 class Man { 5 private $name; 6 7 function getName() { 8 return $this->name; 9 }10 11 ...
阅读全文
PHP成员变量作用域的限制-private
摘要:使用PHP编写个类,我们应该尽量避免动态改变类的成员变量,而将成员变量作用于定位private,使用get和set方法来获取这些成员变量,如 1 <html> 2 <body> 3 <?php 4 class Man { 5 private $name; 6 7 function getName() { 8 return 'Mr/Mrs ' . $this->name; 9 ...
阅读全文