![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
Just123 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 9.12.2007 Где: localhost Репутация: нет Всего: нет |
Начал изучать Code Igniter, столкнулся с небольшой загвоздкой в лице следующей строчки:
Что значит эта запись? Метода config нет, но есть класс config и в нём метод item. Я правильно понимаю, что таким способом вызывается метод из другого класса? |
|||
|
||||
NLspieler |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 619 Регистрация: 13.10.2008 Где: Берлин Репутация: 16 Всего: 19 |
$this->config соответствует свойству/переменной $config, текущего объекта
В этой переменной может храниться другой объект, который имеет свойство $item. $this->config->item обращается к свойству item объекта, который хранится в свойстве config текущего объекта. |
|||
|
||||
Just123 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 9.12.2007 Где: localhost Репутация: нет Всего: нет |
Ясно, спасибо.
|
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
есть "магические" методы __get, __set, _call которые позволяют обработать ситуацию, когда происходит обращение к не существующему в пределах класса объекта метода или свойства. Под "обработать ситуацию" следует понимать "возможно сделать вид, будто такое свойство/метод есть".
простой пример:
я не собираюсь тебя запутать посильнее. но, как мне кажется, в последнее время этим стали активнее пользоваться, и в следующий раз тебя может озадачить уже то, что метода/свойства как бы нет, но в то же время к нему идет обращение, не вызывающее ошибки. и потому же свойства config у класса, который ты изучал, может не быть вовсе. но это не магия ![]() |
|||
|
||||
NLspieler |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 619 Регистрация: 13.10.2008 Где: Берлин Репутация: 16 Всего: 19 |
skyboy,
а в чем смысл обращения к несуществующему методу/свойству? |
|||
|
||||
skyboy |
|
||||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
синтаксический сахар.
для начала - о несуществующих свойствах. без этого механизма у нас будут либо "обычные" свойства, в которые можно писать/читать абсолютно неконтролируемо. либо будем иметь методы, в которых можно будет реализовывать проверки/выдачу сообщений об ошибочных данных и что угодно ещё. но тогда код будет такой:
вместо варианта со свойствами:
нагляднее ведь, правда? а эта перезагрузка позволяет писать второй вариант, а сам класс будет для получения значения свойства вызывать одни методы, а для записи - другие. Плюс можно сделать свойства только для чтения или только для записи. А вот __call может позволить использовать обертку над объектом, который, при необходимости, будет переадресовывать вызовы методов обернутому объекту. А для вызывающего кода это будет неважно. Т.е. Proxy без необходимости вручную определять переадресацию всех общих методов. |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |