![]() |
|
首页 │ Apache │ Linux│ Java│ MySQL│ 注册│帮助 | |||
相关问题
不少前人都讲过如何在 PHP 中应用 singleton 这种开发模式来维持如 DbConnection、Configuation 等实例的单一性。但相信有所研究的朋友都会发现,对于 singleton 这种模式下实例的创建,一般推崇的是 Class::GetInstance() 的方式。
但是如果不小心使用了 New Class() 的方式呢?毕竟程序员也是人,一天到晚的满负荷运转,还是会出现头昏脑胀的时候。通过测试,在 PHP4 的环境中发现了一个可以满足这一去求的实现方式。虽然实在无法让人推崇^_^
[php]
class x
{
function x ()
{
$this = 123;
}
}
$y = new x;
var_export( $y );
[/php]
大家可以自己尝试一下,最后的输出内容是什么?不再是
[php]
class x {
}
[/php]
而是让人激动的 123 !( PHP5 如何,不得而知…我把 PHP5 已经删了。)相信这一点,不少人都有自己测试的经验。但是有想过通过这样的方式,可以将 singleton 模式从头到尾的贯穿下来。于是就有:
[php]
class x
{
function x ()
{
$this = x::GetInstance();
}
function GetInstance ()
{
// statements here.
}
}
[/php]
呵,不过这样的方式虽然能够达到要求,但是看着还是怪怪的。不知道有没有哪位高人有更好的方法,可以讨论一下。
提问者:snakevil 08-17 11:11
答复

