2012-10-03 18 views
1

我想嘗試Yii,但我不想用它作爲我的主要框架。換句話說,我想使用我自己的框架,同時也使用Yii的一些功能。我想,爲了能夠從我的應用程序實例的Yii的班,我只是需要從我的應用程序註冊的Yii的自動加載磁帶機,可能是在一個類似的方式:如何在外部應用程序中註冊Yii的自動加載器?

spl_autoload_register 
(
    function ($classname) 
    { 
     YiiBase::autoload($className); 
    } 
); 

當然,我會需要要求或包括YiiBase類,所以我才調用先前的功能,我這樣做:

$yiiBase = $_SERVER['DOCUMENT_ROOT'].'/yii/framework/YiiBase.php'; 
require_once($yiiBase); 

但我得到一個「不能重新聲明類YiiBase」的錯誤。我錯過了什麼?

回答

3

1)不要直接包含YiiBase.php,包括yii.php。因爲yii.php包含一個用於所有框架代碼(甚至在YiiBase方法中)的類Yii

$yii = $_SERVER['DOCUMENT_ROOT'].'/yii/framework/yii.php'; 
require_once($yii); 

(和YiiBase.php包括在默認情況下yii.php)

2)註冊autoload handler這樣。 (Yii具有添加自定義自動加載處理程序的內置功能)。

$my_autoload = function($class) { ... }; 
// OR 
// $my_autoload = array('MyClass', 'my_autoload') 

YiiBase::registerAutoloader($my_autoload, true); 

第二個參數true告訴whether to append/prepend the new autoloader after/before the default Yii autoloader

如果YiiBase.php包括在內,那麼Yii的默認自動加載機也將被包括在內。無需在您的代碼中明確呼叫YiiBase::autoload()參考:檢查YiiBase.php文件中的最後一行

+0

它的工作,謝謝!不過,我不需要YiiBase :: registerAutoloader($ my_autoload,true)。它實際上給了我「不能重新聲明的類YiiBase」,如果我補充說。 –

0

您可以看看人們的某些方法integrating Yii with wordpress,您可能不需要執行 - >運行()應用程序,除非您需要控制器/路由,它還取決於您假裝的框架的哪些部分使用。

相關問題