Loader
    
            
            in package
            
        
    
    
    
Singleton responsible for calling static constructors on classes that provide them.
Table of Contents
Constants
- DEFAULT_CLASS_POLICIES = [\NxtLvlSoftware\StaticConstructors\Policy\Class\SameNameAsClassPolicy::class, \NxtLvlSoftware\StaticConstructors\Policy\Class\PhpStyleConstructorPolicy::class]
- The default class policies for finding static constructor methods.
- DEFAULT_METHOD_POLICIES = [\NxtLvlSoftware\StaticConstructors\Policy\Method\NoArgumentsMethodPolicy::class, \NxtLvlSoftware\StaticConstructors\Policy\Method\Visibility\PrivateVisibilityPolicy::class]
- The default method policies for determining validity of static constructor candidate methods.
Properties
- $classPolicies : array<string|int, mixed>
- $instance : self|null
- $methodPolicies : array<string|int, mixed>
- $proxiedLoaders : array<int, callable(class-string): void>
Methods
- autoload() : void
- Our custom autoload function. We loop over the registered loaders to load the class then call the static constructor on the class if it was loaded.
- init() : void
- Start the loader if an instance does not already exist.
- started() : bool
- Check if {@link \NxtLvlSoftware\StaticConstructors\Loader::init()} has been called.
- __construct() : mixed
- The entry to static class constructors.
- callStaticConstructor() : void
- Look for a suitable static constructor on a class and call it.
- checkLoadedClasses() : void
- Check classes already declared in the runtime for static constructor methods and call them.
- overrideSplLoaders() : void
- Store all the currently registered autoload functions and register this class as the primary autoloader.
Constants
DEFAULT_CLASS_POLICIES
The default class policies for finding static constructor methods.
    public
        mixed
    DEFAULT_CLASS_POLICIES
    = [\NxtLvlSoftware\StaticConstructors\Policy\Class\SameNameAsClassPolicy::class, \NxtLvlSoftware\StaticConstructors\Policy\Class\PhpStyleConstructorPolicy::class]
    
    
    
DEFAULT_METHOD_POLICIES
The default method policies for determining validity of static constructor candidate methods.
    public
        mixed
    DEFAULT_METHOD_POLICIES
    = [\NxtLvlSoftware\StaticConstructors\Policy\Method\NoArgumentsMethodPolicy::class, \NxtLvlSoftware\StaticConstructors\Policy\Method\Visibility\PrivateVisibilityPolicy::class]
    
    
    
Properties
$classPolicies read-only
    private
        array<string|int, mixed>
    $classPolicies
    
    
    
    
$instance
    private
    static    self|null
    $instance
     = null
    
    
    
$methodPolicies read-only
    private
        array<string|int, mixed>
    $methodPolicies
    
    
    
    
$proxiedLoaders
    private
        array<int, callable(class-string): void>
    $proxiedLoaders
     = []
    
    
    
Methods
autoload()
Our custom autoload function. We loop over the registered loaders to load the class then call the static constructor on the class if it was loaded.
    public
                    autoload(class-string $className) : void
    Parameters
- $className : class-string
init()
Start the loader if an instance does not already exist.
    public
            static        init([array<int, StaticConstructorClassPolicy>> $classPolicies = self::DEFAULT_CLASS_POLICIES ][, array<int, StaticConstructorMethodPolicy>> $methodPolicies = self::DEFAULT_METHOD_POLICIES ][, bool $checkLoadedClasses = true ]) : void
    Parameters
- $classPolicies : array<int, StaticConstructorClassPolicy>> = self::DEFAULT_CLASS_POLICIES
- 
                    Policy class names for determining if a class has a valid static constructor method defined. 
- $methodPolicies : array<int, StaticConstructorMethodPolicy>> = self::DEFAULT_METHOD_POLICIES
- 
                    Policy class names for determining validity of candidate static constructor methods. 
- $checkLoadedClasses : bool = true
- 
                    Should the loader check for a static constructor on classes that are already declared in the runtime? 
started()
Check if {@link \NxtLvlSoftware\StaticConstructors\Loader::init()} has been called.
    public
            static        started() : bool
    Return values
bool__construct()
The entry to static class constructors.
    private
                    __construct(array<int, StaticConstructorClassPolicy>> $classPolicies, array<int, StaticConstructorMethodPolicy>> $methodPolicies, bool $checkLoadedClasses) : mixed
    This class can only exist as a singleton so that we only override the existing autoloader's if this is the first instance constructed.
Parameters
- $classPolicies : array<int, StaticConstructorClassPolicy>>
- $methodPolicies : array<int, StaticConstructorMethodPolicy>>
- $checkLoadedClasses : bool
callStaticConstructor()
Look for a suitable static constructor on a class and call it.
    private
                    callStaticConstructor(class-string $className) : void
    Parameters
- $className : class-string
checkLoadedClasses()
Check classes already declared in the runtime for static constructor methods and call them.
    private
                    checkLoadedClasses() : void
    overrideSplLoaders()
Store all the currently registered autoload functions and register this class as the primary autoloader.
    private
                    overrideSplLoaders() : void