Module

Struct Module 

Source
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: IssueCollection

Implementations§

Source§

impl Module

Source

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 a ThreadedInterner used for efficient string interning.
  • version - The PHP version guiding the parsing and analysis.
  • source - The PHP source code encapsulated in a Source struct.
  • 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.

Source

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 a ThreadedInterner for efficient string interning.
  • version - The PHP version used to guide parsing and analysis.
  • source - The PHP source code encapsulated in a Source struct.
  • options - The build options that control reflection and validation.
§Returns

A tuple containing:

  • A Module instance with the processed data (names, reflection, issues, etc.).
  • The Program representing 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.

Source

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 a ThreadedInterner used for efficient string handling during parsing.
§Returns

A Program representing the abstract syntax tree (AST) of the module.

Source

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 Clone for Module

Source§

fn clone(&self) -> Module

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Module

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for Module

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl PartialEq for Module

Source§

fn eq(&self, other: &Module) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for Module

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Eq for Module

Source§

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> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,