Ocena użytkowników: 2 / 5

Gwiazdka aktywnaGwiazdka aktywnaGwiazdka nieaktywnaGwiazdka nieaktywnaGwiazdka nieaktywna
 

Na początku PHP było przystosowane do programowania proceduralnego. Możliwości obiektowe wprowadzono z językiem C++ i Smalltalk. Obecnie nowy sposób programowania występuje w większości językach wysokopoziomowych np: Java, PHP5. Parę lat temu programy pisano w stylu proceduralnym. Poprawianie błędów czy ulepszanie wcześniej dodanych funkcji stawało się coraz bardziej skomplikowane, napisanie od nowa programu w niektórych sytuacjach było lepszym rozwiązaniem. Coraz większa ilość problemów związanych z programowaniem proceduralnym spowodowała powstanie nowego sposobu projektowania opartego na obiektach. "Programowanie Obiektowe" (ang. OOP - Object Oriented Programming) nie jest przeznaczone dla konkretnego języka programowania, zasady są takie same dla wszystkich.

Programowanie Obiektowe zajmuje więcej pamięci procesora, dlatego w aplikacjach pracujących w czasie rzeczywistym, gdzie szybkość ma znaczenie stosuje się programowanie proceduralne. Obecnie przy małych serwisach internetowych jest często wykorzystywane programowanie strukturalne. Jednak przy rozbudowie takich serwisów wymagana jest większa pracochłonność. Programowanie obiektowe na początku potrzebuje większego nakładu pracy, jednak przy rozbudowie korzysta się z utworzonych wcześniej klas, co skraca ilość czasu potrzebnego do dodania nowych funkcji w programie lub poprawienia starych błędów.

Obecnie PHP5 jest w pełni obiektowym językiem programowania. Obsługuje podstawowe pojęcia takie jak: klasy, obiekty, dziedziczenie, polimorfizm, interfejsy i hermetyzacja. Do wykorzystywania utworzonych klas w innych projektach, trzeba przygotować się przed projektowaniem własnych bibliotek. Na początek należy przygotować przynajmniej diagramy klas (rozwijają się razem z projektem) i diagramy przypadków użycia.

Klasa składa się z atrybutów, metod i konstruktorów. Obecnie w projektach stosuje nazewnictwo class.[Nazwa klasy].php, nazwa pliku odpowiada nazwie klasy. Nie umieszcza się w jednym pliku więcej niż jednej klasy, dzięki czemu projekt jest łatwiejszy w implementacji. Ustalono, że nazwy klas zaczynają się dużą literą w odróżnieniu od atrybutów czy metod. Jeśli nie zostanie ustalony bezpośredni dostęp do atrybutów czy metod automatycznie przypisywane są uprawnienia publiczne.

 

Występują trzy rodzaje dostępu atrybutów i metod:

  • Publiczne (public) umożliwiają dostęp z zewnątrz.
  • Prywatne (private) dostępne tylko wewnątrz klasy.
  • Chronione (protected) wewnątrz klasy i w dziedziczących po niej.

 

Ogólna składnia definicji klasy:

Class NazwaKlasy [extends NazwaKlasyNadrzędnej] {
$atrybut1;
$atrybut2;
...
$atrybutN;
// Konstruktor
function __construct() {
}
function metoda1() {
}
function metoda2() {
}
...
function metodaN() {
}
}

 

Dzięki konstruktorowi istnieje możliwość działania na prawidłowych atrybutach. Jeśli został utworzony konstruktor z parametrami, to przy tworzeniu obiektu muszą zostać podane parametry, jeśli ich nie będzie zostanie wyświetlony błąd. Dzięki konstruktorom można zautomatyzować przekazywanie parametrów do obiektu. Nie należy zapomnieć, informacje przekazuje się za pomocą metod dostępowych get[Nazwa funkcji], set[Nazwa funkcji]. Bezpośredni dostęp do zmiennych powinien być zabroniony poprzez zastosowanie hermetyzacji. W PHP4 konstruktor miał taką samą nazwę jak klasa dlatego obecnie przy sprawdzaniu najpierw jest szukana metoda __construct() a dopiero potem metoda o nazwie klasy. Jeśli obu nie można znaleźć PHP uznaje, że konstruktor nie istnieje. Dzięki takiemu zastosowaniu możliwe jest uruchomienie aplikacji starszych.

Jeśli trzeba skorzystać z klasy w programie, tworzy się obiekt korzystając ze słowa kluczowego new. Dzięki niemu można odwołać się do wszystkich metod i pól obiektu korzystając z operatora "->".

Metody z klasy można wywołać za pomocą operatora wywołania podwójny dwukropek (::). Sprawdza się to dobrze przy odwoływaniu w metodzie do innej metody odpowiedzialnej za np.: pobranie wyników z bazy danych. Praca jest wtedy bardziej czytelna, nie tworzy się zbędnego kodu. Odwoływanie do atrybutów w klasie odbywa się za pomocą konstrukcji $this-> (w języku PHP5 obowiązkowy).

 

Dodawanie metod i właściwości:

<?php
class WiedzaNaPlus {
public $_nazwisko;
public function wyswietl_tekst() {
print "Nazwisko wpisane do programu: $this->_nazwisko";
}

}
?>

Do łatwiejszego rozróżnienia przydzielonych uprawnień zmiennym, na początku dla pól publicznych stosuje się "_" ($_nazwisko), jest to tylko umowa między programistami i zależy tylko od dobrej woli piszącego.

 

Tworzenie obiektu klasy:

<?php
require_once('class.wiedzanaplus.php');
$objWiedzaNaPlus = new WiedzaNaPlus();
$objWiedzaNaPlus->_nazwisko = 'Klimek';
$objWiedzaNaPlus->wyswietl_tekst();
?>

Na ekranie zostanie wyświetlone:

Nazwisko wpisane do programu: Klimek

 

Warto przeczytać również:

Wybrane książki:

Książki Helion