PHP框架中静态方法的替代方案

时间:2013-05-22 19:46:19

标签: php class coding-style

最近我一直在尝试创建自己的PHP框架,只是为了向它学习(因为我们可能会研究一些更大更强大的生产框架)。我目前拥有的一个设计理念是,大多数核心类主要处理类中的静态函数。

几天前,我已经看过一些关于“静态方法是可测试性死亡”的文章。这关心我...是啊..我的类主要包含静态方法..我使用静态方法的主要原因是很多类永远不需要多个实例,静态方法很容易在全局范围内接近。现在我知道静态方法实际上并不是最好的做法,我正在寻找更好的选择。

想象一下以下代码来获取配置项:

$testcfg = Config::get("test"); // Gets config from "test"
echo $testcfg->foo; // Would output what "foo" contains ofcourse.

/*
 * We cache the newly created instance of the "test" config,
 * so if we need to use it again anywhere in the application,
 * the Config::get() method simply returns that instance.
 */

这是我目前拥有的一个例子。但根据一些文章,这很糟糕。
现在,我可以这样做,例如CodeIgniter如何使用:

$testcfg = $this->config->get("test");
echo $testcfg->foo;

就个人而言,我发现这更难阅读。这就是为什么我更喜欢另一种方式。

所以简而言之,我想我需要一个更好的方法来学习我的课程。我不希望配置类有多个实例,保持可读性并且可以轻松访问类。有什么想法吗?

请注意,我正在寻找一些最佳做法或某些内容,包括代码示例,而不是一些随意的想法。另外,如果我绑定了$ this-> class->方法样式模式,那么我会有效地实现它吗?

1 个答案:

答案 0 :(得分:0)

Magic methods会对您有所帮助:查看有关__get()__set()

的示例

您还应该看看namespaces:它可能会帮助您仅使用静态方法删除某些类。

相关问题