今天进行代码review的过程中,看到了这样的一段js:
Goodbye old friend! You will be missed…
团队使用的开发框架现在已经基于composer,并使用composer的classloader来进行文件的自动加载,但composer生成后的loader是需要在php 5.3以上才能运行。
为了加大框架的适应性,并可以不改变composer ClassLoader 的使用方式。修改了一下composer 的ClassLoader,适用于 php 5.2.x。
在调用 /vendor/autoload.php 的时候判断一下php版本,载入不同的autoload.php,编写自己的autoload.php进行 /vendor/composer/autoload_namespaces.php, /vendor/composer/autoload_classmap.php 两个文件的载入并返回修改过的loader对象。
下面是代码:
网站上线的时候,有时需要临时停掉其他人的svn 提交,可以使用pre-commit hook来达到类似的效果:
REPOS="$1"
TXN="$2"
/usr/bin/svnlook author -t "$TXN" "$REPOS" | grep 'xuanyan' && exit 0
exit 1
写了一个单例的基类,其中使用了static::$instance静态变量,看下面代码会出现什么问题:
class Singleton
{
protected static $instance = null;
public static function getInstance()
{
if (!static::$instance instanceof static) {
static::$instance = new static();
}
return static::$instance;
}
function __construct()
{
echo '__init__',get_class($this),"\n";
}
function run()
{
echo get_class($this),"\n";
}
}
class a extends Singleton{}
class b extends Singleton{}
a::getInstance()->run();
a::getInstance()->run();
b::getInstance()->run();
a::getInstance()->run();
结果为: