跳转到内容

Phalcon自动加载

注意

所有类都以前缀命名Phalcon

自动加载异常

GitHub上的源码

  • 命名空间

    • Phalcon\Autoload
  • 使用

  • 继承

    \Exception

  • 实现

在Phalcon\Autoload中抛出的异常将使用此类

自动加载加载器

GitHub上的源码

  • 命名空间

    • Phalcon\Autoload
  • 使用

    • Phalcon\Events\AbstractEventsAware
  • 继承

    AbstractEventsAware

  • 实现

Phalcon自动加载器提供了一种简单的方法来自动加载类(命名空间或非命名空间)以及文件。它还支持扩展加载,允许用户加载具有不同扩展名(而非.php)的文件。

属性

/**
 * @var string|null
 */
protected $checkedPath;

/**
 * @var array
 */
protected $classes;

/**
 * @var array
 */
protected $debug;

/**
 * @var array
 */
protected $directories;

/**
 * @var array
 */
protected $extensions;

/**
 * @var string|callable
 */
protected $fileCheckingCallback = is_file;

/**
 * @var array
 */
protected $files;

/**
 * @var string|null
 */
protected $foundPath;

/**
 * @var bool
 */
protected $isDebug = false;

/**
 * @var bool
 */
protected $isRegistered = false;

/**
 * @var array
 */
protected $namespaces;

方法

public function __construct( bool $isDebug = bool );
加载器构造函数。

public function addClass( string $name, string $file ): Loader;
向内部集合添加一个类以进行映射

public function addDirectory( string $directory ): Loader;
添加一个目录供加载文件使用

public function addExtension( string $extension ): Loader;
添加一个扩展名供加载文件使用

public function addFile( string $file ): Loader;
添加一个文件到加载器中

public function addNamespace( string $name, mixed $directories, bool $prepend = bool ): Loader;

public function autoload( string $className ): bool;
自动加载已注册的类

public function getCheckedPath(): string | null;
获取加载器正在检查路径的路径

public function getClasses(): array;
返回当前在自动加载器中注册的类映射

public function getDebug(): array;
返回收集的调试信息

public function getDirectories(): array;
返回当前在自动加载器中注册的目录

public function getExtensions(): array;
返回在加载器中注册的文件扩展名

public function getFiles(): array;
返回当前在自动加载器中注册的文件

public function getFoundPath(): string | null;
获取找到类时的路径

public function getNamespaces(): array;
返回当前在自动加载器中注册的命名空间

public function isRegistered(): bool;
返回是否已注册

public function loadFiles(): void;
检查文件是否存在,然后通过虚拟require添加文件

public function register( bool $prepend = bool ): Loader;
注册自动加载方法

public function setClasses( array $classes, bool $merge = bool ): Loader;
注册类及其位置

public function setDirectories( array $directories, bool $merge = bool ): Loader;
注册可能找到“未找到”类的目录

public function setExtensions( array $extensions, bool $merge = bool ): Loader;
设置加载器在每次尝试定位文件时必须尝试的文件扩展名数组

public function setFileCheckingCallback( mixed $method = null ): Loader;
设置文件检查回调。

// Default behavior.
$loader->setFileCheckingCallback("is_file");

// Faster than `is_file()`, but implies some issues if
// the file is removed from the filesystem.
$loader->setFileCheckingCallback("stream_resolve_include_path");

// Do not check file existence.
$loader->setFileCheckingCallback(null);

public function setFiles( array $files, bool $merge = bool ): Loader;
注册“非类”文件,因此需要“require”。这对包含仅函数的文件非常有用

public function setNamespaces( array $namespaces, bool $merge = bool ): Loader;
注册命名空间及其相关目录

public function unregister(): Loader;
注销自动加载方法

protected function requireFile( string $file ): bool;
如果文件存在,则require它并返回true;否则返回false