PhpDepend
, (*1)
Extracts list of dependencies (classes, interfaces & traits) from PHP file or code snippet., (*2)
, (*3)
Installation
Download a latest package or use Composer:, (*4)
composer require czproject/phpdepend
PhpDepend requires PHP 8.0 or later and enabled Tokenizer extension (enabled by default from PHP 4.3.0)., (*5)
Usage
``` php
$phpdepend = new CzProject\PhpDepend\PhpDepend;, (*6)
// file parsing
$phpdepend->parseFile('MyClass.php');, (*7)
// code snippet parsing
$source = file_get_contents('MyClass.php');
$phpdepend->parse($source);, (*8)
// getting result
$phpdepend->getClasses(); // returns list of defined classes, interfaces & traits
$phpdepend->getDependencies(); // returns list of required classes, interfaces & traits, (*9)
Recognized dependencies in PHP code:
* inherited classes (`extends ParentClass`)
* implemented interfaces (`implements InterfaceA, InterfaceB`)
* used traits (`class MyClass { use Trait; }`)
* classes of created instances (`new Object()`)
* static classes (`StaticClass::staticMethod()`, `StaticClass::$staticProperty`)
Ignored dependencies:
* `self::` - `self` means "this class" → useless (no dependency, class is defined in same file)
* `parent::` - parent class is specified in `extends`
* `static::` - `static` is dynamic-`self` → means "this class", parent or descendant (if exists)
Recognized defined classes (output of `$phpdepend->getClasses()`):
* defined classes (`class MyClass`)
* defined interfaces (`interface MyInterface`)
* defined traits (`trait MyTrait`)
Example
-------
``` php
<?php
$phpdepend = new CzProject\PhpDepend\PhpDepend;
$phpdepend->parse('
<?php
class Greeting implements IGreeting
{
public function say($name)
{
if (!$name) {
throw new InvalidArgumentException("Invalid name");
}
return "Hello $name";
}
}
$greeting = new Greeting;
$greeting->say("John");
');
var_dump($phpdepend->getClasses());
/* Output:
array (1) {
'Greeting'
}
*/
var_dump($phpdepend->getDependencies());
/* Output:
array (3) {
'IGreeting',
'InvalidArgumentException',
'Greeting',
}
*/
License: New BSD License
Author: Jan Pecha, https://www.janpecha.cz/, (*10)