diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-08-04 05:09:04 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-08-04 05:43:32 +0900 |
| commit | 80631930a6ca7b64d96a89de61c8b63f302161a8 (patch) | |
| tree | dc5acf4a8dbe74b576ec7826206defa0e3f8fba1 /crates/shirabe-php-rpc/php/stubs/Composer/Repository/FilesystemRepository.php | |
| parent | 850b67c048bbf80d9739520d950f4dd1ed4190a5 (diff) | |
| download | php-shirabe-80631930a6ca7b64d96a89de61c8b63f302161a8.tar.gz php-shirabe-80631930a6ca7b64d96a89de61c8b63f302161a8.tar.zst php-shirabe-80631930a6ca7b64d96a89de61c8b63f302161a8.zip | |
feat(plugin): generate proxy stubs for the package and repository graph
Emit the eleven stubs a subscriber plugin's object-graph calls reach
(BasePackage through RootPackage, the installed-repository hierarchy,
RepositoryManager, InstallationManager). The generator learns the member
kinds these classes need: builtin interfaces contribute no closure entries,
public static properties are materialized, public instance properties
forward through __get/__set, __toString forwards like a plain method,
__clone throws (proxy clone semantics are still an open design question),
and a subclass stub may add interfaces to its inherited surface.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe-php-rpc/php/stubs/Composer/Repository/FilesystemRepository.php')
| -rw-r--r-- | crates/shirabe-php-rpc/php/stubs/Composer/Repository/FilesystemRepository.php | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/crates/shirabe-php-rpc/php/stubs/Composer/Repository/FilesystemRepository.php b/crates/shirabe-php-rpc/php/stubs/Composer/Repository/FilesystemRepository.php new file mode 100644 index 00000000..00e42ac6 --- /dev/null +++ b/crates/shirabe-php-rpc/php/stubs/Composer/Repository/FilesystemRepository.php @@ -0,0 +1,34 @@ +<?php + +// Generated by scripts/plugin-stub-generator; do not edit by hand. +// Proxy stub for Composer\Repository\FilesystemRepository: the public surface forwards to the Rust-side entity over RPC. + +namespace Composer\Repository; + +use Composer\Pcre\Preg; + +class FilesystemRepository extends WritableArrayRepository +{ + public static function safelyLoadInstalledVersions(string $path): bool + { + $installedVersionsData = @file_get_contents($path); + $pattern = <<<'REGEX' +{(?(DEFINE) + (?<number> -? \s*+ \d++ (?:\.\d++)? ) + (?<boolean> true | false | null ) + (?<strings> (?&string) (?: \s*+ \. \s*+ (?&string))*+ ) + (?<string> (?: " (?:[^"\\$]*+ | \\ ["\\0] )* " | ' (?:[^'\\]*+ | \\ ['\\] )* ' ) ) + (?<array> array\( \s*+ (?: (?:(?&number)|(?&strings)) \s*+ => \s*+ (?: (?:__DIR__ \s*+ \. \s*+)? (?&strings) | (?&value) ) \s*+, \s*+ )*+ \s*+ \) ) + (?<value> (?: (?&number) | (?&boolean) | (?&strings) | (?&array) ) ) +) +^<\?php\s++return\s++(?&array)\s*+;$}ix +REGEX; + if (is_string($installedVersionsData) && Preg::isMatch($pattern, trim($installedVersionsData))) { + \Composer\InstalledVersions::reload(eval('?>'.Preg::replace('{=>\s*+__DIR__\s*+\.\s*+([\'"])}', '=> '.var_export(dirname($path), true).' . $1', $installedVersionsData))); + + return true; + } + + return false; + } +} |
