П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 176233 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 73089 раз(а).

Учебник HTML.
Просмотров 72743 раз(а).

Руководство по PHP5.
Просмотров 43493 раз(а).

Хостинг через призму DNS.
Просмотров 50100 раз(а).

Подборка текстов стандартных документов.
Просмотров 43730 раз(а).

Учебник PHP - Самоучитель
Просмотров 50047 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 50409 раз(а).

Внешние атаки...
Просмотров 40813 раз(а).

Учебник PHP.
Просмотров 35935 раз(а).

SSI в примерах.
Просмотров 26996 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь




ГЛАВА 6. Объектно-ориентированные возможности РНР

Перегрузка методов

Перегрузкой методов называется определение нескольких методов с одинаковыми именами, но разным количеством или типом параметров. Как и в случае с абстрактными классами, в РНР эта возможность не поддерживается, но существует простое обходное решение, приведенное в листинге 6.6.

Листинг 6.6. Перегрузка методов

<?
class Page {
  var $bgcolor;
  var $textcolor;

  function Page() {
    // Определить количество переданных аргументов
    // и вызвать метод с нужным именем
    $name = "Page".func_num_args();

    // Call $name with correct number of arguments passed in
    if( func_num_args() == 0 ) :
      $this->$name();
    else :
      $this->$name(func_get_arg(0));
    endif;
  }

  function Page0() {
    $this->bgcolor = "white";
    $this->textcolor = "black";
    print "Created default page";
  }

  function Page1($bgcolor) {
    $this->bgcolor = $bgcolor;
    $this->textcolor = "black";
    print "Created custom page";
  }

}

$html_page - new Page("red");
?>

В этом примере при создании нового объекта с именем $html_page передается один аргумент. Поскольку в классе был определен конструктор по умолчанию (Раgе()), вызывается именно он. Однако конструктор по умолчанию всего лишь выбирает, какому из конструкторов (Page0() или Page1()) следует передать управление. При выборе конструктора используются функции func_num_args() и func_get_arg(), которые, соответственно, определяют количество аргументов и читают эти аргументы.

Конечно, такое решение вряд ли можно назвать полноценной перегрузкой, но оно подойдет для тех, кто не может жить без этого важного аспекта ООП.

Назад | Содержание раздела | Общее Содержание | Вперед



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru