2

我试图让 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控制器中的手动语句卡住了?如果我将所有文件重命名为它们的类名,它会起作用吗?

4

2 回答 2

2

您还可以创建自己的自动加载器并将其注册到: Yii::registerAutoloader(array("AutoloderClass", "methodName"), $append);.
第一个参数实际上是一个 php 回调,我使用类和方法表示法,也可以是函数。这实际上spl_autoload_register根据第二个参数按顺序调用 - 在 Yii 自动加载器之前或之后。Autoloader 应该在index.php之前注册$app->run()

一些示例自动加载器(用于 zend 框架)可以在这里找到: http ://www.yiiframework.com/extension/zendautoloader

于 2013-04-12T16:45:37.890 回答
2

是的,将文件重命名为类名会有所帮助。否则,您必须自己要求课程。

于 2013-04-12T15:58:25.957 回答