ライブラリShanty_Mongo
は、名前空間を使用しない「古い」アンダースコアで区切られたライブラリです。ZF2 では、スタイルは同じ PSR-0 標準ですが、名前空間があります (そうShanty_Mongo
なりますShanty\Mongo
)。ただし、たとえばクラスマップを使用して、これらの古いスタイルをうまくロードできます。次に、ZF2 プロジェクト内でアンダースコアで区切られたクラスを使用できます。
このライブラリのモジュールを作成し、そのモジュールを./vendor
(「サードパーティの機能を提供するモジュール」の場合) の下に置くことをお勧めします。このモジュールでは、次のディレクトリ構造を作成できます (モジュールの名前は ShantyMongo と仮定します)。
./vendor/ShantyMongo/
library/
Module.php
autoload_classmap.php
autoload_function.php
autoload_register.php
このライブラリは、Shanty-Mongo git リポジトリのサブモジュールです。このファイルは、 ZF2 リポジトリのディレクトリ内のautoload_classmap.php
php スクリプトによって作成されたクラスマップです。次に、autoload_function.php は次のように単純なものにすることができます。classmap_generator.php
bin
<?php
return function ($class) {
static $map;
if (!$map) {
$map = include __DIR__ . '/autoload_classmap.php';
}
if (!isset($map[$class])) {
return false;
}
return include $map[$class];
};
そして autoload_register.php は次のようになります:
<?php
spl_autoload_register(include __DIR__ . '/autoload_function.php');
このモジュールがあることを ZF2 アプリケーションに知らせるには、module.php にShantyMongo\Module
クラスを入力する必要があります。次のようなもので十分です。
<?php
namespace ShantyMongo;
use Zend\Module\Consumer\AutoloaderProvider;
class Module implements AutoloaderProvider
{
public function getAutoloaderConfig()
{
return array(
'Zend\Loader\ClassMapAutoloader' => array(
__DIR__ . '/autoload_classmap.php',
)
);
}
}
「ShantyMongo」をモジュール配列に追加すると、ZF2application.config.php
内でこのサードパーティ ライブラリのオートローダーがセットアップされます。その後、次のようにモデルを使用できます。
<?php
namespace Dummy\Model;
class Dummy extends Shanty_Mongo_Document {
public function setConnections ($connections) {
Shanty_Mongo::addConnections($connections);
}
}
ShantyMongo は名前空間を使用しないため、その use ステートメントはもうありません。