Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 区分图书馆?(目录结构)_Php_Oop_Web Applications_Directory Structure - Fatal编程技术网

Php 区分图书馆?(目录结构)

Php 区分图书馆?(目录结构),php,oop,web-applications,directory-structure,Php,Oop,Web Applications,Directory Structure,下面是我目前正在开发的web应用程序上目录结构的快速摘录: /app /libraries User_Input.php Database.php InvoiceHandler.php 您认为在这个集合中,InvoiceHandler有点奇怪吗?我当然喜欢 直到最近,我还忽略了区分实际上是我的应用程序和其他服务(如持久存储)中间层的事实库和我自己编写的包含应用程序自定义逻辑的代码类(如本例中的Invoice_处理程序)的需要 但随着我的应用程序的增长,这会造成越来越

下面是我目前正在开发的web应用程序上目录结构的快速摘录:

/app
  /libraries
    User_Input.php
    Database.php
    InvoiceHandler.php
您认为在这个集合中,
InvoiceHandler
有点奇怪吗?我当然喜欢

直到最近,我还忽略了区分实际上是我的应用程序和其他服务(如持久存储)中间层的事实库和我自己编写的包含应用程序自定义逻辑的代码类(如本例中的Invoice_处理程序)的需要

但随着我的应用程序的增长,这会造成越来越多的混乱。到今天为止,我还没有看到任何关于这方面的好例子,我也没有足够的经验自己得出结论:


关于这两个明确且明显不同的类的分离,惯例和常识有什么说法?

您可以使用以下结构:

libs
    Common(Core)
        Db
          Connection(Database).php
    Input
         Validator
         Filter
    Handler(Controller)
        Invoice.php
    Model 

这个问题有点模糊,所示的示例文件名并没有对它们进行太多解释。然而,我要说的是,你需要把你的类组合成一个有意义的结构

/app
  /library
    /My
      /Controller
        AbstractController.php
      /Filter
        CamelCaseToUnderscore.php
        UnderscoreToCamelCase.php
      /Validator
        Date.php
        Url.php

我使用的类与您的类大不相同(至少我认为是这样),但您可以清楚地看到它们被分组到一个逻辑结构中。

我最终根据它们所包含的抽象级别来分离我的库。为了寻找高级抽象的更好名称,我对这些类使用了类别名称
services
,对低级抽象类使用了
libraries

即:


你好也许我不清楚。该应用程序已经基于MVC,因此在我的示例中,
Invoice\u Handler
不是控制器,而是一个库,它实际上负责不同的发票相关操作,因此依赖于
数据库
&
电子邮件
类。我如何将这三者分开,以确保减少混淆?
/common
    /libraries (low-level)
        database.php
        session.php
        email.php
    /services (high-level)
        auth.php (dependent on database + session)
        invoicing.php (dependent on database + email)