На главную

Библиотека Интернет Индустрии I2R.ru

Rambler's Top100

Малобюджетные сайты...

Продвижение веб-сайта...

Контент и авторское право...

Забобрить эту страницу! Забобрить! Блог Библиотека Сайтостроительства на toodoo
  Поиск:   
Рассылки для занятых...»
I2R » Сайтостроительство » Web-программирование

Фишки ООП, реализованные в PHP

<<...предыдущий материал на эту тему

ООП (Объектно-ориентированное программирование) — это подход к разработке относительно больших проектов с долгим временем жизни. Язык PHP становится все более популярным и используется во многих профессиональных проектах. Ввиду этого, техника ООП все чаще используется в PHP-проектах. В этой статье обсудим технику ООП, которая пригодна для использования при программировании на PHP.

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

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

Еще одно важное замечание касательно ООП (которое можно отнести ко многим аспектам программирования) — никто не может правильно использовать ООП, пока не приобретет достаточно опыта. Университетских курсов и самообразования недостаточно. Люди, изучающие ООП, получают хорошие оценки, имеют диплом, но часто используют процедурный подход к программированию. Единственный путь к правильному использованию ООП — это опыт и обучение на собственных попытках и ошибках. Иногда новички думают, что если они используют классы, значит используют ООП. Это совершенно неверно. Вы можете использовать классы, но продолжать программировать в процедурном стиле.

Ниже приводится список концепций ООП и обсуждается из реализация в PHP.

  • Множественного наследования в PHP нет и крайне маловероятно, что оно вообще появится. Многие ООП-языки прекрасно обходятся без него (Java, ObjectPascal, C#)

  • Перегрузка методов работает нормально. Вы можете переписывать метод класса-родителя в классе-наследнике.
    Пример:

    class A { function foo() { echo "A::foo();"; } }
    class B extends A { function foo() { echo "B::foo();"; } }
    $obj = new B();
    $obj->foo();

    возвращает B::foo();

  • Вызов базовых функций работает точно так же, как в C++
    Пример:

    class A { function foo() { echo "test A"; } }
    class B extends A { function foo() { A::foo(); echo " from class B"; } }
    $obj = new B();
    $obj->foo();

    Возвращает test A from class B.

  • Виртуальные функции. По определению все методы класса являются виртуальными. Каждый объект "знает" свой класс и все его функции.
    Пример:

    class A
    {
      function foo() { echo "1"; }
      function boo() { $this->foo(); }
    }

    class B extends A
    {
      function foo() { echo "2"; }
    }

    $b = new B();
    $b->boo();

    Возвращает 2, это демонстрирует, что функция foo() виртуальная.

  • Полиморфизм. Так как все методы виртуальные и переменные не объявляются, полиморфизм присутствует по определению.

  • Статические функции. Если метод класса не ссылается ни на одно свойство (переменную) класса, его можно назвать статическим.
    Например:

    class A { function foo() { return "test"; } }
    echo A::foo();

    Возвращает test.

  • Статических переменные класса нет. Вообще это спорный вопрос, нужны ли в PHP статические переменные. Некоторые принципы ООП говорят о том, что статические переменные не нужны. Однако есть исключения, когда они полезны, например, $HTTP_POST_DATA и тому подобные. Есть возможность сделать глобальную статическую переменную за пределами класса и получить к ней доступ через $GLOBALS или объявить ее глобальной явно при доступе.

  • Нет шаблонов (параметризованных классов), но они и не нужны, потому что переменные не объявляются и нет строгих типов. Например, вы можете хранить объекты, которые принадлежать к разным классам (так же как и числа и строки) в одном массиве.

  • Нет private/protected переменных и функций. Вообще-то не было бы ничего плохого в том, если бы они были, но они очень редко нужны в языках типа PHP.

Многие новые фишки ООП, такие как перехват исключений, пространство имен и т.п. собираются внедрить в Zend Engine версии 2.0. Подробнее об этом вы можете узнать на http://www.zend.com/zend/future.php

<<...предыдущий материал на эту тему

Автор: Val Samko
Перевод: Михаил Дубаков
Web-анатомия

Спонсор раздела

Рассылки Subscribe.ru:

Библиотека сайтостроительства - новости, статьи, обзоры
Дискуссионный лист для web-разработчиков
Подписка на MailList.Ru
Автор: NunDesign
Другие разделы
Оптимизация сайтов
Web-студии
» Новое в разделе
Web-дизайн
Web-программирование
Интернет-реклама
Раскрутка сайта
Web-графика
Flash
Adobe Photoshop
Рассылка
Инструменты вебмастера
Контент для сайта
HTML/DHTML
Управление web-проектами
CSS
I2R-Журналы
I2R Business
I2R Web Creation
I2R Computer
рассылки библиотеки +
И2Р Программы
Всё о Windows
Программирование
Софт
Мир Linux
Галерея Попова
Каталог I2R
Партнеры
Amicus Studio
NunDesign
Горящие путевки, идеи путешествийMegaTIS.Ru

2000-2008 г.   
Все авторские права соблюдены.
Rambler's Top100