Composer 対応のサードパーティ ライブラリを ZF2 インスタンスに追加する
サードパーティ ライブラリを追加する正しい方法は、Composer を使用することです。
例)ZfcUserを Zend Framework 2 アプリケーションに追加する場合は、次のコマンドを使用します。
composer require zf-commons/zfc-user:dev-master
これにより、github からコードがダウンロードされ、モジュール名を your: に追加するだけで済みます/config/application.config.php
。
他のサードパーティ ライブラリを ZF2 インスタンスに追加する
サード パーティのライブラリが Composer に対応していない場合は、モジュールを作成して Zend Framework 2 インスタンスに追加できます。
ステップ1
/vendor/MyModule/Module.php
<?php
namespace MyModule;
use Zend\ModuleManager\Feature\AutoloaderProviderInterface;
class Module implements AutoloaderProviderInterface
{
public function getAutoloaderConfig()
{
return array(
'Zend\Loader\ClassMapAutoloader' => array(
__DIR__ . '/autoload_classmap.php',
),
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
__NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
),
),
);
}
}
これが基本的に提供するのは、サードパーティのコードを次のファイルに登録する方法ですautoload_classmap.php
。
ステップ2
/vendor/MyModule/autoload_classmap.php
<?php
return array(
'MyModule\VendorLibrary' => __DIR__ . '/src/MyModule/VendorLibrary.php',
);
ステップ 3
サードパーティ コードは次の場所にある必要があります。
/vendor/MyModule/src/MyModule/VendorLibrary.php
そして、次のようなものを読むことができます:
<?php
namespace MyModule;
class VendorLibrary
{
public function sayHi($name)
{
return "Hi there, $name!";
}
// your 3rd party code ...
}
ステップ 4
新しいモジュールを に追加しますapplication.config.php
。
/config/application.config.php
<?php
return array(
'modules' => array(
// your other modules here ...
'MyModule'
),
'module_listener_options' => array(
'config_glob_paths' => array(
'config/autoload/{,*.}{global,local}.php',
),
'module_paths' => array(
'./module',
'./vendor',
),
),
);
使用法
コントローラーでは、次のようなベンダー クラスを使用します。
$vendor = new \MyModule\VendorLibrary();
$hi = $vendor->sayHi('John');
require_once() を使用する方がはるかに簡単ですが、次の理由からお勧めできません。
- クラス階層と場所の予測可能性と構造を提供しません
- また、インクルード パスに注意し、サード パーティの機能を必要とするすべてのコントローラーに require_once が存在することを確認する必要があります。
- クラス(Magentoスタイル)などのオーバーライドは許可されていません。
お役に立てれば!