代码之家  ›  专栏  ›  技术社区  ›  Aaron Butacov

当类\u a只是偶尔需要类\u b信息时,PHP的最佳设计模式是什么?

  •  3
  • Aaron Butacov  · 技术社区  · 14 年前

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

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

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

    Main_Class
    Main_Class_Common
      --> Class_Projects
      --> Class_Clients
    

    通常,类\项目从不需要来自类\客户机的数据,除非它可能需要调用一个函数 $class_clients->get_client_details($client_id); 同样的情况偶尔也会反过来发生。

    $main_class_common->clean_input($myinput); .

    目前,我正在使用 Class class_a extends main_class_common() 对于共享功能的访问,它可以完美地工作。但是 从类\u A访问类\u B的最佳方法是偶尔访问全局$Class \u B变量,还是应该将可能的共享函数移到主\u类\u公共中,即使它们只是偶尔使用?

    现在的项目正处于开发的早期阶段,因此可以很容易地更改当前的实现。

    1 回复  |  直到 14 年前
        1
  •  1
  •   Niels van der Rest    14 年前

    repository pattern 在这里合适。创建 Class_ProjectRepository 类和 Class_ClientRepository 类,它包含如下方法 get_client_details($client_id) .

    Class_Projects Class_Clients 可以使用 检索客户端详细信息。

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