在PHP中传递或访问其他类中的其他对象的最佳方法是什么?

时间:2010-01-14 20:12:58

标签: php class

我需要一些帮助来规划如何在PHP中完成我的课程。我有一个会话类和一个数据库类,我几乎需要访问我使用的每个其他类(论坛,邮件,用户,更多的类)

所以我正在寻找如何访问其他类中的会话类,1选项是使其成为GLOBAL,另一种是将$ session和$ database对象传递到我使用的每个类中...... / p>

$mail = new Mail($session, $database);

但如果我必须为15个以上的不同课程做这件事,这似乎相当繁琐?有没有更好的办法?

下面是我在其他类中调用的会话类中的一些方法的示例。

// set a value into session
$session->set('auto_id', 'some value for auto_id');

// get a value from session
$session->get('auto_id');

4 个答案:

答案 0 :(得分:2)

对于这样的场景,我会使用registry pattern。这是一个非常好的explanation

注册表模式就像对象的存储一样。

代码示例即将推出。

编辑:

在您的示例中(新邮件($ session,$ database)),我认为即使您使用注册表模式也应该这样做。这使得每件事物都更少耦合,更容易理解和独立更改零件。由于我在过去几年中没有做过太多PHP,我不知道是否有任何可用的IOC框架,但这可以帮助您实例化您的类。

答案 1 :(得分:1)

我认为singleton pattern非常适合这种情况。

talkPHP处有一个很好的简单教程(包含一些示例代码),这似乎是一个合理的实现。

答案 2 :(得分:0)

对于会话和数据库之类的东西,我认为全局变量在这里很好。

答案 3 :(得分:0)

我完全不同意使用全局变量。我要么按建议使用注册表模式,要么将Session和DB本身作为Singletons,尽管这会使单元测试更加困难。

相关问题