Answer the question
In order to leave comments, you need to log in
PSR-0 or PSR-4, and how to properly build a project structure?
Hello. I recently got acquainted with the standards for writing code and, to be honest, I got a little confused in their description.
The first question that interests me is PSR-0 or PSR-4. As far as I understand, as of October 21, 2014, PSR-0 was marked as obsolete. Currently, it is recommended to use PSR-4 as a replacement, but PSR-1 and PSR-2 refer to PSR-0, and I somehow did not find any Russian-language information about PSR-3, as if there is no such standard.
The second question is related to the hierarchy according to the PSR-0 or PSR-4 standard.
The examples include the following:
\Doctrine\Common\IsolatedClassLoader => /path/to/project/lib/vendor/Doctrine/Common/IsolatedClassLoader.php
\Symfony\Core\Request => /path/to/project/lib/vendor/Symfony/Core/Request.php
\Zend\Acl => /path/to/project/lib/vendor/Zend/Acl.php
\Zend\Mail\Message => /path/to/project/lib/vendor/Zend/Mail/Message.php
<путь к проекту>/lib/vendor/<Наименование производителя>/(<Пространство имен>/)<Название класса>.php
<Наименование производителя>\(<Пространство имен>\)<Название класса>
vendor/
vendor_name/
package_name/
src/
Vendor_Name/
Package_Name/
ClassName.php # Vendor_Name\Package_Name\ClassName
tests/
Vendor_Name/
Package_Name/
ClassNameTest.php # Vendor_Name\Package_Name\ClassNameTest
./ROOT/ - ядро системы
./ROOT/classes/ - системные классы для работы ядра системы и дающие доступ к ядру из сторонних пакетов
./ROOT/configure/ - тут хранится все что связано с настройкой cms системы
./ROOT/kernel/ - тут лежат файлы самого ядра
./localization/ - тут лежат файлы локализации для системы и ее компонент и модулей. У них своя внутренняя иерархия.
./resources/ - тут лежат файлы ресурсов для работы компонент и модулей, а также все что получает cms система из вне или создает по средством работы самой системы, попадает сюда. Внутри каталога своя строгая иерархия.
./templates/ - тут лежат файлы с шаблонами страниц. к каждой странице сайта привязан один из этих шаблонов.
./components/ -компоненты.
./components/<имя компоненты>/ - По сути это программа которая имеет выходной класс обязательно унаследованный от системного. Обеспечивает подключение к странице основного контента. Грубо говоря это то что отображается в зоне контента на странице. Может быть настроен для разных страниц по своему. Имеет закрепленный за ним набор обязательных и необязательных параметров и позволяет выбирать шаблон для отображения. Обязателен для страницы и может быть только один на странице.
./modules/ - модули
./modules/<имя модуля>/ - по сути схож с компонентами, за исключением того что располагается в определенных блоках шаблона для каждой страницы.
./plugins/ - плагины
./plugins/<имя плагина>/ - по сути это код который в явном виде не используется в системе, но добавляет ей дополнительные возможности, как например плагин который подключает на странице нужную библиотеку jqwery
./utilities/ - тут лежат утилиты для работы с системой, например утилита обновления, миграции данных, проверки на ошибки и т.д.
./lib/ - тут лежат библиотеки которые используются в модулях, компонентах и плагинах.
./lib/<имя поставщика>/<пространство имен>/<имя файла>.php (соответствует пространству имен <имя поставщика>\<пространство имен>\<имя файла>)
./index.php - основной файл который запускается при обращении к сайту. Он является обработчиком запросов, запускает ядро и возвращает результат.
Answer the question
In order to leave comments, you need to log in
The first question that interests me is PSR-0 or PSR-4. As far as I understand, as of October 21, 2014, PSR-0 was marked as obsolete.
/config Глобальные настройки проекта.
/data Временные файлы. Например:
/data/cache Файлы кеша.
/data/logs Логи.
/data/tmp Прочие временные файлы.
/module Модули проекта. Например:
/module/Backend
/module/Backend/config Настройки модуля.
/module/Backend/src Файлы PHP модуля. Например:
/module/Backend/src/Backend/Path/To/ExampleClass.php
/module/Backend/test Unit-тесты модуля.
/module/Backend/view Шаблоны модуля.
/module/Frontend/...
/public/index.php
/public/css
/public/font
/public/img
/public/js
/vendor
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question