读书笔记《PHP高级程序设计、模式、框架与测试》
序言
闲来无事,下载了一些电子书,然后看书名不错《PHP高级程序设计_模式、框架与测试》,翻了一下虽然书有点老了但是讲的内容经常会碰到!给大家推荐一下,然后这里放上我的读书笔记,每日更新。

【作 者】(加)Kevin McArthur [同作者作品] [作译者介绍]
【译 者】 汪泳[同译者作品]
【丛 书 名】 图灵程序设计丛书
【出 版 社】 人民邮电出版社 【书 号】 9787115193179
【上架时间】 2009-5-31
【出版日期】 2009 年7月 【开 本】 16开 【页 码】 1 【版 次】1-1
翻译很到位,给翻译官加鸡腿!PHP进阶篇。
另外《PHP核心技术与最佳实践》也可以去翻翻,哇学无止境啊!
索要此书电子版可在下方留言你的邮箱!
章节
- 第一章 抽象类、接口和契约式编程
- 第二章 静态变量、成员和方法
- 第三章 单例模式和工程模式
- 第四章 异常
- 第五章 PHP 6中的新特性
- 第六章 文档编写和编码规范
- 第七章 反射API
- 第八章 测试、部署和持续集成
- 第九章 SPL简介
- 第十章 SPL迭代器
- 第十一章 SPL文件和目录处理
- 第十二章 SPL数组重载
- 第十三章 SPL异常
- 第十四章 MVC架构
- 第十五章 Zend框架简介
- 第十六章 Zend框架高级功能
- 第十七章 应用Zend框架
- 第十八章 Ajax和JSON
- 第十九章 Web服务和SOAP协议介绍
- 第二十章 高级Web服务
- 第二十一章 证书验证
读书笔记
第一章 抽象类、接口和契约式编程
第二章 静态变量、成员和方法
第三章 单例模式和工程模式
第四章 异常
第五章 PHP 6中的新特性
这一章跳过......
第六章 文档编写和编码规范
第七章 反射API
一个关于反射API的实例
<?php
interface Iplugin{
public static function getName();
public static function getMenuItems();
public static function getArticles();
public static function getSideBars();
}
class MyCoolIplugin implements Iplugin{
public static function getName(){
return "MyCoolIplugin";
}
public static function getMenuItems(){
return array(array(
'description'=>"MyCoolIplugin",
'link'=>"/MyCoolIplugin"
));
}
public static function getArticles(){
return array(array(
'path'=>"11111111",
'desc'=>'aaaaaaaaa'
));
}
public static function getSideBars(){
return array(array(
'description'=>'SideBars',
'test'=>'qqqqqqqqq'
));
}
}
function findIplugin(){
$plugins=array();
foreach(get_declared_classes() as $class){
$reflectionClass= new ReflectionClass($class);
if($reflectionClass->implementsInterface('Iplugin')){
$plugins[]=$reflectionClass;
}
}
return $plugins;
}
function computerMenu(){
$menu=array();
foreach (findIplugin() as $plugin){
if($plugin->hasMethod('getMenuItems')){
$reflectionMethod=$plugin->getMethod('getMenuItems');
if($reflectionMethod->isStatic()){
$items=$reflectionMethod->invoke(null);
}else{
$items=$reflectionMethod->invoke($plugin->newInstance());
}
}
}
$menu=array_merge($menu,$items);
return $menu;
}
function computerArticles(){
$articles=array();
foreach(findIplugin() as $plugin){
if($plugin->hasMethod('getArticles')){
$reflectionMethod=$plugin->getMethod('getArticles');
if($reflectionMethod->isStatic()){
$items=$reflectionMethod->invoke(null);
}else{
$items=$reflectionMethod->invoke($plugin->newInstance());
}
}
}
$articles=array_merge($articles,$items);
return $articles;
}
function computerSideBars(){
$sideBars=array();
foreach (findIplugin() as $plugin){
if($plugin->hasMethod('getSideBars')){
$reflectionMethod=$plugin->getMethod('getSideBars');
if($reflectionMethod->isStatic()){
$items=$reflectionMethod->invoke(null);
}else{
$items=$reflectionMethod->invoke($plugin->newiInstance());
}
}
}
$sideBars=array_merge($sideBars,$items);
return $sideBars;
}
print_r(computerMenu());
print_r(computerArticles());
print_r(computerSideBars());
读书笔记《PHP高级程序设计、模式、框架与测试》的更多相关文章
- csapp读书笔记-并发编程
这是基础,理解不能有偏差 如果线程/进程的逻辑控制流在时间上重叠,那么就是并发的.我们可以将并发看成是一种os内核用来运行多个应用程序的实例,但是并发不仅在内核,在应用程序中的角色也很重要. 在应用级 ...
- CSAPP 读书笔记 - 2.31练习题
根据等式(2-14) 假如w = 4 数值范围在-8 ~ 7之间 2^w = 16 x = 5, y = 4的情况下面 x + y = 9 >=2 ^(w-1) 属于第一种情况 sum = x ...
- CSAPP读书笔记--第八章 异常控制流
第八章 异常控制流 2017-11-14 概述 控制转移序列叫做控制流.目前为止,我们学过两种改变控制流的方式: 1)跳转和分支: 2)调用和返回. 但是上面的方法只能控制程序本身,发生以下系统状态的 ...
- CSAPP 并发编程读书笔记
CSAPP 并发编程笔记 并发和并行 并发:Concurrency,只要时间上重叠就算并发,可以是单处理器交替处理 并行:Parallel,属于并发的一种特殊情况(真子集),多核/多 CPU 同时处理 ...
- 读书笔记汇总 - SQL必知必会(第4版)
本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...
- 读书笔记--SQL必知必会18--视图
读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...
- 《C#本质论》读书笔记(18)多线程处理
.NET Framework 4.0 看(本质论第3版) .NET Framework 4.5 看(本质论第4版) .NET 4.0为多线程引入了两组新API:TPL(Task Parallel Li ...
- C#温故知新:《C#图解教程》读书笔记系列
一.此书到底何方神圣? 本书是广受赞誉C#图解教程的最新版本.作者在本书中创造了一种全新的可视化叙述方式,以图文并茂的形式.朴实简洁的文字,并辅之以大量表格和代码示例,全面.直观地阐述了C#语言的各种 ...
- C#刨根究底:《你必须知道的.NET》读书笔记系列
一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...
- Web高级征程:《大型网站技术架构》读书笔记系列
一.此书到底何方神圣? <大型网站技术架构:核心原理与案例分析>通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计 ...
随机推荐
- innerHTML,innerText,textContent,outerHTML的用法以及区别
innerHTML获取的是对象起始的位置到终止位置全部内容,包含html标签. innerText和textContent结果是一样的,不包含标签,直接获取标签内的内容,区别是两者浏览器的兼容性. o ...
- 乘风破浪:LeetCode真题_013_Roman to Integer
乘风破浪:LeetCode真题_013_Roman to Integer 一.前言 上一节我们讨论了如何把阿拉伯数字转换成罗马数字,现在我们需要思考一下如何把罗马数字转换成阿拉伯数字,其实我们仔细观擦 ...
- MapReduce Design Patterns(chapter 3 (part 1))(五)
Chapter 3. Filtering Patterns 本章的模式有一个共同点:不会改变原来的记录.这种模式是找到一个数据的子集,或者更小,例如取前十条,或者很大,例如结果去重.这种过滤器模式跟前 ...
- iPhone的设备名转换
def convertDeviceName(self, deviceName): """ 转换deviceName(如iPhone 6,2)为用户习惯形式(如iPhone ...
- 软工团队 - 预则立&&他山之石
软工团队 - 预则立&&他山之石 团队任务计划 时间 人员 任务 10.23-10.29 张昭锡 初拟Android代码规范 李永盛 初拟PHP代码规范 刘晨瑶 初拟Git代码规范 刘 ...
- IOS 对JSON解析的要求
JOSN格式的原始字符串中, 键名必须为 引号 “” 包含的字符串,值必须是数组("[]" 用中括号包起来的部分),字典("{}" 用中括号包起来的部分),数字 ...
- PostgreSQL 连接问题 FATAL: no pg_hba.conf entry for host
The server doesn't grant access to the database: the server reports FATAL: no pg_hba.conf entry for ...
- chrome下载离线安装包的方法
https://www.google.com/chrome/browser/desktop/index.html?system=true&standalone=1,一般默认下载稳定版,如果需要 ...
- C、CSL 的密码 【set暴力 || 后缀数组】 (“新智认知”杯上海高校程序设计竞赛暨第十七届上海大学程序设计春季联赛 )
题目传送门:https://ac.nowcoder.com/acm/contest/551/C 题目描述 众所周知,CSL 最喜欢的密码是 ******.于是有一天…… 为了改变这一点,他决定 ...
- C#流概述
C#流概述 .NET Framework使用“流”来支持读取或写入文件.可以将流视为一组连续的一维数据,包含开头和结尾,并且其中的游标指示了流的当前位置. 1.流操作 流中包含的数据可能来自内存.文件 ...