php dependency analysis
1.0.0
PHP DA เป็นเครื่องมือสำหรับการตรวจสอบและสนับสนุนการพึ่งพาภายในโครงการของคุณชัดเจน
ตัวอย่างเช่น:
[
' dependencies ' => [
' Domain ' => null ,
' Application ' => [ ' Domain ' ],
' Infrastructure ' => [ ' Domain ' , ' Application ' ]
]
];นั่นหมายถึงคลาสทั้งหมดจากเนมสเปซ โดเมน ควรใช้คลาสเฉพาะจากเนมสเปซนี้และอาจเป็นผู้ขาย (กำหนดค่าไว้)
คลาสทั้งหมดจาก แอปพลิเคชัน สามารถใช้คลาสจาก โดเมน และเนมสเปซ ของแอปพลิเคชัน แต่ไม่ได้มาจาก โครงสร้างพื้นฐาน ฯลฯ
หากบางคลาสที่ใช้การพึ่งพาไม่พอใจกราฟการพึ่งพาที่กำหนดคุณจะให้ข้อผิดพลาดในรายงาน:
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
มันจะมีประโยชน์ในบางกรณีเช่น:
ติดตั้งไลบรารีโดยใช้นักแต่งเพลง
composer require paglliac/dependency-analysis
เพิ่มไฟล์กำหนดค่า config.php ไปยังรูทของโครงการของคุณ:
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 ' ]
];เรียกใช้การตรวจสอบการพึ่งพา:
/vendor/bin/php-da -c config.php [files filter]
ตัวเลือก:
-c หรือ --config เป็นตัวเลือกด้วยพา ธ สัมพัทธ์ไปยังไฟล์ configข้อโต้แย้ง:
[files filter] รายการไฟล์สำหรับการวิเคราะห์มันมีประโยชน์ในการใช้ใน CI รวมกับ -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