2011-12-27 26 views
9

¿Cómo puedo llamar a estas funciones de la biblioteca desde cualquier lugar de mi aplicación Yii? Tengo una biblioteca:incluida la biblioteca externa en Yii

#mylib.php 

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

y quiero ser capaz de llamar a esta función a través de mi aplicación Yii:

MyLib::foo(); 

No sé dónde colocar mi biblioteca o cómo/dónde importarlo . Esto es solo un ejemplo de lo que trato de hacer, pero estoy tratando de crear una biblioteca que tenga múltiples espacios de nombres para poder acceder a la biblioteca y tener acceso a todos los espacios de nombres después de importarla.

+1

[Uso de las bibliotecas 3 ª parte en Yii] (http://www.yiiframework.com/doc/guide/1.1/en/extension.integration) – Poe

Respuesta

17

Hay son varias formas cargador automático

  1. Registro bibliotecas:

    // 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. Agregar biblioteca a la sección de importación en su config/main.php:

    return array(   
        // Autoloading 
        'import' => array(
         'application.lib.*', 
         'application.components.*', 
         'site.common.extentions.YiiMongoDbSuite.*', 
        ), 
    ); 
    
  3. carga automática en cualquier lugar de su aplicación:

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

Coloque su biblioteca en la carpeta de los vendedores (en la carpeta protegida) suponiendo (todas las clases están en carpeta MYLIB) lo hace así:

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

Además de esto, si usted tiene una gran cantidad de archivos así para incluir, simplemente ponerlos en '/ protected/components' Yii incluirá todos los archivos en este directorio. – LotusH

1

Uso el propio autocargador de 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')); 
Cuestiones relacionadas