月份:2016年2月

阅读Monolog源码,看其中的设计模式(1)

Monolog的代码结构如下:

QQ20160225-0

我们的测试入口文件,test.php。

我们分析下Monolog注册表。代码如下:

我们从函数级别看这个类:

QQ20160225-1

这里先普及下,__callStatic函数:

用静态[……]

Read more

{ Add a Comment }

PHP之单例设计模式

名称:单例模式

通过提供对自身共享实例的访问,单利设计模式用于限制特定对象只能被创建一次。

问题与解决方案:

这种特殊的体系结构类型为通常只存在全局和过程编程的面向对象设计提供了平衡作用。

此外,还有一种限制了任何时候所允许的自身副本数。初始的体系结构基于单利设计模式,不过需要稍加修[……]

Read more

{ 2 Comments }

ThinkPHP3.2.3 框架分析(2)

TP大致目录介绍如下图:

QQ20160220-1

ThinkPHP.php这个文件主要是定义一些系统常量、核心类的加载及应用的初始化。

App::run如下:

QQ20160222-2

App::exec内部分析,这个函数就是通过反射方式处理controller。这个过程可以很好的控制action的操作上前后加上逻[……]

Read more

{ Add a Comment }

PHP 魔术常量

整理下打印日志中常用到的魔术常量。这些常量在代码调试中非常便利。

有八个魔术常量它们的值随着它们在代码中的位置改变而改变。例如 __LINE__ 的值就依赖于它在脚本中所处的行来决定。这些特殊的常量不区分大小写,如下:

名称[……]

Read more

{ Add a Comment }

Mysql的索引使用

#1 为什么不建议使用过长的字段作为主键?

答:聚集索引这种实现方式使得按主键的搜索十分高效,但是辅助索引搜索需要检索两遍索引:首先检索辅助索引获得主键,然后用主键到主索引中检索获得记录。因为所有辅助索引都引用主索引,过长的主索引会令辅助索引变得过大。

#2 为什么使用自增字段作为主键则[……]

Read more

{ Add a Comment }

php的 array_unique vs array_flip vs array_keys性能比较

下面是一段测试代码:

运行结果:

 

{ Add a Comment }

php之外观设计模式

名称:外观

通过在必需的逻辑和方法的集合前创建简单的外观接口,外观设计模式隐藏了来自调用对象的复杂性。

 

问题与解决方案:

外观设计模式的目标是:控制外部错综复杂的关系,并且提供简单的接口以利用上述组件的能力。外观设计模式的独特性在于被设计为将多个互相联系的组件组合或连接[……]

Read more

{ Add a Comment }

php之中介者设计模式

名称:中介者

中介者设计模式用于开发一个对象,这个对象能够在类似对象互相之间不直接交互的情况下传送或调解对这些对象的集合的修改。

问题与解决方案:

当对象的耦合过于紧密时,面向对象编程的优点就会显现出来。虽然仍旧在处理对象,但是这种哦给你样式开始向程序化转换。基本代码变化整体化且较为笨重。[……]

Read more

{ Add a Comment }

php之代理设计模式

名称:代理

代理设计模式构建了透明置于两个不同对象之内的一个对象,从而能够截取或代理这两个对象间的通信或访问。

问题于解决方案:

代理设计模式构造了一个对象,该对象可以截取其他两个或更多对象之间的通信。Proxy对象的外部接口与其所属的类完全相同。调用对象无法辨别原始对象和Proxy对象之[……]

Read more

{ Add a Comment }

php之观察者模式

名称:观察者

观察者设计模式能够更便利的创建查看目标对象状态的对象,并且提供与核心对象非耦合的指定功能性。

问题与解决方案:

实际应用中一个观察这设计模式示例涉及缓存器的构建。针对每个新的博客发布,RSS源上都会出现RSS读者占用一个入口。对于编程新手来说,为了构建这样的RSS源,他们会首[……]

Read more

{ Add a Comment }