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 :: основы ООП [2]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): « 1 [2]   

> Без описания
EuGen Администратор
Отправлено: 15 Февраля, 2012 - 08:51:05
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




snikers987
Небольшой пример (я про практику): http://forum.php.su/topic.php?fo...33&topic=757


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
kappa
Отправлено: 15 Февраля, 2012 - 09:51:13
Post Id



Посетитель


Покинул форум
Сообщений всего: 349
Дата рег-ции: Апр. 2011  


Помог: 3 раз(а)




Вот добавлю, самому интересна книга, но правда на украинском
http://habrahabr.ru/blogs/programming/138222/

(Отредактировано автором: 15 Февраля, 2012 - 09:52:14)

 
 Top
Dezmont
Отправлено: 15 Февраля, 2012 - 10:07:59
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)




Ezi, про __go(). По-моему советуют использовать одинарное подчёркивание в названии приватных методов "_". Тогда никакая магия не испортит ваш скрипт)))
 
 Top
snikers987
Отправлено: 15 Февраля, 2012 - 10:13:07
Post Id



Участник


Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011  
Откуда: Крым


Помог: 25 раз(а)




EuGen пишет:
snikers987
Небольшой пример (я про практику): http://forum.php.su/topic.php?forum=33&topic=757

Уже читал эту статью раньше, но перечитал еще и увидел много нового чему раньше не придал значения! Позновательно, спасибо.
Кстати да, по поводу подчеркиваний хотелось бы уточнить, стоит ли всеже использовать двойное подчеркивание? или всеже лучше его заменить к примеру тройным? ___myPrivateMethod(); ?

(Отредактировано автором: 15 Февраля, 2012 - 10:17:24)



-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
Ezi
Отправлено: 15 Февраля, 2012 - 11:48:25
Post Id



Частый гость


Покинул форум
Сообщений всего: 242
Дата рег-ции: Дек. 2010  


Помог: 2 раз(а)




Dezmont, вот что
EuGen пишет:
Имена методов.
- все публичные методы объявляются с самого начала и следуют названиям функций.
- все защищенные (protected) методы начинаются с
подчеркивания, следуя названиям функций
- все приватные (private) методы начинаются с
двойного подчеркивания, следуя названиям функций


Что такое? я уже запутался


-----
Хочешь жить - умей вертеться
 
 Top
EuGen Администратор
Отправлено: 15 Февраля, 2012 - 12:11:02
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Если прочесть все вместе, то становится ясно, что я рекомандовал не просто использовать двойное подчеркивание, но вдобавок к тому и следовать правилу именования функций.

Например, __get_script_process_name - ему соотвутствует и маловероятно, что в PHP появится магическая функция с таким именем. К тому же, в PHP существует не большое количество таких(то есть магических) функций.

Однако же, названия в стиле __do __work и т.п. - недопустимы, потому что они на самом деле могут быть использованы в дальнейшем в PHP как магические.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Ezi
Отправлено: 15 Февраля, 2012 - 12:17:07
Post Id



Частый гость


Покинул форум
Сообщений всего: 242
Дата рег-ции: Дек. 2010  


Помог: 2 раз(а)




EuGen, объясни человеко-понятно-нубном языком, в чем магия у магических функций? тоесть почему они магическими называются?


-----
Хочешь жить - умей вертеться
 
 Top
EuGen Администратор
Отправлено: 15 Февраля, 2012 - 12:21:03
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Ezi
В том, что они вызываются при определенных условиях. И отвечают каждая за логически обоснованное действие. Например, "магия" __construct заключается в том, что когда Вы пишете

То вызывается именно __construct. Это и есть "магия" - функция вызывается, несмотря на то, что явно мы ее не вызывали.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Ezi
Отправлено: 15 Февраля, 2012 - 12:22:59
Post Id



Частый гость


Покинул форум
Сообщений всего: 242
Дата рег-ции: Дек. 2010  


Помог: 2 раз(а)




а как такие магические функции самому описывать?


-----
Хочешь жить - умей вертеться
 
 Top
EuGen Администратор
Отправлено: 15 Февраля, 2012 - 12:25:41
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Ezi
Что значит - самому описывать?
http://php.net/manual/en/language.oop5.magic.php

- они уже определены. Ваша задача - определять поведение в нужной для Вас (например, инициализировать свойства в том же __construct)


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
caballero
Отправлено: 15 Февраля, 2012 - 12:41:38
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
или всеже лучше его заменить к примеру тройным?

а чего не четверным?
На фига вообще подчеркивания. Если хочешь выделить какие то поля класса так любой современный редактор тебе подсветит где приватные поля и т.д.

Цитата:
а как такие магические функции самому описывать?

Прежде чем задать вопрос - поменяй слово "как" на слово "зачем".
Половина глупых вопросов отпадут сами собой.

Магическими они названы просто чтобы как нибудь назвать методы которые компилятор вызыввает автоматически при возникновении определенных условий.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
DelphinPRO
Отправлено: 15 Февраля, 2012 - 13:19:06
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




snikers987 пишет:
Кстати да, по поводу подчеркиваний хотелось бы уточнить, стоит ли всеже использовать двойное подчеркивание? или всеже лучше его заменить к примеру тройным? ___myPrivateMethod(); ?

Обычно рекомендуют использовать для имен приватных методов и свойств префикс в виде ОДНОГО знака подчеркивания. видимо для того, чтобы визуально сразу было видно где вызывается приватный метод, а где публичный. Писаного правила по этому поводу нет, - все делают, кому как захочется. Лично я придерживаюсь данной рекомендации.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB