Полезное для программистов:

Фриланс
Новости
Статьи
   
Рубрики:


ООП в PHP. Классы и объекты

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

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

Рассмотрим все по порядку:

1. ООП. Плюсы и минусы.
2. Классы и объекты, основные определения.
3. Конструктор, деструктор.
4. Класс HelloWorld.
5. Наследование.
6. Классы и объекты в PHP5.

---------------------------------------------------------------------------

1. ООП. Плюсы и минусы.

Плюсы:
  • Удобство редактирования код, поскольку при большом файле, где бы у вас хранилось около 150 функций, было бы тяжело сориентироваться
  • Удобство модификации, поскольку вам достаточно лишь изменить тот или иной метод класса, не переписывая при этом основной код программы.
  • Повышение безопасности, при грамотном использовании.
  • Увеличение времени работы скрипта, при грамотном использовании.
Что касается минусов, то при Неправильном проектировании все вышеперечисленные плюсы окажутся в минусе. Под проектирование понимается описание структуры класса, его свойств и методов описываемых в нем, взаимодействие объектов.

Главное – правильно спроектировать объектную модель вашего приложения. Четко определить, что будет делать тот или иной метод и что будет хранить то или иное свойство.

Использование объектно-ориентированного программирование должно быть обоснованным, т.е. писать класс для сохранения файла не нужно. Это – не рационально.

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

Классы и объекты, основные определения.

Основным понятием объектно-ориентированного программирования является класс.

Класс это лишь описание методов и свойств. Класс не создается и не используется в программе.

Объект - это переменная, которая имеет свойства и методы, описанные в классе, от которого он создается. Вы можете создать несколько объектов от одного класса.

Свойство – это та же самая переменная, только внутри объекта.

Метод – это та же самая функция, только внутри объекта.


3. Конструктор, деструктор.

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

Деструктор аналогичен конструктору за исключением того, что вызывается при уничтожении объекта. К примеру в деструктор может быть встроена функция разрыва соединения с базой данных или сохранения файла. Деструкторы не присутствуют в PHP4, но в 5 версии они есть.

В PHP4 имя конструктора должно соответствовать имени класса, в PHP5 – имя конструктора – статично __constructor, а деструктор - __destructor.

4. Класс HelloWorld.

Итак, опишем класс:
Код
<?php

class HelloWorld
 {
  var $str = "Hello";
  var $stt;

  function HelloWorld()
   {
    $this -> stt = " ";
   }

  function Add( $str )
   {
    $this -> stt .= $str;
   }
 }

?>

Мы описываем два свойства str & stt, причем свойству str сразу присваиваем первоначально значение.

Затем идет описание конструктора, в котором свойству stt присваивается значение пробела.

$this -> обозначает обращение к свойству или методу внутри объекта.

Далее мы описываем метод Add, который прибавляет к свойству stt строковое значение, переданное ему в качестве параметра.

Теперь создадим объект от нашего класса и посмотрим, как о будет работать.
Код
<?php

$Obj = & new HelloWorld();
$Obj -> Add( "Autor" );
print $Obj -> str . $Obj -> stt;

?>

Первым делом мы создаем объект с помощью слова new. Знак & ставим перед ним для того, чтобы у нас не создавался дубликат объекта.

Затем вызываем метод Add, передавая ему в качестве параметра строку «Autor».
Затем выводим единую строку из свойств объекта. На выходе получим фразу «Hello Autor».

Вот в принципе и все. Я описал основы объектно-ориентированного программирования. Еще раз скажу, что главное – правильно спроектировать классы.

5. Наследование.

Наследование позволяет создавать иерархию классов. По сути, подкласс получает свойства и методы класса.

Объясню на примере.
Код
<?php

class HelloWorld
 {
  var $str = "Hello";
  var $stt = "";

  function HelloWorld()
   {
    $this -> stt = " ";
   }
 }

class Garry extends HelloWorld
 {
  function Add( $str )
   {
    $this -> stt .= $str;
   }
 }

$Obj = & new Garry();
$Obj -> Add( "Autor" );
print $Obj -> str . $Obj -> stt;

?>

Подкласс Garry наследует все от класса HelloWorld, поэтому объект, созданный от класса Garry будет содержать свойства и методы, объявленные внутри двух классов.

6. Классы и объекты в PHP5.

Кроме уже упоминавшегося ранее изменения имени конструктора появления деструктора объектно-ориентированная модель в PHP5 претерпела еще ряд изменений.

Теперь для создании копии объекта можно использовать скрытый метод __clone();

Добавлены уровни доступа к свойствам и методам: private, public, protected. Если раньше все методы и свойства были доступны извне объекта, то теперь можно указывать уровень доступа к ним.
  • private – методы и свойства доступны только внутри объекта.
  • public – методы и свойства доступны извне объекта
  • protected – методы и свойства доступны только в том классе, где объявляются.
Есть еще static, который указывается перед одним из этих интерфейсов. При объявлении метода static, вы можете получить к нему доступ, не создавая объекта.

Помимо этого появилось множественное наследование, т.е. теперь подкласс может наследовать свойства и методы, объявленные в нескольких классах.
Код
<?php

class child implements parents1,parents2
 {
  ….
 }

?>


Также введено понятие абстрактного класса. Он может быть использован лишь как наследуемый, т.е. объектов от него непосредственно создать нельзя. Для объявления абстрактного класса пишется следующий код:
Код
<?php

abstract class ClassName
 {
  ….
 }

?>


Еще очень интересная вещь - __call();. Этот метод вызывается в том случае (если он определен вами), когда вы пытаетесь обратиться к несуществующему в классе методу или свойству. По сути его можно использовать и для перегрузки функций.

Скрытые методы __get(); & __set(); могут использоваться для «отлова» всех попыток обращений к несуществующим методам или свойствам.
Автор: Mal Hack
Сайт: http://mal-hack.net






Просмотров: 33545

 

 

Новые статьи:


Популярные:
  1. Как сделать цикличным проигрывание MIDI-файла?
  2. Создание AVI файла из рисунков
  3. Как устройство "отключить в данной конфигурации"?
  4. Kто в данный момент присоединен через Сеть?
  5. Как узнать количество доступной памяти?
  6. Как реализовать в RichEdit разноцветный текст?
  7. Как скрыть свое приложение от ProcessViewer
  8. Как программно нажать/скрыть/показ кнопку "Start"?
  9. Модуль работы с ресурсами в PE файлах
10. Функции вызова диалоговых окон выбора
11. Проверка граматики средствами Word'а из Delphi.
12. Модуль для упрощенного вызова сообщений
13. Функции для записи и чтение своих данных в, ЕХЕ- файле
14. Рекурсивный просмотр директорий
15. Network Traffic Monitor
16. Разные модули
17. Универсальная функция для обращения к любым экспортируем функциям DLL
18. Библиотека от VladS
19. Протектор для UPX'а
20. Еще об ICQ, сообщения по контакт листу?
21. Использование открытых интерфейсов
22. Теория и практика использования RTTI
23. Работа с TApplication
24. Примеры использования Drag and Drop для различных визуальных компонентов
25. Что такое порт? Правила для работы с портами
26. Симфония на клавиатуре
27. Загрузка DLL
28. Исправление автоинкремента
29. Взаимодействие с чужими окнами
30. Проверить дубляжи в столбце


 

 

 
 
На главную