Klasy w PHP

Kiedyś były dla mnie czymś obcym, czymś nie zrozumiałym, a wręcz nie potrzebnym w PHP.
Ostatnio zaznajomiłem się z nimi i powiem Wam, że całkiem przyjemne są. Stosunkowo szybko się tworzy kod działającej strony,a przede wszystkim znacznie łatwiejszy jest później w edycji, bo wiadomo co gdzie jest.

Jak się ich używa?

Zasada jest bardzo prosta – na stronie gdzie chcemy, aby jakiś kawałek kodu się wyświetlił, a wiemy, że nie będzie tego mało, to zwykle korzystamy z

< ?php
include "function/prawa_ramka.inc.php";
?>

Tak – to jest całkiem w porządku rozwiązanie, ale zaśmiecamy sobie w ten sposób stronę kodem, który jest wymieszany z HTML’em, ponieważ w tym includowanym pliku musimy zawrzeć nie tylko wykorzystane swoje funkcje jakie stworzyliśmy, ale także dość sporą część kodu HTML+PHP poza funkcjami.
Dlatego lepsze są klasy – można powiedzieć, że to jest zbiór funkcji, które są związane ze sobą jakąś wspólną cechą (np. funkcje do logowania,rejestracji,zmiany danych w profilu), funkcje, które są pogrupowane tematycznie (np. wykorzystamy je tylko w prawej kolumnie tabeli na stronie).
W danej klasie 95% to kod PHP, a 5% to po prostu niezbędny kod HTML który zawarty jest wewnątrz metody (funkcji) w klasie.
Dodatkowym plusem dla klasy jest jej konstruktor – możemy z góry filtrować przychodzące dane, oraz zapisywać je lokalnie dla całek klasy (wszystkich metod/funkcji w klasie).
Ja konstruktora używam do łączenia się z bazą danych :)

Dla zainteresowanych mini-przykład klas:

1. Na stronie gdzie ma się coś wyświetlić wklejamy:

< ?
	include ("class/NewsPanel.php");            //includujemy plik z klasą
	$newsy = new NewsPanel();                  //Tworzy nowy obiekt klasy
	$newsy->lista_newsow();                     //wykorzystujemy motodę zawartą w danej klasie
?>

Jeśli chodzi o sam plik class/NewsPanel.php to może on wyglądać tak:

< ?php

class NewsPanel {

        function NewsPanel(){
                include("mysql.php");

                if(!mysql_connect($host,$user,$password)){
                        echo "Spis Newsów: nie można połączyć się z bazą danych!";
                        exit;
                }

                if(!mysql_select_db($database)){
                        echo "Spis Newsów: nie mozna wybrać bazy danych!";
                        exit;
								}
								mysql_query("SET NAMES latin2;");
	}

	function lista_newsow(){
	  $go = mysql_query("SELECT * FROM newsy ;");
	  while ( $pytam = mysql_fetch_array($go) )
	  {
		echo 'kropka  '.$pytam['nazwa'].'
		'.$pytam['opis'].'
            Czytaj

'; } } } ?>

W klasie musi być funkcja, która się nazywa tak samo jak ona sama – jest to właśnie omawiany wcześniej konstruktor.
Tak jak powiedziałem – ja w konstruktorze łącze się za każdym razem z bazą przy użyciu funkcji

mysql_connect()

Po konstruktorze mamy inne funkcje, dzięki którym możemy wykorzystać otwarte połączenie z bazą danych, oraz wszystkie inne dostępne funkcje w PHP – żadnych ograniczeń.

Reasumując
Przewaga class nad funkcjami (dziwnie to brzmi ; masło maślane ;) )
+ większy porządek w kodzie i strukturze strony
+ bezpieczeństwo
+ Skupiamy się na kodzie PHP, a nie upiększaniu go HTML’em

Jakieś pytania? :)