我正在尝试导入 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/