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