yii导入目录分隔符

时间:2013-11-09 19:50:43

标签: yii import separator

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

1 个答案:

答案 0 :(得分:3)

正如tinyByte所提到的,你将不得不改变你的文件/目录名。没有简单的方法。

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

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)以编写一些转义逻辑以使用“。”解析目录名称。您将无法使用“。”目录名称。在他们中间。

如果由于某种原因无法更改目录名称,只需创建一个没有点的符号链接

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'