2011-12-27 5 views
9

Как я могу назвать эти библиотечные функции из любого места в приложении Yii? У меня есть библиотека:, включая внешнюю библиотеку в Yii

#mylib.php 

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

и хочу, чтобы иметь возможность вызывать эту функцию на протяжении всей моей Yii приложения:

MyLib::foo(); 

Я не знаю, где разместить свою библиотеку или как/где импортировать , Это всего лишь пример того, что я пытаюсь сделать, но я пытаюсь создать библиотеку с несколькими пространствами имен, чтобы я мог получить доступ к библиотеке и получить доступ ко всем пространствам имен после их импорта.

+1

[Использование библиотек 3 участника в Yii] (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')); 
Смежные вопросы