我正在创建一个带有命名空间类的 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 没有帮助......