Programator PHP

4 posts / 0 new
Last post
MaTricks
Programator PHP

Este cineva pe aici care se pricepe foarte bine la clase in PHP si are timp sa imi dea niste sugestii?

admin
admin's picture
Raspuns: Programator PHP

Poate s-o găsi vreunu, de ce nu enunţi problema?

MaTricks
Raspuns: Programator PHP

ok.
Problema este urmatoarea:
Am facut o clasa care imi afiseaza toate componentele folosite in formulare, inclusiv formularul.
Adica form, input text, select, list, etc.
Evident ca acestor componente le-am creat posibilitati extinse, nu doar de afisare. De exemplu se poate incarca un select cu toate campurile dintr-o coloana a unui tabel mysql.

Toate bune si frumoase. Functioneaza excelent. Insa m-am lovit de o problema la care nu m-am gandit cand am facut clasa respectiva.
integrarea in templateuri.
Metodele clasei returneaza rezultatul sub forma de echo nu ca return. Efectul: in templateuri in loc sa fie parsat rezultatul, si introdus in blocul specificat, il afiseaza la inceputul paginii.

As putea face ca toate rezultate sa fie trimise strict sub forma de return, iar prelucrarea sa fie facuta de engine-ul templateului, insa nu vreau sa procedez asa. Vreau sa pot stabilii la initializarea clasei daca returnarea rezultatului sa fie de tip echo (asta scutindu-ma de a scrie echo in fata fiecarei cereri de genul:

$xcomp = new Componente("echo") apelul se face asa:
$xcomp->combo_db($tabel, $coloana, $selectat, $sortat);

$xcomp =new Componente("return"); apelul se face asa:

echo $xcomp->combo_db($tabel, $coloana, $selectat, $sortat)

sau sa fie de tip return. De ce sa fac doua clase cu aceeasi utilizare?
Intre timp oricum am rezolvat problema intr-un mod murdar. In sensul ca la finalul fiecarei metode am adaugat partea de verificare daca e de tip echo sau return.
Am facut o functie  care ar trebui sa se ocupe de modul de returnare al rezulatului,

public function getout(){
if ($this->out != "return"){
echo $this->rez;
}else{
return $this->rez;
}
}

insa daca in loc sa scriu
if ($this->out != "return"){
echo $this->rez;
}else{
return $this->rez;
}

la sfarsitul fiecare metode (asa functioneaza), apelez functia $this->getout();, nu imi mai trimite nici un rezultat in pagina care a facut apelul.
Aici nu imi dau seama ce mai pot face.

Trebuie sa precizez ca pentru mine clasele sunt un domeniu nou: aprox 1 saptamana, asa ca e posibil ca problema sa nu fie foarte complexa, decat pentru mine.

La inceput a fost . . . kernelul!
Close Windows...Open Source.

cosmin
cosmin's picture
Raspuns: Programator PHP

Funcţia getout() trebuie să fie membră a clasei respective, altminteri "this" nu are niciun sens (este doar o variabilă oarecare).

Normal, nu vei defini getout() de 100 de ori dacă ai 100 de clase. O pui o singură dată într-o clasă din care le derivezi pe toate.

[url=http://counter.li.org/]Linux registered user #368449[/url]