Skip to main content

mago_analyzer/plugin/libraries/stdlib/
mod.rs

1//! PHP standard library providers.
2
3pub mod array;
4pub mod closure;
5pub mod r#enum;
6pub mod json;
7pub mod random;
8pub mod spl;
9pub mod string;
10pub mod url;
11
12use crate::plugin::Plugin;
13use crate::plugin::PluginMeta;
14use crate::plugin::PluginRegistry;
15
16/// Plugin providing type inference for PHP standard library functions.
17pub struct StdlibPlugin;
18
19static META: PluginMeta = PluginMeta::new(
20    "stdlib",
21    "PHP Standard Library",
22    "Type providers for PHP built-in functions (strlen, array_*, json_*, etc.)",
23    &["standard", "std", "php-stdlib"],
24    true,
25);
26
27impl Plugin for StdlibPlugin {
28    fn meta(&self) -> &'static PluginMeta {
29        &META
30    }
31
32    fn register(&self, registry: &mut PluginRegistry) {
33        registry.register_function_provider(string::StrlenProvider);
34        registry.register_function_provider(json::JsonEncodeProvider);
35        registry.register_function_provider(random::RandProvider);
36        registry.register_function_provider(random::RandomIntProvider);
37        registry.register_function_provider(random::RandomBytesProvider);
38        registry.register_function_provider(spl::IteratorToArrayProvider);
39        registry.register_function_provider(array::ArrayColumnProvider);
40        registry.register_function_provider(array::ArrayFilterProvider);
41        registry.register_function_provider(array::ArrayMergeProvider);
42        registry.register_function_provider(array::CompactProvider);
43        registry.register_function_provider(url::ParseUrlProvider);
44
45        registry.register_method_provider(closure::ClosureGetCurrentProvider);
46        registry.register_method_provider(r#enum::EnumCasesProvider);
47    }
48}