🔍 Provides a finder for classy elements.
Switch branches/tags
Nothing to show
Clone or download
localheinz Merge pull request #58 from localheinz/feature/synchronize
Enhancement: Synchronize project tooling configuration with localheinz/repository
Latest commit 01ef6ff Dec 10, 2018

README.md

classy

Build Status codecov Latest Stable Version Total Downloads

Provides a finder for classy elements.

Installation

Run

$ composer require localheinz/classy

Usage

Collect classy constructs from source code

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']

Collect classy constructs from a directory

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']

Contributing

Please have a look at CONTRIBUTING.md.

Code of Conduct

Please have a look at CODE_OF_CONDUCT.md.

License

This package is licensed using the MIT License.

Credits

The algorithm for finding classes in PHP files in Constructs has been adopted from Zend\File\ClassFileLocator (originally licensed under BSD-3-Clause).