Странное поведение import и setPath of Alias

Предварительное обсуждение найденных ошибок перед отправкой их авторам фреймворка, а также внесение новых предложений.
Ответить
mitallast
Сообщения: 207
Зарегистрирован: 2010.02.21, 20:40
Откуда: Голицыно
Контактная информация:

Странное поведение import и setPath of Alias

Сообщение mitallast »

Есть на сервере директория, добавленная в php.ini как include_path, в которой например могут быть расположены расширения PEAR, Zend и прочие прелести.
Предположим, что мне нужен модуль IAdminModule , расположенный в той несчастной папке с Pear и прочим в директории iadmin.

Ожидал увидеть конфиг типа

Код: Выделить всё

"modules" => (
  "iamdin" => array(
    "class" => "iadmin/IAdminModule.php"
  )
)
 
но выдал exception с неверным алиасом.

Попробовал так

Код: Выделить всё

"modules" => (
  "iamdin" => array(
    "class" => "iadmin/IAdminModule"
  )
)
 
но Yii понял такую запись, как необходимость загрузить класс с именем "iamdin/IAdminModule" , чего конечно у него не получилось. Собственно уже сдесь ошибка, / - символ неверный для имени класса.

Попробовал

Код: Выделить всё

"modules" => (
  "iamdin" => array(
    "class" => "iadmin.IAdminModule"
  )
)
 
надеялся обмануть, что заменит точку на слеш , да припишет ".php" в конец стоки. Ничего не вышло конечно =(

Пока оставил эту строчку в последнем варианте, решил поиграться с Yii::setPathOfAlias, записав

Код: Выделить всё

Yii::setPathOfAlias("iadmin" , "iadmin");
 
где первый атрибут - алиас, а второй вполне реальный путь к директории с точки зрения include . Есть лишь слабая догадка, почему не получилось...

Единственным работоспособным способом оказалось прописать полный путь типа

Код: Выделить всё

Yii::setPathOfAlias("iadmin" , "/var/www/include/iadmin");
 
Работает, но на боевом сервере папки инклюда расположены по-другому, теряет смысл настройка include_path.
Тестил на своей домашней машине, ubuntu 10.04 , PHP Version 5.3.2 , Apache/2.2.14.

Да, простой инклюд include "iadmin/IAdminModule.php" работает. Все регистры проверил.
Ответить