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 :: Нижнее подчёркивание __ перед названием функций в php

 PHP.SU

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


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

> Без описания
keysi_
Отправлено: 24 Октября, 2013 - 19:53:42
Post Id



Новичок


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


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




Всем привет. Два вопроса.

1. Подскажите или ткните где написано о том для чего и как правильно используются символы двойного нижнего подчеркивания в php и вообще в программировании. Почему в одних предопределённых функциях они есть, в других нет, какое значение они имеют в классах и в создаваемых функциях.
Я ни чего не нашёл по форуму и в яндексе, видимо потом, что символы __ не считаются поисковыми словами.

2. (Возможно прояснится после понимания первого вопроса, но всё же)
В статье http://www.php.su/learnphp/phpoo/?php5_2 в разделе "Явное клонирование объекта" автор пишет, что для клонирования используется вызов clone но в примере это слово не используется, за то есть сноска в скобах: который вызывает метод __clone() объекта. Но в примере всего один объект и что куда должно копироваться если в методе используется только функция print мне совсем непонятно. Объясните пожалуйста, а то у меня уже мозги набикрень.
 
 Top
OrmaJever Модератор
Отправлено: 24 Октября, 2013 - 20:04:44
Post Id



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


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


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




1) Просто что бы отличить предопределённый метод от вашего они начинаются с нижнего пробела. Вы можете создавать свои методы начинающиеся с нижних пробелов, но это не рекомендуется что бы не запутаться.
(Добавление)
keysi_ пишет:
но в примере это слово не используется

где это не используется?

2. В php 5 простое равно применимое к объектам создаёт ссылку на объект, а для копирования нужно указывать ключевое слово clone.

PHP:
скопировать код в буфер обмена
  1. class A {
  2.         public $var = 1;
  3. }
  4.  
  5. $a = new A();
  6. $b = $a;
  7. $c = clone $a;
  8. $a->var = 5;
  9. // мы изменили значение в обьекте $a, но оно изменилось и в $b поскольку это ссылка, но при этом не изменилось в $c поскольку это другая копия обьекта
  10. var_dump($b->var, $c->var);


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Ch_chov
Отправлено: 24 Октября, 2013 - 20:08:32
Post Id



Постоянный участник


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


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




Два символа подчеркивания используются в названиях магических методов и некоторых встроенных констант. Сами по себе они никакого особого значения они не имеют. Можете использовать их так же как любой другой символ.
 
 Top
keysi_
Отправлено: 25 Октября, 2013 - 11:42:17
Post Id



Новичок


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


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




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


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB