Provides a finder for classy elements.
Run
$ composer require ergebnis/classy
Use Constructs::fromSource()
to collect classy constructs in source code:
use Localheinz\Classy\Construct;
use Localheinz\Classy\Constructs;
$source = <<<'PHP'
<?php
namespace Example;
class Foo {}
interface Bar {}
trait Baz {}
PHP;
/** @var Construct[] $constructs */
$constructs = Constructs::fromSource($source);
$names = array_map(function (Construct $construct) {
return $construct->name();
}, $constructs);
var_dump($names); // ['Example\Bar', 'Example\Baz', 'Example\Foo']
Use Constructs::fromDirectory()
to collect classy constructs in a directory:
use Localheinz\Classy\Construct;
use Localheinz\Classy\Constructs;
/** @var Construct[] $constructs */
$constructs = Constructs::fromDirectory(__DIR__ . '/example');
$names = array_map(function (Construct $construct) {
return $construct->name();
}, $constructs);
var_dump($names); // ['Example\Bar', 'Example\Bar\Baz', 'Example\Foo\Bar\Baz']
Please have a look at CHANGELOG.md
.
Please have a look at CONTRIBUTING.md
.
Please have a look at CODE_OF_CONDUCT.md
.
This package is licensed using the MIT License.
The algorithm for finding classes in PHP files in Constructs
has
been adopted from Zend\File\ClassFileLocator
(originally licensed under BSD-3-Clause).