2011-12-27 18 views
9

में बाहरी लाइब्रेरी समेत मैं अपने वाईआई ऐप में कहीं भी इन लाइब्रेरी फ़ंक्शंस को कैसे कॉल कर सकता हूं? मैं एक पुस्तकालय है:में वाईआई

#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. रजिस्टर पुस्तकालयों '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. अपने config/main.php में आयात अनुभाग के लिए पुस्तकालय जोड़ें:

    return array(   
        // Autoloading 
        'import' => array(
         'application.lib.*', 
         'application.components.*', 
         'site.common.extentions.YiiMongoDbSuite.*', 
        ), 
    ); 
    
  3. Autoloading कहीं भी अपने आवेदन में:

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

प्लेस विक्रेताओं फ़ोल्डर में अपने पुस्तकालय (संरक्षित फ़ोल्डर के अंतर्गत) मान (अपने सभी वर्गों MyLib फ़ोल्डर में हैं) आप इस तरह कार्य करें:

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

इस के अलावा, आप फ़ाइलों का एक बहुत कुछ है, तो इसे शामिल करने के लिए, बस उन्हें '/ संरक्षित/घटक' में रखें Yii इस निर्देशिका में सभी फ़ाइलों को शामिल करेगा। – LotusH

1

मैं वाईआई के अपने ऑटोलोडर का उपयोग करता हूं;

//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'));