включая внешнюю библиотеку в Yii - PullRequest
9 голосов
/ 28 декабря 2011

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

#mylib.php

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

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

MyLib::foo();

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

Ответы [ 4 ]

17 голосов
/ 29 декабря 2011

Есть несколько способов.

  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. Добавить библиотеку в раздел импорта в вашем config / main.php:

    return array(           
        // Autoloading
        'import' => array(
            'application.lib.*',
            'application.components.*',
            'site.common.extentions.YiiMongoDbSuite.*',
        ),
    );
    
  3. Автозагрузка в любом месте вашего приложения:

    Yii::import('application.lib.*');
    
4 голосов
/ 28 декабря 2011

Поместите вашу библиотеку в папку поставщиков (в защищенной папке) предположим (все ваши классы находятся в папке MyLib) вам так:

Yii::import('application.vendors.MyLib.*');
2 голосов
/ 28 декабря 2011

Объясняется прямо здесь: http://www.yiiframework.com/doc/guide/1.1/en/extension.integration

1 голос
/ 14 июля 2014

Я использую собственный автозагрузчик 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'));
...