Skip to content

Repository files navigation

PhpDepend

Build StatusDownloads this MonthLatest Stable VersionLicense

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

Donate

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

$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 & 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

<?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/

About

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

Topics

Resources

Stars

9 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages