czproject/phpdepend

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

Fund package maintenance!
Other

v2.0.0 2023-03-31 08:58 UTC

This package is auto-updated.

Last update: 2024-03-01 00:08:46 UTC


README

Build Status Downloads this Month Latest Stable Version License

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