Download the PHP package v.chetkov/php-clean-architecture without Composer

On this page you can find all versions of the php package v.chetkov/php-clean-architecture. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package php-clean-architecture

To continue in English go to README-EN.md

PHP Clean Architecture

Инструмент для автоматизации контроля над качеством архитектуры приложений, написанных на PHP, а также для анализа и визуализации архитектурных метрик.

Идея его создания была навеяна книгой Роберта Мартина "Чистая Архитектура". Если еще не читал, можешь ознакомиться с ключевыми идеями, на которых базируется инструмент: https://habr.com/ru/post/504590/

Быстрый старт

Совместимость

Пакет можно подключать к проектам на PHP 7.4 и выше.

Сам анализатор умеет читать код с синтаксисом PHP 8.5 через AST. Это значит, что проверяемый проект может использовать современный PHP-синтаксис, а сам инструмент при этом остается совместимым с более старым runtime, начиная с PHP 7.4.

Конфигурация

Скопируйте образец конфига в корень проекта:

Все детали конфигурации подробно описаны в образце конфига: https://github.com/Chetkov/php-clean-architecture/blob/master/example.phpca-config.php

Основные секции конфига

Публичный и приватный API компонента

public_elements и private_elements описывают API компонента для других компонентов, а не запрет на использование элемента внутри его собственного компонента.

Например, ComponentA\Service может зависеть от ComponentA\Internal\Model. Это внутренняя зависимость компонента, она может отображаться в dependency graph как internal, но не считается private API violation.

А вот ComponentB\Service не должен зависеть от ComponentA\Internal\Model, если этот элемент не входит в публичный API ComponentA или явно указан в private_elements.

Legacy rate и прогресс миграции

Если проект постепенно переезжает из старой структуры в новую, root компонента можно пометить как legacy:

Все файлы, найденные в root с legacy: true, считаются legacy. Если ключ не указан, root считается modern. В отчете появляется прогресс модернизации: основной процент считается по физическим строкам PHP-файлов, а рядом показываются и строки кода, и количество UnitOfCode для всей системы, каждого компонента и каждого вложенного sub-отчета.

История отчетов и timeline

Если нужно видеть, как архитектура меняется от релиза к релизу или от CI-запуска к CI-запуску, включите историю:

dir лучше хранить вне reports_dir, потому что директория отчета пересоздается при каждой генерации. В history сохраняются компактные snapshots: дата, git metadata, summary, метрики компонентов, legacy/modernization, A/I данные и ребра графа компонентов для корневого отчета и всех вложенных sub-отчетов.

phpca-build-reports при включенной истории записывает новый snapshot и встраивает историю в self-contained HTML-отчет. Если нужно записать снимок без генерации UI, используйте phpca-check --record-history или включите history.collect_on_check.

Вложенные отчеты

Для больших систем один общий граф часто становится слишком шумным. В таких случаях архитектуру можно описывать рекурсивно: верхний уровень показывает крупные компоненты системы, а внутри каждого компонента можно описать слои, подкомпоненты или следующий уровень декомпозиции.

Компонент верхнего уровня может содержать sub-конфиг:

Формат sub такой же, как у обычного phpca-config.php. Такой файл можно запускать отдельно, а можно подключить из родительского конфига через require.

При запуске из родительского конфига:

Наследование задается явно:

Если inherit не указан, вложенный конфиг ничего не наследует. components не наследуются никогда.

Такой подход позволяет держать несколько удобных уровней архитектурного контроля:

Также полезно прочитать статьи:

Обнаружение исходников

Анализатор читает PHP-файлы через AST и определяет объявленные class, interface, trait и enum из содержимого файла. Поэтому имя элемента больше не обязано совпадать с путем по PSR-4: компонент может указывать на legacy-директорию или отдельный файл, а найденный символ будет привязан к компоненту по root path из конфига.

Если в файле нет объявленных символов, например это executable script, используется fallback по namespace root-а и относительному пути. При включенном vendor_based_components учитываются Composer psr-4, psr-0, classmap, files, autoload-dev и exclude-from-classmap.

Синтаксис PHP 8.5 поддерживается на уровне AST-парсинга: pipe operator, clone() с изменением свойств, #[NoDiscard], closures/first-class callables и casts в constant expressions, attributes on constants и final promoted properties.

CLI-команды

Все команды принимают путь к конфигу первым аргументом. Если путь не передан, используется phpca-config.php из текущего проекта.

PHPCA_ALLOWED_PATHS ограничивает анализ списком файлов. Это удобно для CI по измененным файлам. Значение передается как список путей, разделенных переводом строки.

PHPCA_REPORTS_DIR можно использовать в образцовом конфиге для переопределения reports_dir без изменения файла конфигурации.

phpca-check --record-history сохраняет архитектурный snapshot без генерации отчета. phpca-build-reports --with-history принудительно записывает snapshot даже если history.enabled не включен в конфиге.

phpca-debug-unmatched-files также принимает дополнительные пути после конфига. Если они переданы, команда сканирует только их:

Использование

  1. Формирование отчета для анализа.

Команда создает статический HTML-отчет. Отчет можно открыть локально в браузере без запуска сервера.

Путь к конфигу можно не передавать, если используется стандартный phpca-config.php в текущей директории.

Что есть в отчете

Отчет рассчитан не только на маленькие проекты, но и на большие кодовые базы, где важно быстро перейти от общей картины к конкретной зависимости.

Основные возможности:

Пример отчета на большом проекте:

  1. Check для CI.

Если код нарушает ограничения, заданные конфигом, команда выводит найденные проблемы и завершается с ошибкой. Рекомендуется добавить запуск phpca-check в CI, чтобы код, попавший в сборку, соответствовал архитектурным правилам проекта.

  1. Разрешенное состояние.

Команда сохраняет текущее состояние проекта и взаимосвязи между существующими классами в отдельный файл. При последующих запусках phpca-check проблемы, относящиеся к сохраненному состоянию, будут проигнорированы.

Чтобы phpca-check учитывал сохраненное состояние, в конфиге должны быть включены exclusions.allowed_state.enabled и указан путь к exclusions.allowed_state.storage.

Для suite-конфига команда проходит корневой конфиг и все вложенные sub-конфиги. Если вложенный конфиг наследует exclusions, его состояние сохраняется в отдельный файл, построенный от корневого storage по иерархии компонентов, например phpca-allowed-state/catalog/domain.php. Если во вложенном конфиге явно указан свой exclusions.allowed_state.storage, используется этот путь.

Это дает возможность подключать php-clean-architecture не только к новым проектам, но и к уже существующим проектам, где архитектурные проблемы нужно устранять постепенно.

  1. Отчет/Check по списку файлов

Если нужно проверить не весь проект, а только его часть, например список измененных файлов, можно передать ограничение через переменную окружения PHPCA_ALLOWED_PATHS.

Пример:

  1. Поиск файлов вне компонентов.

Команда показывает PHP-файлы, которые находятся в области сканирования, но не попали ни в один компонент и не исключены явно. Это удобно при первичной настройке конфига и при развитии большой системы: можно быстро увидеть файлы, для которых еще не принято архитектурное решение.

Если пути после конфига не переданы, команда использует PHPCA_ALLOWED_PATHS. Если и он пустой, команда выбирает область сканирования из конфига: для обычного конфига это общий родитель component roots, для вложенного sub-конфига - roots родительского компонента. Поведение можно переопределить секцией debug_scan_paths.

Если unmatched-файлы найдены, команда выводит их список и завершается с кодом 1; если все файлы покрыты компонентами или exclusions, выводит No unmatched files! и завершается с кодом 0.


All versions of php-clean-architecture with dependencies

PHP Build Version
Package Version
Requires php Version >=7.4
ext-json Version *
ext-mbstring Version *
nikic/php-parser Version ^5.7
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package v.chetkov/php-clean-architecture contains the following files

Loading the files please wait ...