1

我正在创建一个带有命名空间类的 Yii 项目。我所有的类都存储在 projectRoot/protected/src/myNamespace 在这个目录中我创建了类MyNamespace/Amazon/Amazon.php

控制器看起来像这样

use MyNamespace\Amazon\Amazon;
...
function actionIndex() {
    echo Amazon::getBucketFromKey('key');
}

没关系,自动加载工作完美,并且加载了这个类。

Amazon.php 看起来像这样:

 class AmazonServer {

    public static function getBucketFromKey($key) {
    $criteria = new CDbCriteria;
    $criteria->select = 'bucket';
    $criteria->condition = 'userkey = :userkey AND enabled=:enabled';
    $criteria->params = array(':userkey' => $key, ':enabled' => 1);
    $bucket = Amazonuser::model()->find($criteria);

    if ($bucket === null) {
        throw new BucketNotFoundException('Bucket not found for this key.');
    } else {
        return $bucket->attributes['bucket'];
    }
  }
....

当我运行这个脚本时,Yii 返回一个错误

 include(/var/www/yii3/vl/protected/config/../src/MyNamespace/Amazon/CDbCriteria.php): failed to open stream: No such file or directory

问题在于$criteria = new CDbCriteria;

为什么会发生这种情况?如何正确调用全局命名空间中的 CDbCriteria 和其他类?

调用新的 \CDbCriteria 没有帮助......

4

0 回答 0