2013-12-11 72 views
2

我想將我的自定義類「Authentication.php」添加到我的項目中,但我不明白我該怎麼做?Zend Framework 2 - 如何使用外部庫

我已經閱讀了許多有關外部庫的howto,但沒有任何工作。

ZendFramework /模塊/防火牆/ Module.php

class Module 
{ 
    public function onBootstrap(MvcEvent $e) 
    { 
     $eventManager  = $e->getApplication()->getEventManager(); 
     $moduleRouteListener = new ModuleRouteListener(); 
     $moduleRouteListener->attach($eventManager); 
    } 

    public function getConfig() 
    { 
     return include __DIR__ . '/config/module.config.php'; 
    } 

    public function getAutoloaderConfig() 
    { 
     return array(
      'Zend\Loader\StandardAutoloader' => array(
       'namespaces' => array(
        __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__, 
        'MyNamespace' => __DIR__ . '/../../vendor/MyNamespace/lib/MyNamespace', 
       ), 
      ), 
     ); 
    } 
} 

ZendFramework /供應商/ myNameSpace對象/ lib中/ myNameSpace對象 /Authentication.php

<?php 

class Authentication { 

public function test() 
{ 
    die('Work fine'); 
} 


} 

?> 

我怎麼能說我的外部的lib在我控制器。

非常感謝!

+0

如果你把你的類放在module/ModuleName/src/ModuleName /中,你的類必須有'namespace ModuleName'指令使用默認的自動加載器。它將可用調用新\ ModuleName \ Authentication(); – SmasherHell

+0

我想你忘了在'Authentication.php'中加入namespace部分 –

+0

感謝Mohamad,問題在於命名空間!再次,謝謝你! – Dimitri

回答

7

我嘗試這樣的:

1)

//module/Application/Module.php 
public function getAutoloaderConfig() 
{ 
    return array(
     'Zend\Loader\StandardAutoloader' => array(
      'namespaces' => array(
       __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__, 
       'Mynamespace' => __DIR__ . '/../../vendor/Mynamespace', 
      ), 
     ), 
    ); 
} 

2)

//vendor/Mynamespace/MyClass.php 
namespace Mynamespace; 
class MyClass 
{ 
    //... 
} 

3)我使用它,例如在我的控制器:

use Zend\Mvc\Controller\AbstractActionController; 
use Mynamespace\MyClass; 
class AdminController extends AbstractActionController 
{ 
    public function indexAction() 
    { 
     $myclass = new MyClass(); 
    } 
} 
+0

請求您回覆!你的代碼工作正常。謝謝你 – Dimitri

+0

不客氣;) –

+0

我做了同樣的描述,但我得到錯誤,我有這樣的文件夾:aws/aws-sdk-php/src/Aws,所以我在名稱空間中寫道:公共函數getAutoloaderConfig() { 返回陣列( '的Zend \裝載機\ StandardAutoloader'=>數組( '命名空間'=>數組( __NAMESPACE__ => __DIR__。 '/ SRC /'。__NAMESPACE__, 'AWS'= > __DIR__。'/../../vendor/aws/aws-sdk-php/src/Aws', ), ), ); } – user3911183

0

對於這種類型的庫,只需輸入application.config.php

<?php 
return array(
    'modules' => array(
     'ZendDeveloperTools', 
     'Application', 
     'YourLibrary' // <-- here 
     ... 
0

在composer.json文件在您application.config.php添加庫如下

"require": { 
      "php": ">=5.3.3", 
      "zendframework/zendframework": ">2.2.0rc1", 
      "doctrine/doctrine-orm-module": "0.7.*", 
      "zendframework/zend-developer-tools": "dev-master", 
      "twig/twig": ">=1.12.3", 

     } 

然後 下模塊陣列

'modules' => array(
     'Application', 
      'ZendDeveloperTools', 
      'ZfcTwig', 
      'DoctrineModule', 
      'DoctrineORMModule','yourdir', 

    ), 

所以做一些類似的事情。