# code-snippets/4.0.0-beta.2/vendor/typisttech/imposter-plugin/src/AutoloadMerger.php

Code Snippets, version 4.0.0-beta.2. 41 lines.

- Page: https://pluginprobe.com/plugins/code-snippets/4.0.0-beta.2/code/vendor/typisttech/imposter-plugin/src/AutoloadMerger.php
- Raw: https://pluginprobe.com/plugins/code-snippets/4.0.0-beta.2/raw/vendor/typisttech/imposter-plugin/src/AutoloadMerger.php
- Modified: 2025-10-16T19:08:06+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/code-snippets/4.0.0-beta.2/code/vendor/typisttech/imposter-plugin/src/AutoloadMerger.php#L10-L20`.

```php
<?php

declare(strict_types=1);

namespace TypistTech\Imposter\Plugin;

use Composer\Package\RootPackageInterface;
use RuntimeException;
use TypistTech\Imposter\ImposterFactory;

class AutoloadMerger
{
    public static function run(RootPackageInterface $package): void
    {
        $autoload = $package->getAutoload();
        $autoload = array_merge_recursive($autoload, [
            'classmap' => static::getImposterAutoloads(),
        ]);

        $package->setAutoload($autoload);
    }

    /**
     * @return string[]
     * @todo [Help Wanted] Think of a better way to handle file not found during installation
     */
    protected static function getImposterAutoloads(): array
    {
        try {
            $cwd = getcwd();
            $imposter = ImposterFactory::forProject($cwd, ['typisttech/imposter-plugin']);

            return array_map(function ($path) use ($cwd): string {
                return str_replace($cwd . '/', '', $path);
            }, $imposter->getAutoloads());
        } catch (RuntimeException $exception) {
            return [];
        }
    }
}

```
