📅  最后修改于: 2021-01-07 09:17:57             🧑  作者: Mango
加载程序是在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();
?>