2

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

4

1 回答 1

3

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

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

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'

于 2013-11-10T08:28:43.420 回答