gpt4 book ai didi

php - 当 Class_a 只是偶尔需要 Class_b 信息时,PHP 的最佳设计模式是什么?

转载 作者:搜寻专家 更新时间:2023-10-31 21:46:10 25 4
gpt4 key购买 nike

该项目使用 PHP,但与语言无关。我正在构建一个具有以下 MVC 格式的项目

Main_Class
Main_Class_Common
--> Class_A
--> Class_B
--> Class_C
--> Class_...
--> Class_K

原始请求转到 Main_Class,然后包含适当的主子类。大多数请求只需要访问它自己的类中的数据。但是,有少量跨类数据。所有子类都需要随时访问 Main_Class_Common 中的共享公共(public)函数。

例如,

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 中,即使它们只是偶尔使用?

目前的项目处于开发的早期阶段,因此可以轻松更改当前的实现。

最佳答案

repository pattern适合这里。创建一个 Class_ProjectRepository 类和 Class_ClientRepository 类,其中包含 get_client_details($client_id) 等方法。

MVC Controller 类将使用存储库。例如,Class_ProjectsClass_Clients 都可以使用 Class_ClientRepository 来检索客户详细信息。

存储库类将构建查询并调用您的 DAL。此外,如果您在 Controller 中需要实际的域对象,例如 Class_Client,您还应该让存储库负责将 DAL 结果集转换为域对象。

关于php - 当 Class_a 只是偶尔需要 Class_b 信息时,PHP 的最佳设计模式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3272675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com