-
Optimizare clasa php
Salutare, sunt nou in OOP si vreau sa va intreb cate ceva despre urmatoarea clasa
Cod PHP:
class Station {
private $id;
var $query;
function __construct($id) {
$q = mysql_query("SELECT * FROM stations WHERE id = '$id'");
$this->query = mysql_fetch_array($q);
}
function title() {
return $this->query['title'];
}
function name() {
return $this->query['name'];
}
function description() {
return $this->query['description'];
}
}
Asa am construit clasa si apoi o instantiez si doresc sa folosesc anumite metode din clasa.
Cod PHP:
$station = new Station($id);
$title = $station->title();
$name= $station->name();
$description= $station->description();
Intrebarile mele:
1. va fi cate un query la mysql de fiecare data cand accesez cate o metoda? Adica in exemplul de sus o sa am 3 query-uri?
2. pot optimiza codul care l-am scris?
-
1. nu. tu instantiezi o singura data clasa (new Station($id)), iar metoda __construct() ruleaza doar la instantiere
2. a. din cate stiu eu proprietatile unei clase nu necesita declararea cu var. in versiunile mai vechi ale php era necesar acest lucru. acum poti declara orice proprietate ca o simpla variabila, eventual precedand-o cu vizibilitatea pe care o doresti (public, protected, private).
b. variabila $row din fiecare metoda mi se pare inutila... poti returna direct $this->query[cheie]
update punctul 2:
- folosirea var in declararea proprietatilor unei clase este o practica invechita
- declararea proprietatilor unei clase implica si declararea vizibilitatii acestora, spre deosebire de metode care pot fi declarate si fara vizibilitate (vizibilitatea implicita este public)