mago_analyzer/plugin/libraries/stdlib/
mod.rs1pub mod array;
4pub mod closure;
5pub mod cookie;
6pub mod r#enum;
7pub mod filter;
8pub mod json;
9pub mod math;
10pub mod random;
11pub mod reflection;
12pub mod session;
13pub mod spl;
14pub mod string;
15pub mod url;
16
17use crate::plugin::Plugin;
18use crate::plugin::PluginMeta;
19use crate::plugin::PluginRegistry;
20
21pub struct StdlibPlugin;
23
24static META: PluginMeta = PluginMeta::new(
25 "stdlib",
26 "PHP Standard Library",
27 "Type providers for PHP built-in functions (strlen, array_*, json_*, etc.)",
28 &["standard", "std", "php-stdlib"],
29 true,
30);
31
32impl Plugin for StdlibPlugin {
33 fn meta(&self) -> &'static PluginMeta {
34 &META
35 }
36
37 fn register(&self, registry: &mut PluginRegistry) {
38 registry.register_function_provider(string::StrlenProvider);
39 registry.register_function_provider(string::SprintfProvider);
40 registry.register_function_provider(json::JsonEncodeProvider);
41 registry.register_function_provider(random::RandProvider);
42 registry.register_function_provider(random::RandomIntProvider);
43 registry.register_function_provider(random::RandomBytesProvider);
44 registry.register_function_provider(spl::IteratorToArrayProvider);
45 registry.register_function_provider(array::ArrayColumnProvider);
46 registry.register_function_provider(array::ArrayFilterProvider);
47 registry.register_function_provider(array::ArrayFlipProvider);
48 registry.register_function_provider(array::ArrayKeyExistsProvider);
49 registry.register_function_provider(array::ArrayMapProvider);
50 registry.register_function_provider(array::ArrayMergeProvider);
51 registry.register_function_provider(array::CompactProvider);
52 registry.register_function_provider(url::ParseUrlProvider);
53 registry.register_function_provider(filter::FilterVarProvider);
54 registry.register_function_provider(filter::FilterInputProvider);
55 registry.register_function_provider(math::MinProvider);
56 registry.register_function_provider(math::MaxProvider);
57 registry.register_function_provider(math::AbsProvider);
58 registry.register_function_provider(array::RangeProvider);
59
60 registry.register_function_assertion_provider(array::ArrayAllAssertionProvider);
61
62 registry.register_function_call_hook(cookie::SetCookieHook);
63 registry.register_function_call_hook(session::SessionSetSaveHandlerHook);
64 registry.register_function_call_hook(session::SessionSetCookieParamsHook);
65 registry.register_function_call_hook(math::IntdivHook);
66
67 registry.register_method_provider(closure::ClosureGetCurrentProvider);
68 registry.register_method_provider(r#enum::EnumCasesProvider);
69 registry.register_method_provider(reflection::ReflectionMethodGetNameProvider);
70 registry.register_method_provider(reflection::ReflectionMethodInvokeProvider);
71
72 registry.register_method_assertion_provider(reflection::ReflectionClassHasMethodAssertionProvider);
73 }
74}