Не определяются свойства у BaseController

Темы, не касающиеся фреймворка, но относящиеся к программированию в целом.
Ответить
andry
Сообщения: 224
Зарегистрирован: 2009.11.08, 16:52

Не определяются свойства у BaseController

Сообщение andry »

Решил создать базовый контроллер и от него наследовать другие контроллеры приложения. Базовый контроллер расположен тут /protected/components/BaseController.php

всё бы ничего, но когда прописываю свойства выдаёт сообщения
Parse error: parse error, expecting `','' or `';' in C:wampwwwmysiteprotectedcomponentsBaseController.php on line 4
Содержание BaseController.php

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

<?php
class BaseController extends CController {

 public $theme = Yii::app()->theme->name;

}
?>
хотя если за место

public $theme = Yii::app()->theme->name;

указать такую строчку

public $countpage = '55';

всё в порядке.
Также выдаёт ошибку в случаи указании что-то из этого:

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

 public $webroot = Yii::getPathOfAlias('webroot');
 public $baseUrl = Yii::app()->baseUrl;
 public $baseUrl = Yii::app()->request->baseUrl;
 public $baseUrl = Yii::app()->theme->baseUrl;
 public $baseUrl = Yii::app()->getbaseUrl;
 public $baseUrl = Yii::app()->getBaseUrl(true);
 public $theme = Yii::app()->theme;
 public $theme = Yii::app()->theme->name;
 
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Не определяются свойства у BaseController

Сообщение samdark »

В PHP нельзя присваивать переменным выражения при их объявлении. Используйте BaseController::init().
andry
Сообщения: 224
Зарегистрирован: 2009.11.08, 16:52

Re: Не определяются свойства у BaseController

Сообщение andry »

спасибо

если я правильно понимаю, нужно сделать так

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

class BaseController extends CController {

        public function baseUrl()
        {
           return Yii::app()->getBaseUrl(true);
        }
}
 
а потом в любом месте вывожу так

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

echo BaseController::baseUrl(); 
проверил работает, правда не совсем удобно, передача идёт не через переменную как хотелось бы, а через метод с указанием контроллера. Хотя в прочем и так вполне нормально.
Остаётся что под каждое выражение что выше писал, оборачивать в отдельный метод.

Кстати, вот ещё один небольшой вопросик правда не по теме. Создаю приложение состоящее из нескольких модулей, каждый модуль в отдельной директории, к примеру модуль новости
/protected/modules/news/

в этой директории есть ещё вложенная поддиректория messages/ вот полный путь /protected/modules/news/messages/
для чего она?
как я понимаю она несёт тоже представление что и эта /protected/messages/

но если я кладу в модульную директорию файл messages/ru/news.php и его описываю, а вот в шаблоне не удаётся вывести перевод.
Видит только тут /protected/messages/ru/news.php

млин, сумбурно наверное описал..

очень бы хотелось чтобы каждый модуль имел в своей директории lang файл перевода.
Чтобы в случаи подключения или отключения модуля, было проще, хранить всё в одном месте
Ответить