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 :: Перегрузка свойств классов
Покинул форум
Сообщений всего: 134
Дата рег-ции: Февр. 2012 Откуда: Тольятти
Помог: 2 раз(а)
[+]
Ребят здравствуйте, подскажите пожалуйста литературу про "перегрузка свойств классов"
читал мануал но там (лично мне) непонятно, для чего это нужно, и хотелось бы что бы "по русски" объяснили, и пояснили с примерами синтаксис и т д =-)
----- Самое лучшее решение проблемы самое простое
Okula
Отправлено: 10 Сентября, 2012 - 10:45:14
Участник
Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010
Помог: 42 раз(а)
imper, вот тебе простой пример с использованием магического метода __set()
Вот развёрнутое объяснение по русски с примерами )
----- Самое лучшее решение проблемы самое простое
DlTA
Отправлено: 10 Сентября, 2012 - 23:43:57
Постоянный участник
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
Okula пишет:
моё дело показать пример, а его понимать как он работает
вообще плохой пример. бессмысленный, и запутывающий.
Okula
Отправлено: 10 Сентября, 2012 - 23:50:25
Участник
Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010
Помог: 42 раз(а)
DlTA, и чем же плох мой пример? Он какраз показывает как перезагрузить приватное свойтство класса с помощью магического метода.
Без аргументов твоё заявление просто пустой звук.
DlTA
Отправлено: 10 Сентября, 2012 - 23:57:51
Постоянный участник
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
1) вопрос стоит о перегрузке свойств, нафига тут засоряет взгляд конструктор
2) если уж показываете сетер, то куда спрятался геттер.
3) вытикает из 2, смысл в функции showHello??
4) использовать имя свойства такое же как и имя скрытого поля, вводит в заблуждение ибо. опосля возникает мысль что можно только так и делать
5) где коменты???
Okula
Отправлено: 11 Сентября, 2012 - 00:10:52
Участник
Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010
Помог: 42 раз(а)
DlTA,
1) через конструктор я задаю первичное значение свойтву. Можно было сделать это статически
2) не вижу смылсла объявлеть метод __get() так как тема о перезагрузке, а не об отображении приватных свойст. Тогда теряется весь смысл в значении private, потому что доступ к свойству будет возможен так же как и публичному, что опять "введёт в заблуждение"
3) смысл метода showHello() вытекает из его названия - демонстрация приветствия. Прошу заметить что это не рабочий класс какого-то приложения, а пример. Смысл примера - доступно показать как работает перезагрузка без лишних действий.
4) не неси чепуху! Если у тебя возникает такое впечатление то стоит перечитать страницы мануала про области видимости.
5) Не вижу необходимости. Класс довольно прост и коментировать там нечего. Пользователем будет выполнен только один метод showHello(), назначение которого вытекает из названия метода (о чём я уже писал ранее). (Добавление)
С таким же успехом я мог показать такой пример:
Теперь ничего лишнего?
Правда перезагрузка методов таким способом является дурным тоном.
Мелкий
Отправлено: 11 Сентября, 2012 - 08:33:39
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Главный вопрос по перегрузке - вас интересует общепринятое значение или php'шное?
Общепринятое, но неприменимое к PHP, значение перегрузки - наличие нескольких методов с одинаковым именем, но различающиеся входными аргументами. Например, разное количество аргументов или их типы. А так же переопределение значений таких операторов, как сложение.
В показательный пример не так давно я, непривычно разбалованный PHP и MySQL, уткнулся в PostgreeSQL:
select md5(23856); ->нет такой функции
select md5('23856'); ->да здравствует результат
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.