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