2011-12-27 43 views
9

Làm cách nào để gọi các chức năng thư viện này từ bất kỳ đâu trong ứng dụng Yii của tôi? Tôi có một thư viện:bao gồm thư viện bên ngoài trong Yii

#mylib.php 

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

và muốn để có thể gọi hàm này trong suốt ứng dụng Yii tôi:

MyLib::foo(); 

tôi không biết được nơi để đặt thư viện của tôi hay làm thế nào/nơi để import nó . Đây chỉ là một ví dụ về những gì tôi đang cố gắng làm nhưng tôi đang cố gắng tạo một thư viện có nhiều không gian tên để tôi có thể truy cập thư viện và có quyền truy cập vào tất cả các không gian tên sau khi nhập nó.

+1

[Sử dụng thư viện của bên thứ 3 trong Yii] (http://www.yiiframework.com/doc/guide/1.1/en/extension.integration) – Poe

Trả lời

17

Có là một số cách.

  1. Đăng ký thư viện autoloader:

    // 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. Thêm thư viện đến phần nhập khẩu trong cấu hình của bạn/main.php:

    return array(   
        // Autoloading 
        'import' => array(
         'application.lib.*', 
         'application.components.*', 
         'site.common.extentions.YiiMongoDbSuite.*', 
        ), 
    ); 
    
  3. tự động load bất cứ nơi nào trong ứng dụng của bạn:

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

Nơi thư viện của bạn trong thư mục nhà cung cấp (trong thư mục được bảo vệ) giả (tất cả các lớp học của bạn trong thư mục mylib) bạn làm như thế này:

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

Thêm vào đó, nếu bạn có nhiều file như thế này để bao gồm, chỉ cần đặt chúng trong '/ protected/components' Yii sẽ bao gồm tất cả các tệp trong thư mục này. – LotusH

1

Tôi sử dụng bộ nạp tự động của 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')); 
Các vấn đề liên quan