Tutoriale PHP
  Comunitatea PHP Romania

 
Tutoriale PHP
Articol
Index / OOP / Articol
Introducere in Clase PHP
de

Situatie: off off off off off
Vezi comentariiDiscuta acest articol (0 comentarii)
TiparesteTipareste
Adauga la favorite-Doar pentru membriiAdauga la favorite
Mihai Stan

Cand incepi sa lucrezi cu PHP, iti dai seama ca sunt multe locuri in care trebuie sa scrii aceasi bucata de cod. Unii dintre voi probabil s-au prins ca aceasta se poate rezolva cu o functie, asta economisind ceva timp atunci cand veti vrea sa refolositi codul. Pur si simplu declarati o functie si ii spuneti acelei functii ce informatie vreti sa foloseasca. Metoda este similara celei de mai jos:

function Functia_Mea($variabila){
     
// Foloseste $variabila aici :
     
echo $variabila;
}

Si apoi doar apelezi functia atunci cand ai nevoie de ea:

Functia_Mea("Salut, bine ai venit pe site" );

si functia va afisa la iesire "Salut, bine ai venit pe site "

Ei bine, dupa un timp se vor aduna prea multe functii si te vei aglomera. Folosind Clase PHP, poti incepe sa pui acele functii in niste "cutii" unde sunt stocate si folosite. Clasele PHP s-au dovedit a fi foarte valoroase, atunci cand sunt gandite si cand e scris codul bine. Va voi face o introducere in Clase si va voi da cateva exemple unde pot fi folosite. Sper ca la sfarsitul acestui tutorial te vei gandi sa implementezi niste clase proprii economisind astfel timp in viitoarele proiecte.

Dar haideti sa lasam vorbaria . Dati click pe pagina urmatoare si sa incepem sa ne stocam functiile in interiorul Claselor.


Structura Clasei

Cand va ganditi la clase v-as incuraja sa va ganditi ca la "codul din spate". Codul va fi stocat in spatele site-ului, iar in fata va fi un bloc de cod foarte usor de inteles. Voi pune toate rutinele complicate in clasa ta, iar scriptul care foloseste acea clasa va fi mai usor de inteles pentru ca va avea un cod "curat". Acesta nu este singurul motiv pentru care poti folosi clasele, dar este motivul pentru care eu le folosesc.

OK, sa aruncam o privire pe clasa:

<?
class
Clasa_mea{
    var
$email;
    
    
// folosim o functie fara variabile
    
function verifica_email(){
        if(
ereg("^.+@.+\..+$", $this->email))
            return (
true);
        else
            return (
false);
    }
    
    
// Folosim o functie cu variabile
    
function scoate_imag($cevahtml){
        
$cevahtml = preg_replace("/(<img)(.*?)(>)/si", "", $cevahtml);
        return
$cevahtml;
    }
}
?>

Clasa de mai sus o fost compusa din 2 functii simple. Vom analiza functiile pentru a intelege despre ce este vorba aici.

Mai intai trebuie sa declaram o clasa:


  
class Clasa_mea{

Vom crea niste variabile ce pot fi folosite in oricare din functiile din interiorul clasei fara sa trebuiasca sa fie specificate pentru fiecare functie. Vom face asta prin "var $nume_var" ,priviti mai jos pentru exemplul $email pe care il vom folosi.

var $email;

In continuare, sa analizam prima functie. Functia aceasta este valideaza mail-ul introdus de utilizator. Cauta text in ambele parti ale simbolului "@" care este structura unei adrese de email. Aceasta functie va prelua variabila $email definita in scriptul nostru care apeleaza clasa si verifica validitatea email-ului. Daca adresa de email trece de aceasta verificare si este o adresa valida, vom returna "TRUE" ,altfel vom returna "FALSE" . Voi explica asta putin mai tarziu.

// folosim o functie fara variabile
    
function verifica_email(){
        if(
ereg("^.+@.+\..+$", $this->email))
            return (
true);
        else
            return (
false);
    }

Uitandu-va la functia de mai sus, ati remarcat ca am folosit "$this->email" $this-> e un constructor special indica in interiorul clasei catre o variabila sau o alta functie. La inceput am definit var $email ,acum avem $this->email. Veti vedea cum sa atribuiti o valoare lui $this->email cand vom folosi "efectiv" scriptul ce apeleaza clasa .

Nota: puteti de asemenea folosi in interiorul unei functii dintr-o clasa, o alta functie ce se afla in aceeasi clasa. Doar introduceti $this->numele_functiei($vars); si functii din interiorul aceleiasi clase se pot folosi reciproc.

Pentru a va da un exemplu ca puteti pune aproape orice doriti in interiorul unei clase, am facut aceasta clasa "cu scop general" ce poate fi utilizata in mai multe scopuri. Mai jos veti vedea o functie pe care am introdus-o in aceasta clasa, functie care elimina tag-urile unei imagini dintr-un string(sir de caractere). Am vrut sa va arat aceasta clasa si pentru ca este o metoda diferita de a apela functia, aceasta functie va accepta o variabila ca parametru si trebuie sa aiba acea variabila definita atunci cand o apelezi. Voi explica si acest lucru mai incolo. Iata functia mai jos:

// Folosim o functie cu variabile
    
function scoate_imag($cevahtml){
        
$cevahtml = preg_replace("/(<img)(.*?)(>)/si", "", $cevahtml);
        return
$cevahtml;
    }

Acum, inchidem clasa noastra si suntem gata s-o folosim!

}

Sa numim acest fisier: "clsClasa_Mea.php" si sa vedem cum il vom folosi in pagina urmatoare.



Folosirea acestei Clase in Scripturile voastre PHP

Primul lucru pe care trebuie sa-l facem este sa includem clasa. Nu este mare lucru, doar includeti-o folosind:

<?
include
"Clasa_Mea.php";

Acum putem incepe distractia :) Avem clasa noastra inclusa in script si trebuie sa initializam un obiect pe care sa-l atribuim unei variabile. Iata cum se face:

$clasa_mea = &New Clasa_Mea;

Am creat un obiect numit $clasa_mea si acum putem accesa elementele din interiorul clasei Clasa_Mea pe care am creat-o mai devreme. Astea fiind facute, avem variabila "$email" ce sta degeaba in Clasa_Mea, asa ca ii vom atribui o valoare:

$clasa_mea->email = "tu@undeva.com";

Tineti minte ca puteti face: $clasa_mea->email = $_POST['email']; sau orice vreti cu ea.

Sa rulam functia verifica_email in interiorul clasei Clasa_Mea:

$verifica_email = $clasa_mea->verifica_email();

if(!
$verifica_email){
    echo
"Adresa de email nu este valida!";
} else {
    echo
"Adresa de email este valida!";
}

Tot ce am facut este sa atribuim o variabila functiei verifica_email() si apoi am facut niste verificari de erori pe baza acelei variabile. Tineti minte ce a spus mai devreme, daca verifica_email returneaza TRUE , adresa continuta in variabila $email pe care i-am spus s-o verifice a trecut testul, daca nu a trecut testul va returna FALSE. Privind instructiunea if de mai sus, vei vedea ca daca un "!" sau "Eroare" este detectat pe sirul de caractere din $verifica_email ,vom afisa "Adresa de email este valida!".

Haideti sa ne uitam cum folosim functia scoate_imag. Intai vom crea un string cu HTML in interior.

$html_vechi= '<strong>Am o imagine aici: <img src="/imaginea_mea.jpg" height="100" width=" 200" >';

Acum ca avem $html_vechi si stim ca are o imagine in interiorul HTML-ului, sa scoatem acea imagine afara si sa returnam rezultatul:

$html_nou = $clasa_mea->scoate_imag($html_vechi);
echo
"Aici este html-ul vechi $html_vechi <br /><br />";
echo
"Aici este html-ul nou $html_nou <br /><br />";

Cand veti privi $html_vechi si $html_nou, veti vedea ca imaginea a fost eliminata cu succes.

Daca ai inteles ce s-a intamplat pana acum, felicitarile mele, tocmai ai invatat notiunile elementare ale claselor! Daca nu, te sfatuiesc sa mai citesti acest tutorial inca o data. Il vei intelege pana la urma.

Asa cum am spus mai devreme, clasele s-au dovedit a fi foarte eficiente. Ele sunt calea catre "Object Oriented Programming" sau "Programarea Orientata pe Obiecte" - OOP. Cu OOP puteti economisi foarte mult timp si puteti crea o arhiva de obiecte sau clase pe care le puteti folosi mereu.

Referinte:

Iata cateva link-uri pe care le puteti vizita cand va dezvoltati clasele:

PHP Manual - Classes and Objects
PHP Manual - Extends
PHP Manual - Exending Classes Using Parents
PHP Manual - Classes using :: operator
PHP Manual - Serialize and Unserialize Objects

Inchei aici aceasta Introducere in Clasele PHP.

 Toate cele bune !



Sus


Trimis de : Mihai StanData intrarii : 23 Februarie 2004Nivel : incepator


[ Profil autor ]
Mihai Stan phpideas at dap.ro

Gazduire

Tutoriale

Discuta in forum

Parteneri

Copyright © 2001-2010 PHP Romania Add PHPRomania to Google Add PHPRomania to Del.icio.us Add PHPRomania to Stumbleupon Add PHPRomania to Yahoo! Add PHPRomania to Digg Add PHPRomania to Blink
Ads: Parteneri: gazduire web | inregistrare domenii
Powered by Simplis