PHP DA est un outil de vérification et des dépendances de support dans votre projet Clear.
Par exemple:
[
' dependencies ' => [
' Domain ' => null ,
' Application ' => [ ' Domain ' ],
' Infrastructure ' => [ ' Domain ' , ' Application ' ]
]
];Cela signifie que toutes les classes de l'espace de noms de domaine doivent utiliser uniquement les classes de cet espace de noms, et éventuellement le vendeur (il est configuré).
Toutes les classes de l'application peuvent utiliser des classes à partir du domaine et des espaces de noms d'application , mais pas à partir de l'infrastructure , etc.
Si certaines classes utilisant des dépendances non satisfaites du graphique de dépendance définie, vous donnez des erreurs dans le rapport:
Have been analyzed 4 files
You have dependency problems in 2 files in your project:
Class ApplicationTrackingService have errors:
- Class ApplicationTrackingService using class InfrastructureShipImplementation which not satisfy dependency graph
Class DomainCargo have errors:
- Class DomainCargo using class ApplicationTrackingService which not satisfy dependency graph
- Class DomainCargo using class InfrastructureShipImplementation which not satisfy dependency graph
Il peut être utile dans certains cas par exemple:
Installez la bibliothèque à l'aide du compositeur
composer require paglliac/dependency-analysis
Ajoutez un fichier de configuration config.php à root de votre projet:
return [
/**
* REQUIRED
* Dependencies Graph
*
* Description of valid dependencies in project
*
* This config means
*
* Package (every class in namespace) Domain can use only classes from namespace Domain or vendor dependencies
* Package Application can use only classes from namespaces Domain, Application or vendor dependencies
* Package Infrastructure can use only classes from namespaces Domain, Application, Infrastructure or vendor dependencies
*/
' dependencies ' => [
' Domain ' => null ,
' Application ' => [ ' Domain ' ],
' Infrastructure ' => [ ' Domain ' , ' Application ' ]
],
/**
* REQUIRED
* Source path where dependencies will be analyzed
*/
' path ' => __DIR__ ,
/**
* OPTIONAL
*
* Make available to use vendor dependencies in whole project
*
* true - all project classes can use vendor dependencies
* false - all project can not use vendor dependencies
*/
' skip_vendor_dir ' => true ,
/**
* OPTIONAL
* Flag that define how to do when some files placed in namespaces not presented in Dependencies Graph
*
* true - mark class as having incorrect dependencies
* false - skip this file
*
* For example, in directory we have namespace SomeNamespace with class SomeNamespaceSomeClass
* if flag is true, it will be marked as incorrect file, if flag is true, this file wil be marked as correct
*/
' fail_on_non_presented_namespace ' => false ,
/**
* OPTIONAL
* Flag for php parser, correct values:
*
* PhpParserParserFactory::PREFER_PHP7 - 1 (default)
* PhpParserParserFactory::PREFER_PHP5 - 2
* PhpParserParserFactory::ONLY_PHP7 - 3
* PhpParserParserFactory::ONLY_PHP5 - 4
*/
' php_version ' => PhpParser ParserFactory:: PREFER_PHP7 ,
/**
* OPTIONAL
*
* List of allowed files extensions, all files with other extensions will be skipped from analysis
*
* Default - ['php']
*/
' allowed_extensions ' => [ ' php ' ]
];Exécuter la validation de la dépendance:
/vendor/bin/php-da -c config.php [files filter]
Options:
-c ou --config est obligatoire l'option avec le fichier de chemin relatif à la configurationArguments:
[files filter] Liste des fichiers pour l'analyse, il est utile d'utiliser dans CI combiner avec - Diff Have been analyzed 4 files
You have dependency problems in 2 files in your project:
Class ApplicationTrackingService have errors:
- Class ApplicationTrackingService using class InfrastructureShipImplementation which not satisfy dependency graph
Class DomainCargo have errors:
- Class DomainCargo using class ApplicationTrackingService which not satisfy dependency graph
- Class DomainCargo using class InfrastructureShipImplementation which not satisfy dependency graph