Tworzenie deklaracji klas w PHP

Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 2588 razy

W PHP obiekty klas są typami referencyjnymi, to znaczy takimi, które przechowują wskaźnik na miejsce w pamięci, gdzie dane klasy są przechowywane. Utwórzmy sobie małą deklarację klasy, której jedynym celem będzie ułatwienie tworzenia prostych tabelek html. Oto deklaracja takiej klasy:

<?php class html_table{ // prywatne pola klasy: private $header; // nagłówek kolumn tabelki private $records; // rekordy tabelki // konstruktor klasy wywoływany przy tworzeniu obiektu klasy: public function __construct($header_array){ $this->header = $header_array; // przypisanie do pola klasy o nazwie header jedynego argumentu kontruktora $this->racords = array(); // to będą rekordy tableki } // publiczne metody klasy htm_table // metoda dodająca nowy rekord do tabeli public function AddRecord($record_array){ if(count($record_array) == count($this->header)){ // jeżeli liczba rekordów tabeli zgadza się z liczbą nagłówków to $this->records[] = $record_array; // dodawaj rekord return true; // i zwracaj prawdę } return false; // w przeciwnym przypadku zwracaj fałsz } // metoda tworząca kod html tabeli public function GetTable(){ echo("<table border='1' cellspacing='0' align='center'><tr style='background:#000000;color:#ffffff;'>"); foreach($this->header as $title){ echo("<td>$title</td>"); // dodawanie podpisów kolumn } echo("</tr>"); foreach($this->records as $record){ echo("<tr>"); foreach($record as $ceil){ echo("<td>$ceil</td>"); // dodawanie poszczególnych komórek rekordów } echo("</tr>"); } echo("</table>"); } // destruktor klasy wywoływany przy jej niszczeniu public function __destruct(){ } } ?>

Tworzenie obiektu klasy html_table odbywa się za pomocą słowa kluczowego new. Oto przykład:

<?php $myTable = new html_table(array("Nr.", "Jezioro", "Powierzchnia [ha]")); $myTable->AddRecord(array("1", "Śniardwy", "11487,5")); $myTable->AddRecord(array("2", "Mamry", "9851,0")); $myTable->AddRecord(array("3", "Łebsko", "7020,0")); $myTable->AddRecord(array("4", "Dąbie", "5408,0")); $myTable->AddRecord(array("5", "Miedwie", "3491,0")); $myTable->GetTable(); ?>

Rezultat działania powyższego kodu:

Nr.JezioroPowierzchnia [ha]
1Śniardwy11487,5
2Mamry9851,0
3Łebsko7020,0
4Dąbie5408,0
5Miedwie3491,0

W kodzie deklaracji klasy można wyróżnić trzy typy modyfikatorów dostępu: