synga / inheritance-finder
This package can find classes which are extended, implemented by a certain class or is using a certain trait.
1.0.9
2016-05-08 15:35 UTC
Requires
- php: >=5.4
- nikic/php-parser: ^2.0
- symfony/finder: ~2.1|~3.0
Requires (Dev)
- phpunit/phpunit: 5.1.*
README
This package can find classes which are extended, implemented or is using a certain trait. It builds a cache and uses it to find the desired files.
##Usage
$config = new \Synga\InheritanceFinder\File\FileConfig();
$config->setApplicationRoot(__DIR__);
$config->setCacheDirectory(__DIR__);
$inheritanceFinder = Synga\InheritanceFinder\InheritanceFinderFactory::getInheritanceFinder($config);
$inheritanceFinder->findExtends('SomeNamespace\OtherNamespacePath\Class');
It will now find all classes which inherit from class SomeNamespace\OtherNamespacePath\Class
whithin your ApplicationRoot
directory
##Possible options:
findClass('full qualified namespace')
- Can locate a file with the given namespace in the given directoryfindExtends('full qualified namespace')
- Can locate multiple classes which inherit from the given class in the given directoryfindImplements('full qualified namespace')
- Can locate multiple classes which implement or inherit from the given interface in the given directoryfindTraitUse('full qualified namespace')
- Can locate multiple classes which uses the given trait in the given directoryfindMultiple('Classes [string or array of strings]', 'Interfaces [string or array of strings]', 'Traits [string or array of strings]')
- Can locate multiple classes at once, it uses the methods discribed above.
##Acknowledgements:
- Right now this package cannot handle multiple classes in one file. I will try to fix this in the near future.
- The first run will be slow, because it is indexing all the files in your project root. I'm thinking off a manner to make it faster. I am planning of using react php for this so we can use multiple processes.
- Don't use this code in production (you can use it FOR production, to build a cache of files). The performance results are strongly depending your hardware.