korstiaan / nsautoload
Drupal 7.x 的命名空间自动加载器。
Requires
- php: >=5.3.3
- composer/installers: *
Requires (Dev)
Suggests
- symfony/class-loader: Allows wrapping autoloader into Symfony's APC cached ApcClassLoader
This package is not auto-updated.
Last update: 2024-09-14 12:03:45 UTC
README
Drupal 7.x 模块,可自动加载命名空间化的模块类。
要求
- Drupal 7.x
- PHP 5.3.3+
安装
下载模块
推荐使用 Composer 来安装 Nsautoload。只需将以下内容添加到您的 composer.json
{
"minimum-stability": "dev",
"require": {
"korstiaan/nsautoload": "dev-master"
}
}
现在更新 Composer 并安装新添加的要求及其依赖项
$ php composer.phar update korstiaan/nsautoload
如果一切顺利,并且 composer/installers 完成了其工作,Nsautoload 将安装到 modules/nsautoload。如果您不希望它在那里,或者它不是您的 Drupal 根目录的一部分,请将其链接到您选择的文件夹。
使用 Composer
使用 Composer 意味着包含其自动加载器。将以下内容添加到 Drupals 的 settings.php
// /path/to/sites/default/settings.php require '/path/to/vendor/autoload.php';
2. 使用 composer_loader
只需遵循其自述文件。
启用 Nsautoload
有两种方式可以启用 Nsautoload
1. 在 settings.php 中添加几行(推荐)
将以下内容添加到您的项目的 settings.php
<?php // /path/to/sites/default/settings.php use Nsautoload\Nsautoload; $loader = new Nsautoload(); $loader->register();
2. 将其作为 Drupal 模块启用。
转到 site/all/modules 并在 http://yourdomain.com/admin/modules/list 上启用它。(如果您使用 voiture,只需将 nsautoload 添加到 cnf/shared/modules.php)
用法
为了使 Nsautoload 能够找到您的类,必须遵循某些约定
命名您的命名空间
您的命名空间必须是您的模块名称,使用 under_score 到 CamelCase 的转换。例如
my_module的命名空间为MyModulemy_foo_module的命名空间为MyFooModulemymodule的命名空间为Mymodule
您的类的位置
可以使用两种约定,一种遵循 PSR-0 标准,另一种更符合 Drupal 的约定
1. PSR-0
这个完全遵循 PSR-0 标准,例如
MyModule\Foo位于/path/to/my_module/MyModule/Foo.phpMymodule\Foo\Bar位于/path/to/mymodule/Mymodule/Foo/Bar.phpMymodule\Foo\Bar_Crux位于/path/to/mymodule/Mymodule/Foo/Bar/Crux.php
2. Drupal-style(已弃用)
遵循此约定时,一个类位于 module_name/class/_class_.class.inc。只能使用两级命名空间。示例
MyModule\Foo位于/path/to/my_module/class/foo.class.incMyModule\Foo_Bar位于/path/to/my_module/class/foo_bar.class.incMyModule\Foo\Bar无法使用此约定映射。
此约定还添加了另一个命名空间命名策略以实现 BC。除了 under_score 到 CamelCase 的转换外,它还允许您在命名空间中随机添加大写字母。这允许以下映射
MyOldModule\Foo映射到/path/to/myoldmodule/class/foo.class.inc
APC 缓存
为了缓存 Nsautoload 的自动加载映射,您可以将它包装到 Symfony 的 ApcClassLoader 中。
首先将 Symfony 的 ClassLoader 组件添加到您的 composer.json
{
"require": {
"symfony/class-loader": "dev-master"
}
}
安装它
$ php composer.phar update symfony/class-loader
然后更改您项目 settings.php 中 Nsautoload 的行,使其看起来像这样
<?php // /path/to/sites/default/settings.php use Nsautoload\Nsautoload; $loader = new Nsautoload(); $apcLoader = new Symfony\Component\ClassLoader\ApcClassLoader(md5(__DIR__), $loader); $apcLoader->register(true);
然后您就完成了!
许可证
Nsautoload 使用 MIT 许可证。