Yii自动加载自定义组件

时间:2013-04-12 15:35:30

标签: php yii autoload stripe-payments

我试图让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语句?如果我将所有文件重命名为他们的类名,它会起作用吗?

2 个答案:

答案 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