![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
Kallisto |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 163 Регистрация: 20.4.2007 Репутация: 2 Всего: -1 |
Интересует такой вопрос.
РНР имеет кейворд final, который запрещает наследовать класс или переопределять метод. В тоже время РНР поддерживает динамические атрибуты. Возникает вопрос почему класс, который объявлен как final так же можно делать дин. атрибуты? |
|||
|
||||
NewDima |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: нет Всего: 12 |
Ммм, под динамическими атрибутами вы понимаете свойства класса, для установки которых вызываются магические методы __set(get)?
Так как по вашему связана установка динамических свойств (которая происходит в рантайме) с невозможностью наследоваться от класса? |
|||
|
||||
solenko |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1473 Регистрация: 15.1.2006 Где: Украина Репутация: 2 Всего: 67 |
думаю имелись в виду просто:
-------------------- Ла-ла-ла-ла Заметьте, нет официального подтверждения, что это не просто четыре слога. |
||||
|
|||||
Kallisto |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 163 Регистрация: 20.4.2007 Репутация: 2 Всего: -1 |
Ну используя final мы передаем программисту класс который имеет фиксированный набор методов которые нельзя поменять.. то есть поведение класса четко определенно. А тут получается используя дин. атрибуты экземпляр класса может иметь разные свойства...мне кажется это немного не верно.. Если final то final...
может я ошибаюсь? |
|||
|
||||
IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 1 Всего: 73 |
Kallisto, Вы действительно ошибаетесь. Свойство final говорит о том, что мы не можем наследовать класс или переопределять методы. Т.е. подразумевается, что класс или метод является конечной точкой в реализации задуманной разработчиком системы. И наоборот - "динамическое" создание переменных ни коим образом не противоречит данной концепции: это исключительно свойство языка. Вы все равно не сможете вмешаться в конечную логику приложения, вы лишь будете необдуманно использовать возможности среды.
-------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
Kallisto |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 163 Регистрация: 20.4.2007 Репутация: 2 Всего: -1 |
Да это понятно что вмешаться не получится никоим образом..
но получается что final класс который по логике является последним и окончательным может иметь случайное количество атрибутов. |
|||
|
||||
IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 1 Всего: 73 |
Kallisto, это не случайное количество атрибутов, это специфика языка, которая позволяет такое делать. Определи метод __set и возвращай из него эксепшн в случае попытки записать несуществующие поля.
-------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Для профи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |