Dark Mode

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

czproject/phpdepend

Repository files navigation

PhpDepend

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 8.0 or later and enabled Tokenizer extension (enabled by default from PHP 4.3.0).

Usage

parse($source); // getting result $phpdepend->getClasses(); // returns list of defined classes, interfaces & traits $phpdepend->getDependencies(); // returns list of required classes, interfaces & traits">$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 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

say("John"); '); var_dump($phpdepend->getClasses()); /* Output: array (1) { 'Greeting' } */ var_dump($phpdepend->getDependencies()); /* Output: array (3) { 'IGreeting', 'InvalidArgumentException', 'Greeting', } */">
$phpdepend = new CzProject\PhpDepend\PhpDepend;
$phpdepend->parse('

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/

About

Extracts list of dependencies (classes, interfaces & traits) from PHP file or code snippet.

Topics

Resources

Readme

License

View license

Stars

Watchers

Forks

Sponsor this project

Packages

Contributors