korstiaan/nsautoload

Drupal 7.x 的命名空间自动加载器。

安装: 29

依赖: 1

建议者: 1

安全: 0

星星: 3

关注者: 1

分支: 0

开放问题: 0

类型:drupal-module

dev-master 2014-03-27 12:44 UTC

This package is not auto-updated.

Last update: 2024-09-14 12:03:45 UTC


README

Drupal 7.x 模块,可自动加载命名空间化的模块类。

Build Status

要求

  • 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_scoreCamelCase 的转换。例如

  • 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_scoreCamelCase 的转换外,它还允许您在命名空间中随机添加大写字母。这允许以下映射

  • 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 许可证。