本文概述
- 注册命名空间
- 注册目录
- 注册类
- 注册文件
在Loader中, 如果根据程序中的需要添加了一个类, 则由于仅包含特定文件, 因此性能得以提高。该技术称为延迟初始化。
Phalcon \ Loader有4种方法来实现自动加载类:
- 注册命名空间
- 注册目录
- 注册类
- 注册文件
句法:
registerNamespaces()方法。
它采用一个关联数组, 其中键是名称空间前缀, 而它们的值是其类位置的目录。现在, 当加载程序尝试查找类名称空间分隔符时, 将替换为其目录分隔符。
注意:请始终在路径末尾添加斜杠。实作
<
?phpuse Phalcon\Loader;
// Creates the autoloader
$loader = new Loader();
// Register some namespaces
$loader->
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/srcmini.php
$srcmini = new \Example\Adapter\ srcmini ();
?>
注册目录在这种方法中, 类位于寄存器目录下。由于文件统计信息会增加以进行计算, 因此此过程的性能无效。
实作
<
?phpuse Phalcon\Loader;
// Creates the autoloader
$loader = new Loader();
// Register some directories
$loader->
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/srcmini.php
$srcmini = new \srcmini();
?>
注册类当项目放置在文件夹约定中对于使用类和路径访问文件无效时, 将使用此方法。这是最快的自动加载方法, 但不建议这样做, 因为维护成本很高。
实例
<
?phpuse Phalcon\Loader;
// Creates the autoloader
$loader = new Loader();
// Register some classes
$loader->
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/srcmini.php
$srcmini = new \srcmini();
?>
注册文件【Phalcon类自动装载器】此方法用于注册非类的文件。要注册文件, 我们需要使用。当文件仅具有功能时, 此方法非常有用。
实作
<
?phpuse Phalcon\Loader;
// Creates the autoloader
$loader = new Loader();
// Register some classes
$loader->
registerFiles(
[
'functions.php', 'arrayFunctions.php', ]
);
// Register autoloader
$loader->
register();
?>