![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Render |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 12.5.2005 Репутация: нет Всего: 3 |
Вообщем сижу и практикуюсь с пятерочой, порадовали многие нововведения в ООП языка. Единственное вызывают вопрос некоторые фишки:
новые уровни доступа private, public, protected - зачем запрещать доступ к переменным родителя в классах наследниках. Практическое применение??? абстрактные классы и методы (abstract) - зачем создавать класс (нельзя создать экземпляр класса), методы которого нельзя вызывать соответственно??? интерфейсы (interface) - вот это действительно классная вещь! статические методы класса - радует!!! система перехвата исключений (exceptions) - The best =) финальные классы и методы - финальный метод невозможно переопределить в классе-наследнике. Смысл??? instanceof оператор - зачем проверять, попадает ли проверяемый класс в список дерева наследования класса, экземпляром которого является проверяемый объект. __autoload() - это вообще должно вызывать радость, теперь не надо явно инклудить! Супер!!!
__get(), __set() - имеет право на существование. Можно юзать! __call() - немного не понятно, где можно было бы применить! Пожалуйста, писать, только применение тех или иных функциональных возможностей, кто как себе представляет. Желательно сразу в коде! Прошу не посылать на phpclub. Там уже всё перечитано... Это сообщение отредактировал(а) Render - 13.8.2005, 12:00 |
|||
|
||||
| Sardar |
|
||||||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 4 Всего: 317 |
По поводу абстрактных классов, уровней доступа, финальных методов/классов и т.д. - это всё тебе понадобиться как чуть глубже копнёшь в ООП. И интерфейс и абстрактный класс - это обьявление нового типа, но абстракный класс позволяет сделать костяк, некий общий базовый код. Например абстракный User, через который можно выбирать инфу о юзере, но заполнение инфы оставленно на потомка. А потомок может брать инфу из БД или сессии.
Уровни доступа нужны для логики, всегда есть способ выстрелить себе в ногу(через рефлекцию по момему можно достать приватные члены класса), но компилятор/интерпретатор постараються тебя остановить
Единственное что не понял, так это __autoload - зачем, (include|require)_once уже не в моде?
ИМXО, это грязная вещь для больших языков типа Java/C#, но очень удобно для скриптов. Позоволяет добавить "магии" в твои классы. Можешь сам написать SimpleXML - пример удобной и простой магии
Если ты против "магии", то не используй. Но это удобно -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
||||||
|
|||||||
| Render |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 12.5.2005 Репутация: нет Всего: 3 |
Насчёт, магии не против.
Sardar
не понял пример!? |
|||
|
||||
| Opik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: 24 Всего: 55 |
__call юзается вроде несколько иначе.
пример:
|
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 4 Всего: 317 |
SOAP - протокол вызова методов удалённых обьектов(тут много теории). Ты зачитываешь .wsdl с описанием доступных методов/функций вебсервиса. Впрочем другой пример:
В первом примере заюзали магический __get, во втором магический __call -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
__call это подобие перегрузки функций.
Что касается применения всех этих вещей. То нет жестких рамок, все заисит от конкретныхь задач и роли класса внутри всей системы. Так категорично что и где используеся говорить нельзя. ИМХО. |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Render На счет instanceof вот тебе пример - допустим у нас есть класс соединения с СУБД и есть интерфейс транзакций, но их поддерживают не все БД, тогда, чтобы это узнать instanceof будет как раз кстати. Простенький пример:
Т.е. для того, чтобы узнать поддержку транзакций экземпляром класса, достаточно вызвать метод transaction_support() базового класса! |
|||
|
||||
| <Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 1 Всего: 64 |
Это был я
-------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
| Estet |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 10.5.2007 Репутация: нет Всего: нет |
А что произойдет с __get() и __set() при наследовании?
|
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |