Различать библиотеки?(Структура каталогов) - PullRequest
1 голос
/ 25 августа 2011

Итак, краткий обзор структуры каталогов веб-приложения, над которым я сейчас работаю:

/app
  /libraries
    User_Input.php
    Database.php
    InvoiceHandler.php

Как вы думаете, InvoiceHandler немного странно в этой коллекции? Я уверен, что да.

До недавнего времени я игнорировал необходимость различать де-факто библиотеки, которые на самом деле являются средним уровнем между моим приложением и другими службами (такими как постоянное хранилище), и классами кода, которые я написал сам, который содержит пользовательская логика для моего приложения (например, Invoice_Handler в этом случае).

Но по мере роста моего приложения это создает все больше беспорядка. На сегодняшний день я не видел хороших примеров по этому вопросу, и у меня недостаточно опыта, чтобы самому прийти к выводу:

Что условности и здравый смысл говорят о разделении этих двух определенных и столь явно различающихся классов?

Ответы [ 3 ]

0 голосов
/ 25 августа 2011

Этот вопрос немного расплывчатый, и приведенные в качестве примера имена файлов мало что о них объясняют.Однако я скажу, что вам нужно сгруппировать ваши классы в структуру, которая имеет смысл.

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

Классы, которые я использовал, сильно отличаются (по крайней мере, я так думаю) от ваших, но выясно видеть, что они сгруппированы в логическую структуру.

0 голосов
/ 31 августа 2011

Я закончил разделять свои библиотеки в зависимости от того, какой уровень абстракции они содержали.В поисках лучшего названия высокоуровневой абстракции я использовал для них имя категории services и сохранил с libraries для низкоуровневых классов абстракции.

Т.е.:

/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)
0 голосов
/ 25 августа 2011

Вы можете использовать следующую структуру:

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