brayniverse / classy

:mag: Provides a finder for classy elements.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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).

About

:mag: Provides a finder for classy elements.

License:MIT License


Languages

Language:PHP 96.5%Language:Makefile 1.8%Language:Shell 1.7%