pub struct Module {
pub source: Source,
pub names: ResolvedNames,
pub parse_error: Option<ParseError>,
pub reflection: Option<CodebaseReflection>,
pub issues: IssueCollection,
}Expand description
Module represents a processed PHP source code module.
It encapsulates the original source, resolved names, any parsing errors, optional reflection data (if enabled), and a collection of semantic issues.
Fields§
§source: Source§names: ResolvedNames§parse_error: Option<ParseError>§reflection: Option<CodebaseReflection>§issues: IssueCollectionImplementations§
Source§impl Module
impl Module
Sourcepub fn build(
interner: &ThreadedInterner,
version: PHPVersion,
source: Source,
options: ModuleBuildOptions,
) -> Self
pub fn build( interner: &ThreadedInterner, version: PHPVersion, source: Source, options: ModuleBuildOptions, ) -> Self
Builds a Module from a given PHP source.
This convenience function parses the PHP source code to generate an abstract syntax tree (AST), resolves names, optionally performs reflection and/or semantic validation based on the provided build options, and collects any issues encountered during analysis.
Internally, it delegates to [build_with_ast] and discards the AST.
§Arguments
interner- A reference to aThreadedInternerused for efficient string interning.version- The PHP version guiding the parsing and analysis.source- The PHP source code encapsulated in aSourcestruct.options- The build options controlling reflection and validation.
§Returns
A new Module instance containing the resolved names, any parse errors, optional reflection data,
and a collection of issues.
Sourcepub fn build_with_ast(
interner: &ThreadedInterner,
version: PHPVersion,
source: Source,
options: ModuleBuildOptions,
) -> (Self, Program)
pub fn build_with_ast( interner: &ThreadedInterner, version: PHPVersion, source: Source, options: ModuleBuildOptions, ) -> (Self, Program)
Builds a Module from a given PHP source and returns the associated AST.
This function performs the complete module processing workflow:
- Parses the PHP source to generate an AST (
Program). - Resolves symbol names.
- Optionally performs reflection and/or semantic validation based on the provided build options.
- Collects any issues encountered during analysis.
§Arguments
interner- A reference to aThreadedInternerfor efficient string interning.version- The PHP version used to guide parsing and analysis.source- The PHP source code encapsulated in aSourcestruct.options- The build options that control reflection and validation.
§Returns
A tuple containing:
- A
Moduleinstance with the processed data (names, reflection, issues, etc.). - The
Programrepresenting the parsed abstract syntax tree (AST) of the source.
This is useful when the AST is required immediately before moving the module to another context (e.g., across threads) so that the cost of re-parsing can be avoided.
Sourcepub fn parse(&self, interner: &ThreadedInterner) -> Program
pub fn parse(&self, interner: &ThreadedInterner) -> Program
Parses the module’s source code to generate an abstract syntax tree (AST).
For performance reasons, the AST is not stored within the module. If an AST is needed later, this method re-parses the source code on demand.
§Arguments
interner- A reference to aThreadedInternerused for efficient string handling during parsing.
§Returns
A Program representing the abstract syntax tree (AST) of the module.
Sourcepub const fn category(&self) -> SourceCategory
pub const fn category(&self) -> SourceCategory
Retrieves the category of the module’s source.
This method extracts the source category (e.g., user-defined, built-in, external) from the module’s source identifier.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Module
impl<'de> Deserialize<'de> for Module
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for Module
impl StructuralPartialEq for Module
Auto Trait Implementations§
impl Freeze for Module
impl RefUnwindSafe for Module
impl Send for Module
impl Sync for Module
impl Unpin for Module
impl UnwindSafe for Module
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more