PHP高级程序设计:模式、框架与测试 学习笔记


静态成员,作用域为自身。

使用静态,效率会高。是因为避免了实例化(会占用一小部分系统资源)

在使用::$变量 时,变量前要加“$”。是因为php当前不支持动态的静态变量的使用,也就是说,不支持可变的静态变量。
不用$时,访问的是类中的某个常量
class MyObject {
  public static $myVariable = 10;
}
echo MyObject::$myVariable;

在PHP中使用作用域限定操作符时,用变量作为类的名称是不允许的。eg: $classnameinvar::somemethod()


单列模式和工厂模式 
单列模式被当作职责模式,(是因为它将创建对象的控制权委托到一个单一的访问点上。)它用来在应用程序中创建一个单一的功能访问点。在任何时候,应用程序中都只会有这个类仅有的一个实例存在。
必须拥有:
1. 一个构造函数,且必须被标记为private
2. 一个保存类的实例的静态成员变量
3. 一个访问这个实例的公共的静态方法
单列类不能在其他类中直接实例化。只能被其自身实例化。
class Database {
  private $_db;
  static $_instance;

  private function __construct() {
    $this->_db = pg_connect('dbname=example_db');
  }

  private __clone() {};

  public static function getInstance() {
    if( ! (self::$_instance instanceof self) ) {
      self::$_instance = new self();
    }
    return self::$_instance;
  }

  public function query($sql) {
    //Run a query using $this->_db
    return pg_query($this->_db,$sql);
  }
}

工厂模式在多态性设计中非常重要。是指包含了一个专门用来创建其他对象的方法的类。
它允许动态地替换类、修改配置,并且

异常
表示由try、catch和throw等语句和Exception类组成的整个处理机制
try 用来定义检测异常的代码块
catch 处理异常时的处理方法 catch ( Exception $e) { }
throw 语句是用来触发异常发生并且在这点上中断处理过程的。必须给它传递一个Exception

#debug_backtrace()


SPL序列化

<?php
error_reporting(E_ALL);

class Base implements Serializable {
  private $baseVar;

  public function __construct() {
    $this->baseVar = 'foo';
  }

  public function serialize() {
    return serialize($this->baseVar);
  }

  public function unserialize($serialized) {
    $this->baseVar = unserialize($serialized);
  }

  public function printMe() {
    echo $this->baseVar . "\n";
  }
  
  public function ctest($test){
	echo $test;
  }
}

class Extender extends Base {
  private $extenderVar;

  public function __construct() {
    parent::__construct();
    $this->extenderVar = 'bar';
  }

  public function serialize() {
    $baseSerialized = parent::serialize();
    return serialize(array($this->extenderVar, $baseSerialized));
  }

  public function unserialize( $serialized ) {
    $temp = unserialize($serialized);
    $this->extenderVar = $temp[0];
    parent::unserialize($temp[1]);
  }
}

$instance	 = new Extender();
$serialized	 = serialize($instance);
echo $serialized . "\n";
$restored	 = unserialize($serialized);

echo '<hr/>';
$restored->printMe();

$restored->ctest('xxoo');

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
详细描述:内容简介本书采用循序渐进的方式介绍了用PHP 进行Web 开发的相关知识。书中首先从OOP 采用的机制—— 抽象类、接口、契约式编程开始讲起,然后介绍了静态方法、单例模式、工厂模式PHP 6 的新特性等内容,接着介绍了测试和文档方面的内容,还介绍了标准PHP 库SPL 方面的知识以及PHP 开发人员最有可能用到的MVC 模式,最后介绍了Ajax 、JSON 、SOAP Web 服务以及SSL 客户端验证等Web 2.0 方面的内容。本书适合中、高级PHP 程序员阅读。媒体评论 “很长时间没有看到这样有价值的PHP高级图书了,我从本书中获益匪浅。强烈推荐!”                   ——Quentin Zervaas,资深PHP程序员,《PHP Web 2.0开发实战》一书作者  “本书是我读过的最好的技术书,推荐阅读。”                   ——Amazon.com 目录第一部分 OOP和模式 第1章 抽象类、接口和契约式编程 第2章 静态变量、成员和方法 第3章 单例模式和工厂模式 第4章 异常 第5章 PHP 6中的新特性第二部分 测试和文档编写 第6章 文档编写和编码规范 第7章 反射API  第8章 测 试、部署和持续集成第三部分 SPL(标准PHP库) 第9章 SPL简介 第10章 SPL迭代器 第11章 SPL文件和目录处理 第12章 SPL数组重载 第13章 SPL异常第四部分 MVC模式 等 。。
编辑推荐 享有盛誉的PHP高级教程,Zend Framework核心开发人员力作,深入设计模式PHP标准库和JSON 。   今天,PHP已经是无可争议的Web开发主流语言。PHP 5以后,它的面向对象特性也足以与Java和C#相抗衡。然而,讲述PHP高级特性的资料一直缺乏,大大影响了PHP语言的深入应用。   本书填补了这一空白。它专门针对有一定经验的PHP程序员,详细讲解了对他们最为重要的主题:高级面向对象、设计模式、文档、测试和标准PHP库等内容。同时,为适应目前Web开发的新趋势,作者还全面探讨了MVC架构和Zend Framework,以及Ajax、JSON、SOAP等Web 2.0技术。书中穿插的大量软件开发实战经验和对PHP编程思想的感悟,将大大提升你的内在功力。 内容简介 本书采用循序渐进的方式介绍了用PHP 进行Web 开发的相关知识。书中首先从OOP 采用的机制—— 抽象类、接口、契约式编程开始讲起,然后介绍了静态方法、单例模式、工厂模式PHP 6 的新特性等内容,接着介绍了测试和文档方面的内容,还介绍了标准PHP 库SPL 方面的知识以及PHP 开发人员最有可能用到的MVC 模式,最后介绍了Ajax 、JSON 、SOAP Web 服务以及SSL 客户端验证等Web 2.0 方面的内容。 本书适合中、高级PHP 程序员阅读。 作者简介 Kevin McArthur,世界知名的PHP专家。他是基于Zend Framework的开源项目的核心开发人员,并因此获得了世界性的声誉。此外,他还是规模最大的PHP支持组织之一PHP EFnet的管理员。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值