yii 导入目录分隔符

标签 yii import separator

我正在尝试导入 facebook SDK,但目录名称是“php-sdk-3.2.2”,当尝试导入时 -“Yii::import('ext.yii-facebook-opengraph.php-sdk-3.2. 2');"SDK版本破坏了导入。

最佳答案

正如tinyByte提到的,您必须更改文件/目录名称。没有简单的方法可以解决这个问题。

Yii Import 函数调用在 Yii::base 中定义的 getPathOfAlias,如下

public static function getPathOfAlias($alias)
{
    if(isset(self::$_aliases[$alias]))
        return self::$_aliases[$alias];
    elseif(($pos=strpos($alias,'.'))!==false)
    {
        $rootAlias=substr($alias,0,$pos);
        if(isset(self::$_aliases[$rootAlias]))
            return self::$_aliases[$alias]=rtrim(self::$_aliases[$rootAlias].DIRECTORY_SEPARATOR.str_replace('.',DIRECTORY_SEPARATOR,substr($alias,$pos+1)),'*'.DIRECTORY_SEPARATOR);
        elseif(self::$_app instanceof CWebApplication)
        {
            if(self::$_app->findModule($rootAlias)!==null)
                return self::getPathOfAlias($alias);
        }
    }
    return false;
}

正如你所看到的,它使用 strpos 来解析字符串,除非你修改核心(或扩展 Yii::Base)来编写一些转义逻辑来解析带有 '.' 的目录名称。您将无法使用带有“.”的目录名称在他们之中。

如果由于某种原因无法更改目录名称,只需创建一个不带点的符号链接(symbolic link)

ln -s /path/to/extensions/yii-facebook-opengraph/php-sdk-3.2.2/ /path/to/extensions/yii-facebook-opengraph/php-sdk-3-2-2/

并在 Yii 中引用为 Yii::import('ext.yii-facebook-opengraph.php-sdk-3-2-2'

关于yii 导入目录分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19882306/

相关文章:

mysql - 先前答案的所有应用程序都会失败 -#1062 - key '1' 的重复条目 'primary'

python - 无法在 Mac OS X 上导入 wx(Python)

R - 用特定符号分隔,垂直裸露,|

php - 标准条件;逻辑转换 (a+b)(c+d) 到 ((w ? x) ? y) ? z

Yii - 模型单元测试上传表单

testing - 如何在 Yii 中对 Controller 进行单元测试

import - Angular2 CLI Socket.io(第 3 方库导入)

android - 将 String 转换为 Double 时无效的 double

ios - tableView 中的自定义分隔符

javascript - 添加 css 和 javascript 到 Yii 的 CHtml 和其他属性