palantir/descriptor

dev-master 2023-05-16 02:24 UTC

This package is not auto-updated.

Last update: 2024-09-18 01:43:56 UTC


README

Palantir 是在反射类之上构建的流畅 API。其目的是提供一种强大且易于使用的方法来深入特定条件(参数等)。

实验性 API

这只是我试过的东西...谁知道这是否是个好主意(出于性能和/或用户体验的考虑)。底层使用了一系列新的集合对象和 FilterIterator

// Retrieves all methods for the `ClassDescriptor` class.
$methods = ClassDescriptor::for(ClassDescriptor::class)->methods();

// Retrieves _only_ methods which are public and named "isFinal."
$namedFinal = $methods->public()->name('isFinal');

// Retrieves all methods which are static or named "isFinal" (this leaves the original `$methods` variable alone).
$staticOrNamedFinal = $methods
    ->anyOf(
        $methods
            ->static()
            ->name('isFinal')
    );

// Outputs "7"
echo $methods->count(), PHP_EOL;

// Outputs "1"
echo $namedFinal->count(), PHP_EOL;

// Outputs "2"
echo $staticOrNamedFinal->count(), PHP_EOL;

// Results in 7 method names
foreach ($methods as $method) {
    echo $method->name(), PHP_EOL;
}

// Results in 1 method name
foreach ($namedFinal as $method) {
    echo $method->name(), PHP_EOL;
}

// Results in 2 method names
foreach ($staticOrNamedFinal as $method) {
    echo $method->name(), PHP_EOL;
}