2011-12-27 2 views
9

Yii 앱의 어디에서나 라이브러리 함수를 어떻게 호출 할 수 있습니까? 나는 도서관이 있습니다Yii의 외부 라이브러리 포함

#mylib.php 

<?php 
class MyLib { 
    public function foo() 
    { 
     echo "hello!"; 
    } 
} 

을 내 YII 응용 프로그램을 통해이 함수를 호출 할 수 있도록하려면 :

MyLib::foo(); 

나도 몰라 어디에 내 라이브러리를 연결하거나 어디를 가져 오는 방법/. 이것은 내가하려는 일의 예일뿐입니다. 그러나 라이브러리에 액세스하여 가져온 후에 모든 네임 스페이스에 액세스 할 수 있도록 여러 네임 스페이스가있는 라이브러리를 만들려고합니다.

+1

[YII에서 사용하는 제 3의 라이브러리 (http://www.yiiframework.com/doc/guide/1.1/en/extension.integration)이 외에도 – Poe

답변

17

몇 가지 방법이 있습니다.

  1. 등록 라이브러리 '오토로더 :

    // Enable Zend autoloader 
    spl_autoload_unregister(array('YiiBase', 'autoload')); // Disable Yii autoloader 
    Yii::import('site.common.lib.*'); // Add Zend library to include_path 
    Yii::import('site.common.lib.Zend.Loader.Autoloader', true); // Require Zend autoloader 
    spl_autoload_register(array('Zend_Loader_Autoloader', 'autoload')); // Register Zend autoloader 
    spl_autoload_register(array('YiiBase', 'autoload')); // Register Yii autoloader 
    
  2. 은 설정/main.php에 가져 오기 섹션에 도서관을 추가하기 :

    return array(   
        // Autoloading 
        'import' => array(
         'application.lib.*', 
         'application.components.*', 
         'site.common.extentions.YiiMongoDbSuite.*', 
        ), 
    ); 
    
  3. 자동 로딩 어디에서나 응용 프로그램에서 :

    Yii::import('application.lib.*'); 
    
4

장소 랬 (보호 된 폴더 아래) 공급 업체의 폴더에 라이브러리 (모든 클래스 MYLIB 폴더에) 이 같은 수행

Yii::import('application.vendors.MyLib.*'); 
+0

, 당신은 많은 파일이있는 경우 이것을 포함 시키려면 '/ protected/components'에 넣으십시오. Yii는이 디렉토리의 모든 파일을 포함합니다. – LotusH

1

나는 Yii의 자체 오토로더를 사용합니다.

//include auto loader class of vendor 
    require dirname(__FILE__).'/mollie-api-php/src/Mollie/API/Autoloader.php'; 
    //Now register vendor autoloader class to Yii autoloader 
    Yii::registerAutoloader(array('Mollie_API_Autoloader','autoload')); 
관련 문제