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
的命名空间为MyModule
my_foo_module
的命名空间为MyFooModule
mymodule
的命名空间为Mymodule
您的类的位置
可以使用两种约定,一种遵循 PSR-0 标准,另一种更符合 Drupal 的约定
1. PSR-0
这个完全遵循 PSR-0 标准,例如
MyModule\Foo
位于/path/to/my_module/MyModule/Foo.php
Mymodule\Foo\Bar
位于/path/to/mymodule/Mymodule/Foo/Bar.php
Mymodule\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.inc
MyModule\Foo_Bar
位于/path/to/my_module/class/foo_bar.class.inc
MyModule\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 许可证。