[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: this
_Dimarik__
разюираю пример из книги Кузнецова.
Разрабатывается класса field.
И есть метод:
public function __get($key)
{
iF(isset($this->$key)) return $this->$key;
}

$key нет ни в public, ни в protected, ни в private.
По идее так н5ельзя записывать $this->key, коли их нету в полях. но $this->$key - это означает что-то другое или это просто опечатка? поясните пожалуйста



Спустя 3 минуты, 25 секунд (18.07.2010 - 12:30) Ka4_0k написал(а):
Метод __get - магический метод, который вызывается при попытке доступа к полю класса. Параметр - имя поля класса. Т.е. можно проверять, если есть поле поле $key, то выдать его.
Хотя, возможно я не прав, и __get вызывается при попытке доступа к НЕСУЩЕСТВУЮЩЕМУ полю класса, уже не помню...

____________________________________
А, всё, вот у twin'a нашёл smile.gif Да простит он меня за копипаст
Цитата
__get
Вызывается при попытке получить значение несуществующей в классе переменной

Спустя 1 час, 10 минут, 10 секунд (18.07.2010 - 13:40) Michael написал(а):
Цитата (_Dimarik__ @ 18.07.2010 - 11:26)
По идее так н5ельзя записывать $this->key, коли их нету в полях. но $this->$key - это означает что-то другое или это просто опечатка? поясните пожалуйста

class XXX{
public $pole = 'mmm';
public function __get($key) {
return $key . $key;
}
}

$x = new XXX();
echo $x->pole . '<br>';
$k = 'pole';
echo $x->$k . '<br>'; // также допустимая запись в php
$k = 'pole2';
echo $x->$k; // значение вернет __get


Вывод:
mmm
mmm
pole2pole2


Спустя 24 минуты, 7 секунд (18.07.2010 - 14:04) _Dimarik__ написал(а):
так какая разница между $this->key и $this->$key

Спустя 5 минут, 34 секунды (18.07.2010 - 14:10) Michael написал(а):
$this->key
- это напрямую ты обращаешся к известному тебе свойству key объекта
А
$this->$key
- это ты обращаешся к свойству объекта, которое тебе напрямую(по имени) не известно, а хранится в переменной $key.

Спустя 2 минуты, 31 секунда (18.07.2010 - 14:12) Michael написал(а):
Это также как в функциях.
function xxx(){print 'XXX';}
xxx(); // вызываем
$k = 'xxx';
$k(); // также вызываем

p.s. также само можно и классы создавать $x = new $ClassName;
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.