在PHP中传递或访问其他类中的其他对象的最佳方式是什么?
我需要一些帮助来计划如何用PHP完成我的课程。我有一个会话类和一个数据库类,我非常需要在我使用的所有其他类(论坛、邮件、用户、更多类)中访问它们 所以我在寻找如何在我的其他类中访问session类,一个选项是使其全局化,另一个选项是将$session和$database对象传递到我使用的每个类中,就像这样在PHP中传递或访问其他类中的其他对象的最佳方式是什么?,php,class,Php,Class,我需要一些帮助来计划如何用PHP完成我的课程。我有一个会话类和一个数据库类,我非常需要在我使用的所有其他类(论坛、邮件、用户、更多类)中访问它们 所以我在寻找如何在我的其他类中访问session类,一个选项是使其全局化,另一个选项是将$session和$database对象传递到我使用的每个类中,就像这样 $mail = new Mail($session, $database); 但是,如果我必须为15个以上的不同班级做这件事,这看起来相当乏味?有更好的办法吗 下面是sessions类中的一
$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。我要么按照建议使用注册表模式,要么使会话和数据库本身都成为单例,尽管这会使单元测试变得更加困难。我完全不同意使用全局变量。我会按照建议使用注册表模式,或者使会话和数据库本身都成为单例,尽管这会使单元测试变得更加困难。注册表对象不是最终成为单例/全局对象吗?注册表对象不是最终成为单例/全局对象吗?