にサブフォルダーを作成MyNamespace
し/vendor/
(独自のライブラリの正しい場所ですか?)、アプリケーションのようにクラスを使用したいと考えてMyNamespace\Mvc\Router\MyCustomRouter
います。このライブラリを名前空間ベースのオートローディングに含めるにはどうすればよいですか?
質問する
10212 次
3 に答える
3
ロブの答えに加えて、カスタムライブラリを自動ロードするいくつかの他の方法
まず、フォルダ構造が psr0 に準拠していることを確認してください
例で使用されている神話上の psr0 準拠の MyNamespace ライブラリの典型的な構造
vendor/
MyNamespace/
lib/
MyNamespace/
FooClass.php
BarClass.php
を使用して Module.php ファイルからインクルードしますgetAutoloaderConfig
public function getAutoloaderConfig()
{
return array(
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
'MyNamespace' => __DIR__ . '/../../vendor/MyNamespace/lib/MyNamespace',
),
),
);
}
index.php
を使用して直接AutoloaderFactory
設定するStandardAutoloader
// Setup autoloading
require 'init_autoloader.php';
Zend\Loader\AutoloaderFactory::factory(array(
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
'MyNamespace' => __DIR__ . '/../vendor/MyNamespace/lib/MyNamespace',
),
)
));
./config/autoload/ ファイルでも同じことができます
<?php
// file ./config/autoload/namespaces.local.php
Zend\Loader\AutoloaderFactory::factory(array(
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
'MyNamespace' => __DIR__ . '/../../vendor/MyNamespace/lib/MyNamespace',
),
)
));
ライブラリを含める別の方法は、編集することですvendor/composer/autoload_namespaces.php
<?php
// autoload_namespaces.php generated by Composer
$vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);
return array(
'Zend\\' => $vendorDir . '/zendframework/zendframework/library/',
'MyNamespace\\' => $vendorDir . '/MyNamespace/lib/',
);
于 2013-03-28T12:10:39.820 に答える
1
セクションを次のように編集init_autoloader.php
して変更if ($zf2Path) {
します。
if ($zf2Path) {
if (isset($loader)) {
$loader->add('Zend', $zf2Path);
} else {
include $zf2Path . '/Zend/Loader/AutoloaderFactory.php';
Zend\Loader\AutoloaderFactory::factory(array(
'Zend\Loader\StandardAutoloader' => array(
'autoregister_zf' => true,
'namespaces' => array(
'MyNamespace' => __DIR__ . '/vendor/MyNamespace',
),
)
));
}
}
MyNamespace
セクション内にキーが追加されていることに注意してくださいZend\Loader\StandardAutoloader
。
于 2013-03-28T08:01:12.817 に答える
0
また、作曲家のオートローディングを使用することもできます
{
"autoload": {
"psr-0": {"MyNamespace\\": "vendor/MyNamespace/"}
}}
于 2014-03-13T07:34:53.007 に答える