2013-04-12 125 views
2

我試圖讓Yii自動加載一個不遵循Yii約定的組件。有問題的庫是Stripe,我將它們移動到Components文件夾中。我能夠通過修改我的配置是這樣沒有問題得到它自動加載主條紋文件:Yii自動加載自定義組件

'import'=>array(
    'application.models.*', 
    'application.components.*', 
    'application.components.stripe.*', 
), 

的目錄結構如下:

Components 
---------- 
    | 
    ----> Stripe 
    | 
    ----> Stripe.php (Class Name = "Stripe") 
    ----> Customer.php (Class Name = "Stripe_Customer") 
    ----> Charge.php (Class Name = "Stripe_Charge") 
    ----> etc. 

卻沒有這個問題認識的Stripe類,但找不到Stripe_*命名的類。有沒有辦法讓Yii識別這種模式,還是我堅持在我的控制器中使用手冊require?如果我將所有文件重命名爲他們的類名,它會起作用嗎?

回答

2

是的,將文件重命名爲類名將有所幫助。否則,你必須自己要求課程。

+1

好的謝謝。那麼,「Yii Way」是否將文件命名爲與課程相同? –

+0

剛剛給了它,並重命名工作!謝謝。 –

+0

是的,這是yii的方式;)雖然這不是一個不好的做法,採用。 – Tim

2

您也可以創建自己的自動加載器並將其註冊爲:Yii::registerAutoloader(array("AutoloderClass", "methodName"), $append);
第一個參數實際上是一個php回調,我使用了類和方法符號,也可以是函數。這實際上是依據第二參數依次調用spl_autoload_register - 在Yii自動加載器之前或之後。自動加載器應在$app->run()之前在index.php中註冊。

一些樣品自動加載磁帶機(用於Zend框架)可以在這裏找到: http://www.yiiframework.com/extension/zendautoloader