Skip to main content

mago_analyzer/plugin/provider/
property.rs

1//! Property-related providers for the analyzer plugin system.
2
3use mago_codex::metadata::class_like::ClassLikeMetadata;
4use mago_codex::metadata::property::PropertyMetadata;
5
6use crate::plugin::provider::Provider;
7
8/// Provider for checking if a property should be considered initialized.
9///
10/// This allows plugins to mark properties as "initialized" even without explicit
11/// initialization in the constructor. Useful for ORMs with auto-generated fields
12/// like Doctrine's `#[ORM\GeneratedValue]`, or DI frameworks with `#[Inject]` attributes.
13pub trait PropertyInitializationProvider: Provider {
14    /// Check if a property should be considered initialized.
15    ///
16    /// Returns `true` if the property is considered initialized by this provider,
17    /// `false` to let other providers or default logic decide.
18    fn is_property_initialized(&self, class_metadata: &ClassLikeMetadata, property_metadata: &PropertyMetadata)
19    -> bool;
20}