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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Overload problem
armancho7777777 Супермодератор
Отправлено: 11 Марта, 2013 - 10:57:35
Post Id



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


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


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




Выделено в отдельную тему из темы "область видимости"
EuGen пишет:
при создании дочернего объекта конструкторы родительских не вызываются


Разве?

PHP:
скопировать код в буфер обмена
  1.  
  2. class A {
  3.  
  4.         public function __construct()
  5.         {
  6.                 echo 1;
  7.         }
  8. }
  9.  
  10.  
  11. class B extends A {
  12.  
  13. }
  14.  
  15. new B();
  16.  
 
 Top
lexxl
Отправлено: 11 Марта, 2013 - 10:57:55
Post Id


Новичок


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


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




Выделено в отдельную тему из темы "область видимости"
А так - отлично))) Спасибо еще раз..
 
 Top
LIME
Отправлено: 11 Марта, 2013 - 10:59:25
Post Id


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


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


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




Выделено в отдельную тему из темы "область видимости"
armancho7777777 это если они в дочернем определены
без явного вызова же не вызываются
 
 Top
armancho7777777 Супермодератор
Отправлено: 11 Марта, 2013 - 11:04:27
Post Id



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


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


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




Выделено в отдельную тему из темы "область видимости"
LIME пишет:
это если они в дочернем определены
без явного вызова же не вызываются

А, речь была о перегрузке)
 
 Top
LIME
Отправлено: 11 Марта, 2013 - 11:12:20
Post Id


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


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


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




Выделено в отдельную тему из темы "область видимости"
перегрузка это когда например ф-ция описана с разными параметрами и в зависимости от вызова загружается нужная (по сигнатуре)
в PHP перегрузки нет
 
 Top
armancho7777777 Супермодератор
Отправлено: 11 Марта, 2013 - 11:17:42
Post Id



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


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


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




Выделено в отдельную тему из темы "область видимости"
Я имел в виду значение данного термина в контексте PHP.
Конструктор в JS тоже имеет иное значение.
Или Вы скажете, что в PHP нет конструктора тоже ?)
 
 Top
LIME
Отправлено: 11 Марта, 2013 - 11:20:33
Post Id


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


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


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




Выделено в отдельную тему из темы "область видимости"
armancho7777777 пишет:
Я имел в виду значение данного термина в контексте PHP.
я его не знаю но можно догадаться
тогда все верно
при "перегрузке" конструктора родительский не вызывается без явного указания
 
 Top
EuGen Администратор
Отправлено: 11 Марта, 2013 - 11:23:07
Post Id


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


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


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




Выделено в отдельную тему из темы "область видимости"
Дабы избежать споров - и то, и другое в строгом смысле есть перегрузка. LIME имел ввиду частный случай перегрузки в статически типизированных языках, а armancho7777777 - случай перегрузки конструкторов объектов.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
armancho7777777 Супермодератор
Отправлено: 11 Марта, 2013 - 11:39:38
Post Id



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


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


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




Выделено в отдельную тему из темы "область видимости"
LIME пишет:
это когда например ф-ция описана с разными параметрами и в зависимости от вызова загружается нужная

Данную задачу, кстати, можно реализовать средствами магических методов, таких как __call, __callStatic.
 
 Top
LIME
Отправлено: 11 Марта, 2013 - 11:49:04
Post Id


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


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


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




Выделено в отдельную тему из темы "область видимости"
и еще парой-тройкой разных способов менять действия одной и той же ф-ции в зависимости от параметров
только это будет та же ф-ция а не перегрузка
 
 Top
armancho7777777 Супермодератор
Отправлено: 11 Марта, 2013 - 11:55:30
Post Id



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


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


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




Выделено в отдельную тему из темы "область видимости"
LIME пишет:
только это будет та же ф-ция а не перегрузка

Речь была о реализации задачи приведённой в Вашем примере.

(Отредактировано автором: 11 Марта, 2013 - 11:56:12)

 
 Top
EuGen Администратор
Отправлено: 11 Марта, 2013 - 11:57:45
Post Id


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


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


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




Выделено в новую тему


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
LIME
Отправлено: 11 Марта, 2013 - 12:04:49
Post Id


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


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


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




ан нет...в PHP есть и своя "перегрузка"
http://php.net/manual/ru/languag....overloading.php
однакож это изобретение))
видно по замечанию))
Цитата:
Интерпретация "перегрузки" в PHP отличается от остальных объектно-ориентированных языков. Традиционно перегрузка означает возможность иметь множество одноименных методов с разным количеством или различными типами аргументов.
 
 Top
caballero
Отправлено: 11 Марта, 2013 - 12:05:45
Post Id


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


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


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




настояшего полиморфизма в PHP нет
можно притворится с помощью get_func_args или типа того
(Добавление)
Цитата:
Интерпретация "перегрузки" в PHP отличается от остальных объектно-ориентированных языков.

отличается тем что в PHP ее просто нет


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
LIME
Отправлено: 11 Марта, 2013 - 12:08:54
Post Id


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


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


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




ну полиморфизм и перегрузка это немного разное
полиморфизм это реализация в наследнике своего варианта метода
(Добавление)
caballero пишет:
отличается тем что в PHP ее просто нет
вот и я о чем
чистый омоним))
или как это называется))
 
 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