https://github.com/czproject/phpdepend
Extracts list of dependencies (classes, interfaces & traits) from PHP file or code snippet.
https://github.com/czproject/phpdepend
code-analysis php
Last synced: 3 months ago
JSON representation
Extracts list of dependencies (classes, interfaces & traits) from PHP file or code snippet.
- Host: GitHub
- URL: https://github.com/czproject/phpdepend
- Owner: czproject
- License: other
- Created: 2013-01-30T13:02:31.000Z (almost 13 years ago)
- Default Branch: master
- Last Pushed: 2023-03-31T09:02:56.000Z (almost 3 years ago)
- Last Synced: 2025-01-12T08:23:26.420Z (12 months ago)
- Topics: code-analysis, php
- Language: PHP
- Homepage:
- Size: 76.2 KB
- Stars: 9
- Watchers: 2
- Forks: 1
- Open Issues: 3
-
Metadata Files:
- Readme: readme.md
- License: license.md
Awesome Lists containing this project
README
PhpDepend
=========
[](https://github.com/czproject/phpdepend/actions)
[](https://packagist.org/packages/czproject/phpdepend)
[](https://github.com/czproject/phpdepend/releases)
[](https://github.com/czproject/phpdepend/blob/master/license.md)
Extracts list of dependencies (classes, interfaces & traits) from PHP file or code snippet.
Installation
------------
[Download a latest package](https://github.com/czproject/phpdepend/releases) or use [Composer](http://getcomposer.org/):
```
composer require czproject/phpdepend
```
PhpDepend requires PHP 8.0 or later and enabled [Tokenizer extension](http://www.php.net/manual/en/book.tokenizer.php) (enabled by default from PHP 4.3.0).
Usage
-----
``` php
$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
parse('
say("John");
');
var_dump($phpdepend->getClasses());
/* Output:
array (1) {
'Greeting'
}
*/
var_dump($phpdepend->getDependencies());
/* Output:
array (3) {
'IGreeting',
'InvalidArgumentException',
'Greeting',
}
*/
```
------------------------------
License: [New BSD License](license.md)
Author: Jan Pecha, https://www.janpecha.cz/