2013-11-09 6 views
1

Я пытаюсь импортировать файл facebook SDK, но имя каталога «php-sdk-3.2.2», а при попытке импортировать - «Yii :: import (« ext.yii-facebook-opengraph.php- СДК-3.2.2');» версия SDK нарушает импорт.yii import directory separator

+1

вы должны удалить точки, если вы нашли лучший способ, поделитесь с нами – tinybyte

ответ

2

Как указано в tinyByte, вам придется изменить имя файла/каталога. Простейшего пути нет.

функция

Yii Импорт вызовов getPathOfAlias, которая определена в Yii :: основание, как показано ниже

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'