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

在PHP中传递或访问其他类中的其他对象的最佳方式是什么?,php,class,Php,Class,我需要一些帮助来计划如何用PHP完成我的课程。我有一个会话类和一个数据库类,我非常需要在我使用的所有其他类(论坛、邮件、用户、更多类)中访问它们 所以我在寻找如何在我的其他类中访问session类,一个选项是使其全局化,另一个选项是将$session和$database对象传递到我使用的每个类中,就像这样 $mail = new Mail($session, $database); 但是,如果我必须为15个以上的不同班级做这件事,这看起来相当乏味?有更好的办法吗 下面是sessions类中的一

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

所以我在寻找如何在我的其他类中访问session类,一个选项是使其全局化,另一个选项是将$session和$database对象传递到我使用的每个类中,就像这样

$mail = new Mail($session, $database);
但是,如果我必须为15个以上的不同班级做这件事,这看起来相当乏味?有更好的办法吗

下面是sessions类中的一些方法的示例,我将在其他类中调用这些方法

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

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

对于像会话和数据库这样的事情,我认为全局变量在这里很好。

对于像会话和数据库这样的事情,我认为全局变量在这里很好。

对于这样的场景,我会使用。这是一个很好的例子

注册表模式的作用类似于对象的存储

一个代码示例即将出现

编辑:


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

对于类似的场景,我将使用。这是一个很好的例子

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

// get a value from session
$session->get('auto_id');
注册表模式的作用类似于对象的存储

一个代码示例即将出现

编辑:

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

我认为在这种情况下,将非常适合

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

// get a value from session
$session->get('auto_id');
这里有一个很好的简单教程(带有一些示例代码),它看起来是一个合理的实现。

我认为它非常适合这个例子


有一个很好的简单教程(带有一些示例代码),看起来是一个合理的实现。

我完全不同意使用globals。我要么按照建议使用注册表模式,要么使会话和数据库本身都成为单例,尽管这会使单元测试变得更加困难。

我完全不同意使用全局变量。我会按照建议使用注册表模式,或者使会话和数据库本身都成为单例,尽管这会使单元测试变得更加困难。

注册表对象不是最终成为单例/全局对象吗?注册表对象不是最终成为单例/全局对象吗?