这个项目是用PHP编写的,但与语言无关。我正在构建一个具有以下MVC格式的项目
Main_Class
Main_Class_Common
--> Class_A
--> Class_B
--> Class_C
--> Class_...
--> Class_K
原始请求转到Main_Class,然后包含相应的主子类。大多数请求只需要访问其自己的类中的数据。但是,有一小部分跨类数据。所有子类都需要始终访问Main_Class_Common中的共享公共函数。
例如,
Main_Class
Main_Class_Common
--> Class_Projects
--> Class_Clients
通常,Class_Projects从不需要来自Class_Clients的数据,除了在一个函数中它可能需要调用$class_clients->get_client_details($client_id);
,而反向偶尔会发生相同的事情。
但两个班级都需要能够拨打$main_class_common->clean_input($myinput);
。
目前,我正在使用Class class_a extends main_class_common()
访问共享功能,这些功能完美无缺。但是是从Class_A访问Class_B以便偶尔访问全局$ class_b变量的最佳方式,或者我是否应该将可能的共享函数移动到Main_Class_Common中,即使它们只是偶尔使用?
该项目目前处于开发阶段的早期阶段,因此可以轻松更改当前的实施。
答案 0 :(得分:1)
repository pattern适合这里。创建一个Class_ProjectRepository
类和Class_ClientRepository
类,其中包含get_client_details($client_id)
等方法。
MVC控制器类将使用存储库。例如,Class_Projects
和Class_Clients
都可以使用Class_ClientRepository
来检索客户详细信息。
存储库类将构建查询并调用您的DAL。此外,如果您需要控制器中的实际域对象(例如Class_Client
),则还应使存储库负责将DAL结果集转换为域对象。