Tworzenie deklaracji klas w PHP

Stronę tą wyświetlono już: 201 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:

Listing 1
  1. <?php
  2. class html_table{
  3. // prywatne pola klasy:
  4. private $header; // nagłówek kolumn tabelki
  5. private $records; // rekordy tabelki
  6. // konstruktor klasy wywoływany przy tworzeniu obiektu klasy:
  7. public function __construct($header_array){
  8. $this->header = $header_array; // przypisanie do pola klasy o nazwie header jedynego argumentu kontruktora
  9. $this->racords = array(); // to będą rekordy tableki
  10. }
  11. // publiczne metody klasy htm_table
  12. // metoda dodająca nowy rekord do tabeli
  13. public function AddRecord($record_array){
  14. if(count($record_array) == count($this->header)){ // jeżeli liczba rekordów tabeli zgadza się z liczbą nagłówków to
  15. $this->records[] = $record_array; // dodawaj rekord
  16. return true; // i zwracaj prawdę
  17. }
  18. return false; // w przeciwnym przypadku zwracaj fałsz
  19. }
  20. // metoda tworząca kod html tabeli
  21. public function GetTable(){
  22. echo("<table border='1' cellspacing='0' align='center'><tr style='background:#000000;color:#ffffff;'>");
  23. foreach($this->header as $title){
  24. echo("<td>$title</td>"); // dodawanie podpisów kolumn
  25. }
  26. echo("</tr>");
  27. foreach($this->records as $record){
  28. echo("<tr>");
  29. foreach($record as $ceil){
  30. echo("<td>$ceil</td>"); // dodawanie poszczególnych komórek rekordów
  31. }
  32. echo("</tr>");
  33. }
  34. echo("</table>");
  35. }
  36. // destruktor klasy wywoływany przy jej niszczeniu
  37. public function __destruct(){
  38. }
  39. }
  40. ?>

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

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

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:

  • public - metody i pola klasy są dostępne z zewnątrz;
  • private - metody i pola klasy są dostępne jedynie w wewnętrznych metodach klasy;
  • protected - metody i pola klasy są dostępne jedynie w wewnętrznych metodach klasy i klasie dziedziczącej.

Komentarze