yii导入目录分隔符

yii导入目录分隔符,yii,import,separator,Yii,Import,Separator,我正在尝试导入facebook SDK,但目录名是“php-SDK-3.2.2”,当尝试导入时-“Yii::import('ext.Yii-facebook-opengraph.php-SDK-3.2.2');“SDK版本正在中断导入。正如tinyByte提到的,您必须更改文件/目录名。没有简单的解决办法 Yii导入函数调用在Yii::base中定义的getPathFalias,如下所示 public static function getPathOfAlias($alias) { if

我正在尝试导入facebook SDK,但目录名是“php-SDK-3.2.2”,当尝试导入时-“Yii::import('ext.Yii-facebook-opengraph.php-SDK-3.2.2');“SDK版本正在中断导入。

正如tinyByte提到的,您必须更改文件/目录名。没有简单的解决办法

Yii导入函数调用在Yii::base中定义的getPathFalias,如下所示

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来解析字符串,除非您修改core(或扩展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 as中使用和引用
Yii::import('ext.Yii-facebook-opengraph.php-sdk-3-2-2'

您必须删除这些点,如果找到更好的方法,请与我们分享