czproject / phpdepend
Extracts list of dependencies (classes, interfaces & traits) from PHP file or code snippet.
Fund package maintenance!
Other
Installs: 59 447
Dependents: 1
Suggesters: 0
Security: 0
Stars: 9
Watchers: 2
Forks: 1
Open Issues: 3
Requires
- php: >=5.6.0
- ext-tokenizer: *
Requires (Dev)
- nette/tester: ^2.0
README
Extracts list of dependencies (classes, interfaces & traits) from PHP file or code snippet.
Installation
Download a latest package or use Composer:
composer require czproject/phpdepend
PhpDepend requires PHP 5.6 or later and enabled Tokenizer extension (enabled by default from PHP 4.3.0).
Usage
$phpdepend = new CzProject\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 & traits
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 inextends
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 $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/