php-extension-check/src/Extension/ExtensionInfo.php

78 lines
1.7 KiB
PHP

<?php
declare(strict_types=1);
namespace Fbrinker\ExtensionCheck\Extension;
use ReflectionExtension;
class ExtensionInfo
{
/** @var ReflectionExtension */
private $extensionReflection;
public function __construct(string $extension)
{
$this->extensionReflection = new ReflectionExtension($extension);
}
public function getClasses(): array
{
$classes = $this->extensionReflection->getClassNames();
\natcasesort($classes);
return $classes;
}
public function getFunctions(): array
{
$functionReflections = $this->extensionReflection->getFunctions();
if (empty($functionReflections)) {
return [];
}
$functions = [];
foreach ($functionReflections as $functionReflection) {
$functions[] = $functionReflection->getName();
}
\natcasesort($functions);
return $functions;
}
public function getConstants(): array
{
$constants = $this->extensionReflection->getConstants();
if (empty($constants)) {
return [];
}
$constants = array_keys($constants);
\natcasesort($constants);
return $constants;
}
public function getRequiredDependencies(): array
{
$dependencies = $this->extensionReflection->getDependencies();
if (empty($dependencies)) {
return [];
}
$requiredDependencies = [];
foreach ($dependencies as $dependency => $status) {
if ($status !== 'required') {
continue;
}
$requiredDependencies[] = $dependency;
}
\natcasesort($requiredDependencies);
return $requiredDependencies;
}
}