Class Yiisoft\YiiDevTool\Infrastructure\Composer\ComposerPackageUsageAnalyzer
| Inheritance | Yiisoft\YiiDevTool\Infrastructure\Composer\ComposerPackageUsageAnalyzer |
|---|
Public Methods
Method Details
| public mixed __construct ( Yiisoft\YiiDevTool\Infrastructure\Composer\ComposerPackage[] $packages, Yiisoft\YiiDevTool\Infrastructure\CodeUsage\CodeUsage[] $namespaceUsages ) | ||
| $packages | Yiisoft\YiiDevTool\Infrastructure\Composer\ComposerPackage[] | |
| $namespaceUsages | Yiisoft\YiiDevTool\Infrastructure\CodeUsage\CodeUsage[] | |
public function __construct(array $packages, array $namespaceUsages)
{
foreach ($packages as $package) {
if (!$package instanceof ComposerPackage) {
throw new InvalidArgumentException('$packages must be an array of ComposerPackage objects.');
}
}
foreach ($namespaceUsages as $namespaceUsage) {
if (!$namespaceUsage instanceof CodeUsage) {
throw new InvalidArgumentException('$namespaceUsages must be an array of CodeUsage objects.');
}
}
foreach ($packages as $package) {
$this->packages[$package->getName()] = $package;
}
foreach ($namespaceUsages as $namespaceUsage) {
$this->namespaceUsages[$namespaceUsage->getIdentifier()] = $namespaceUsage;
}
}
| public void analyze ( ) |
public function analyze(): void
{
foreach ($this->packages as $package) {
foreach ($package->getPSRNamespaces() as $packageNamespace) {
foreach ($this->namespaceUsages as $namespaceUsage) {
if (str_starts_with($namespaceUsage->getIdentifier(), "\\$packageNamespace")) {
$this->registerPackageUsage($package->getName(), $namespaceUsage->getEnvironments());
}
}
}
}
}
| public string[] getNamesOfPackagesUsedInSpecifiedEnvironment ( string $environment ) | ||
| $environment | string | |
| return | string[] |
Array of package names. |
|---|---|---|
public function getNamesOfPackagesUsedInSpecifiedEnvironment(string $environment): array
{
$result = [];
foreach ($this->packageUsages as $packageUsage) {
if ($packageUsage->usedInEnvironment($environment)) {
$result[] = $this->packages[$packageUsage->getIdentifier()]->getName();
}
}
return $result;
}
| public string[] getNamesOfPackagesUsedOnlyInSpecifiedEnvironment ( string $environment ) | ||
| $environment | string | |
| return | string[] |
Array of package names. |
|---|---|---|
public function getNamesOfPackagesUsedOnlyInSpecifiedEnvironment(string $environment): array
{
$result = [];
foreach ($this->packageUsages as $packageUsage) {
if ($packageUsage->usedOnlyInSpecifiedEnvironment($environment)) {
$result[] = $this->packages[$packageUsage->getIdentifier()]->getName();
}
}
return $result;
}
| public string[] getUnusedPackageNames ( ) | ||
| return | string[] |
Array of package names. |
|---|---|---|
public function getUnusedPackageNames(): array
{
$result = [];
foreach ($this->packages as $package) {
/**
* TODO: Implement support of packages that uses non-PSR autoload.
* It's difficult, but possible.
*
* For now, just skip them, because we don't know exactly
* if their dependencies are being used or not.
*/
if ($package->usesNonPSRAutoload()) {
continue;
}
/**
* TODO: Implement notices about packages that provide binaries.
*
* Such packages can be used as hand tools, so they cannot be removed automatically.
* They should be checked by a human.
*/
if ($package->providesBinaries()) {
continue;
}
/**
* TODO: Implement notices about plugins.
* They should be checked by a human.
*/
if ($package->isComposerPlugin()) {
continue;
}
$packageName = $package->getName();
if ($this->hasPackageUsage($packageName)) {
continue;
}
$result[] = $package->getName();
}
return $result;
}
Signup or Login in order to comment.