Extracts list of dependencies (classes, interfaces & traits) from PHP file or code snippet.
Download a latest package or use Composer:
composer require czproject/phpdepend
PhpDepend requires PHP 8.0 or later and enabled Tokenizer extension (enabled by default from PHP 4.3.0).
$phpdepend = newCzProject\PhpDepend\PhpDepend;
// file parsing$phpdepend->parseFile('MyClass.php');
// code snippet parsing$source = file_get_contents('MyClass.php');
$phpdepend->parse($source);
// getting result$phpdepend->getClasses(); // returns list of defined classes, interfaces & traits$phpdepend->getDependencies(); // returns list of required classes, interfaces & traitsRecognized 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::-selfmeans "this class" → useless (no dependency, class is defined in same file)parent::- parent class is specified inextendsstatic::-staticis 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)
<?php$phpdepend = newCzProject\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/