📜  Phalcon类自动加载器

📅  最后修改于: 2021-01-07 09:17:57             🧑  作者: Mango

Phalcon级自动装带器

加载程序是在Phalcon \ Loader目录下找到的类。此类根据自动加载的规则由一些预定义规则组成。它还处理错误,例如,如果某个类不存在,但在程序的任何部分调用了该类,则将调用特殊处理程序进行处理。

Loader中,如果根据程序中的需要添加了一个类,则由于仅包含特定文件,因此可以提高性能。此技术称为延迟初始化

Phalcon \ Loader有4种方法来实现自动加载类:

  • 注册命名空间
  • 注册目录
  • 注册课程
  • 注册文件

注册命名空间

当使用命名空间或外部库组织我们的代码时,将调用此方法。

句法:

registerNamespaces()方法。

它采用一个关联数组,其中键是名称空间前缀,而它们的值是其类位置的目录。现在,当加载程序尝试查找类名称空间分隔符时,将替换为其目录分隔符。

注意:始终在路径末尾添加斜杠。

实作

registerNamespaces(
    [
       'Example\Base'    => 'vendor/example/base/',
       'Example\Adapter' => 'vendor/example/adapter/',
       'Example'         => 'vendor/example/',
    ]
);
// Register autoloader
$loader->register();
// The required class will automatically include the
// file vendor/example/adapter/javatpoint.php
$javatpoint = new \Example\Adapter\ javatpoint ();
?>

注册目录

在这种方法中,类位于寄存器目录下。由于文件统计信息会增加以进行计算,因此此过程的性能无效。

实作

registerDirs(
    [
        'library/MyComponent/',
        'library/OtherComponent/Other/',
        'vendor/example/adapters/',
        'vendor/example/',
    ]
);

// Register autoloader
$loader->register();

// The required class will automatically include the file from
// the first directory where it has been located
// i.e. library/OtherComponent/Other/Javatpoint.php
$javatpoint = new \Javatpoint();
?>

注册课程

当项目放置在文件夹约定中对于使用类和路径访问文件无效时,将使用此方法。这是最快的自动加载方法,但不建议使用,因为维护成本很高。

实作

registerClasses(
    [
        'Some'         => 'library/OtherComponent/Other/Some.php',
        'Example\Base' => 'vendor/example/adapters/Example/BaseClass.php',
    ]
);

// Register autoloader
$loader->register();

// Requiring a class will automatically include the file it references
// in the associative array
// i.e. library/OtherComponent/Other/Javatpoint.php
$javatpoint = new \Javatpoint();
?>

注册文件

此方法用于注册非类的文件。要注册文件,我们使用require 。当文件仅具有功能时,此方法非常有用。

实作

registerFiles(
    [
        'functions.php',
        'arrayFunctions.php',
    ]
);

// Register autoloader
$loader->register();

?>