我试图让Yii自动加载一个不遵循Yii约定的组件。有问题的库是Stripe,我将其移至Components文件夹中。我能够通过修改我的配置来自动加载主Stripe文件没问题:
'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
语句?如果我将所有文件重命名为他们的类名,它会起作用吗?
答案 0 :(得分:2)
是的,将文件重命名为类名会有所帮助。否则你必须自己要求上课。
答案 1 :(得分:2)
您还可以创建自己的自动加载器并将其注册为:Yii::registerAutoloader(array("AutoloderClass", "methodName"), $append);
第一个参数实际上是一个php回调,我使用了类和方法表示法,也可以是函数。这实际上依赖于第二个参数调用spl_autoload_register
- 在Yii自动加载器之前或之后。自动加载器应在index.php
之前$app->run()
注册。
可以在此处找到一些示例自动加载器(用于zend框架): http://www.yiiframework.com/extension/zendautoloader