PHP核心基础模块设计之你有几把锤子

在软件开发中,有这么一种说法:如果你有一把锤子,看到的东西都像钉子。 它的意思,是指技术人员通常只会使用自己已经知道的技术、工具、类库来解决问题,而很少会去思考、尝试新的方式,有点墨守成规。对于这一点,我也是深有体会的。工具本身不分对错,但如果不加判别就一如既 … 阅读更多

PHP核心基础模块设计之有趣的ID生成器

在不少的技术文章,或者技术书籍中,关于唯一ID的生成,总结起来,可以有多种方法。比如: 在程序中使用全局计数器 使用数据库自增ID 相助操作系统底层或者编程语言本身提供的机制生成 使用现实世界中唯一的信息,例如个人身份证号 随机生成 根据特定的算法生成唯一序列 … 阅读更多

PHP核心基础模块设计之不可轻视的日志服务

php

可以说,日志服务是系统中不可或缺的基础模块之一,从小型网站,到大型企业级网站系统,都是如此。 但问题是,很多时候,由于考虑不周,日志服务是缺失的,或者是不全面的。由于激发的矛盾点是,日志服务不能满足日益增长的纪录需求,或者因为日志本身设计的不合理性影响了系统的 … 阅读更多

PHP核心基础模块设计之浅谈配置中心

记得我刚毕业出来工作,在开会评审需求时,听到最多的是产品同事指着需求原型的某处说:“这个地方要支持可配置”。历经5年后,在另一家公司评审需求时,我很惊讶地发现这里的产品同事不再要求可配置,而是在需要改动某一句文案时,就要跑过来跟技术开发人员说,“快,这里帮我改 … 阅读更多

PHP编程之PHPUnit单元测试的应用

单元测试是一门注重实践的开发方式。虽然前面介绍了不少理论知识,但也是为了能让大家知其然,知其所以然。这一节将来介绍如何在平时开发中应用实践单元测试。 1 为Bugfixed编写单元测试用例 维护历史遗留系统的成本是很高的。这是因为旧系统经过几年的迭代,并且中间 … 阅读更多

PHP编程之高级编程技巧

在PHP开发过程中,还有很多高级的技能。一旦掌握、解锁了这些高级特性,对于理解框架的实现、复杂项目的开发都能提升到一个新的层次和高度。这些高级编程技巧在平时的开发中也许会容易被忽略,但在关键的时刻它能发挥着重大的作用,并能协助你解决各种疑难杂症。 这一节主要讲 … 阅读更多

PHP编程之框架是如何运行的

php

基本很多项目的开发都是基于PHP开源框架的,或者至少都是基于框架的,不管这个框架是内部的,还是自己个人编写的,还是来自开源社区的。理解框架是如何运行是很有帮助的,注意这里说的是理解,而不是了解。说白了,就是你不单要知道它是怎么样的,还要明白为什么会这样。 不同 … 阅读更多

PHP编程之谨防阻塞式调用

PHP每次请求都会有单独的php-fpm进程响应和处理。php-fpm的进程模式又可以分为static静态执行和dynamic动态执行。不管是何种执行方式,都是启动了一定数量的php-fpm进程来响应排山倒海般流量的请求。假设,这些进程全部都被占满时,系统就会 … 阅读更多