Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Не пойму

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
darl
Отправлено: 14 Октября, 2013 - 21:21:35
Post Id


Новичок


Покинул форум
Сообщений всего: 51
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




Разбираюсь в Yii и не погу понять некоторые моменты, к примеру есть класс
и его метод
PHP:
скопировать код в буфер обмена
  1.  
  2. abstract class CModule extends CComponent
  3. {
  4. public function configure($config)
  5.         {
  6.                 if(is_array($config))
  7.                 {
  8.                         foreach($config as $key=>$value)
  9.                                 $this->$key=$value;
  10.                 }
  11.         }
  12. }

Конкретно не понимаю присваивание свойствам класса: $this->$key=$value; Облазил весь класс и родительский нет таких свойств, динамически чтоль создаются или что то упускаю из виду, не понимаю.помогите кто нибудь, как это может работать? Кто работал с Yii?
 
 Top
Stierus Супермодератор
Отправлено: 14 Октября, 2013 - 21:33:25
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




abstract class
 
My status
 Top
Мелкий Супермодератор
Отправлено: 14 Октября, 2013 - 22:05:17
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




darl пишет:
динамически чтоль создаются

Именно так.
В объект $this добавляются свойства с именем, сохранённом в переменной $key и значением переменной $value.

Т.е. если методу передать array('foo'=>1, 'bar'=>2), то это будет эквивалентно


Не очень хороший приём, потом довольно сложно искать, где свойству задаётся значение. И можно случайно переписать какое-нибудь нужное свойство, даже извне класса, т.к. подобным методом свойства создаются публичные.


-----
PostgreSQL DBA
 
 Top
esterio
Отправлено: 15 Октября, 2013 - 00:02:58
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




магическые метоты __get и __set там повсюду. смотрите класс CComponent. А также присутсвуют __call. Если Вы не знаете таких вещей, то Вам еще рано колопать фреймворк изнутри

(Отредактировано автором: 15 Октября, 2013 - 11:41:38)

 
 Top
deblogger
Отправлено: 01 Ноября, 2013 - 08:07:07
Post Id


Новичок


Покинул форум
Сообщений всего: 59
Дата рег-ции: Нояб. 2013  


Помог: 0 раз(а)

[+]


darl пишет:
Разбираюсь в Yii


Мило у них сделано. Фактически $this = (object) $config; Что может быть причиной не изучать этот Ыии.

(Отредактировано автором: 01 Ноября, 2013 - 08:07:38)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB