以下是一些PHP Coding Tips. 当然, 这些Tips并不一定仅仅局限于PHP.
大家有什么好的心得, 欢迎直接回复本文与更多的人分享.. 谢谢
本文长期更新, 请关注PHP Coding Tips
最后更新: 2011/04/02
在上一篇文章Serialize/Unserialize破坏单例的最后, 我留下了一个问题, 为了让大家能思考, 我就单独再写一篇给出答案.
我们经常采用如下方式定义单列:
class Singleton {
private static $instance = NULL;
/** 不容许直接调用构造函数 */
private function __construct() {
}
/** 不容许深度复制 */
private function __clone() {
}
public static function getInstance() {
if (NULL === self::$instance) {
self::$instance = new self();
}
return self::$instance;
}
}
很多人都会记得对深度copy的保护, 但, 其实我们却疏忽了一点…
之前和人讨论过这个问题,,, 今天感冒在家休息, 就回忆了一下, 整理如下.
我们很多的应用在使用Ajax的时候, 大多数情况都是询问型操作, 比如提交数据, 则Ajax只是期待服务器返回:
{status: 0, message:""} //status 0代表成功, 非零的时候, message中包含出错信息.
在使用curl做POST的时候, 当要POST的数据大于1024字节的时候, curl并不会直接就发起POST请求, 而是会分为俩步,
1. 发送一个请求, 包含一个Expect:100-continue, 询问Server使用愿意接受数据 2. 接收到Server返回的100-continue应答以后, 才把数据POST给Server
今天在微薄看到一个转帖, 题目触目惊心《PHP的echo为什么这么慢》,
点进去一看, 大意是说在PHP中echo一个500K的字符串, 会耗时几百ms,
然后作者说打开Apache的压缩以后呢, 速度就快了.
之后, 又看到一个同学, 从HTTP协议入手, 分析了chunked模式和直接传输模式, 意思可能是说, 和分段传输相关…
我在这里不是批评或者驳斥谁, 相关者莫要生气, 我只是害怕误导别人..
echo 一个500K的字符串, 速度慢, 这个和PHP没关系, 也和PHP的实现者C也没关系,, 关系在于IO, IO的速度限制了输出的速度,,
至于说Apache的压缩,,这个,,压缩了, 字符串变小了(字符串的压缩率很大), 自然也就快了(CPU换IO)….
最后, PHP真的很无辜, 和它真没关系..
很早就想写这么一篇文章了。我离开中国雅虎已经一年有余,在中国雅虎工作的那段时光是我最珍贵的回忆之一,和以前的同事吃饭聊天的时候也经常会怀念一下中国雅虎,怀念得多了,就觉得不如写篇文章好好回顾一下。很多事情虽然已经过去,但有些话不说出来,到底意难平。
转载说明 :我的紫色情结. –作者是我以前小组的同事
对于Apache来说, 如果URL和PATH_INFO中出现%2f(/)或者%5c(\), 会被认为这是个不合法的请求, Apache将会直接返回404结束.
对于使用mod_rewrite做URL改写的情况来说, 可能会比较容易遇到这个问题.
解决的办法有两种.
1. 进行俩次encode, /变为%252f 2. 在apache的配置中增加: AllowEncodedSlashes On
具体可以参看:http://httpd.apache.org/docs/2.2/mod/core.html#allowencodedslashes
快有一个月没有更新Blog了, 一来是最近项目比较紧张, 二来就是在忙着开发Yaf(Yet another Framework)
一直以来, 我研究PHP的内核, 虽然有文章不少, 但却鲜有一些借助这些研究成果而来的, 实际的东西, 也就无法让更多人学习到对Zend API的实际运用.
我思考了一段时间, 觉得有必要写一个扩展出来, 这个扩展要用到很多Zend API, 要用到很多在网上的PHP扩展开发中,鲜有叙及的部分(比如, 实现类/接口, 继承, 自动加载,等等), 让更多的PHP扩展开发者可以借鉴.
最后, 考虑到目前有很多PHP框架, 而这些框架中也有很多很优秀的代表, 比如Zend Framework(因为Yaf是依照Zf来的, 所有特指一下). 这些框架, 运用了很多PHP5以后的新技术, 那么, 如果用扩展写一个类似于她们的框架, 除了能达到我之前想要的扩展教程的目标, 又能很大程度上解决, 框架的性能问题..
至于, 为什么叫Yaf, 是我实在想不到更好的名字了, 就借鉴了Yacc的命名方法, 取名为(yet another framework)
注意, 目前Yaf2.0已经开发完成, 完全新的体系架构和设计. 经过系统的测试, 并且已经在公司多条产品线应用. 请大家暂停使用1.0, 2.0会在文档准备充足后放出.
首先说个题外话: Vim发布7.3了..
在翻看Vim插件的时候, 发现了一个比较有意思的应用(非插件): 把PHP的手册融如Vim中, 在Vim中, 按”K”, 就可以跳转到光标下函数的手册说明…