PHP class vélemény
Sziasztok!
Úgy érzem, hogy most már továbbléphetek egy másik programozási "taktika" felé (Bocs, ha most egy nagy marhaságot írtam :D), ezért nekiálltam egy kis olvasás után ezt megírni. Egy rendszerbe lenne beleépítve. Kérdésem annyi lenne, hogy ez így valahogy elfogadható-e, továbbtanulás szempontjából, és hogy gyorsabb-e egy ilyen osztály, mint 8 változó használata?
(Tudom, a kivételeknek majd utána kell néznem.)
■ Úgy érzem, hogy most már továbbléphetek egy másik programozási "taktika" felé (Bocs, ha most egy nagy marhaságot írtam :D), ezért nekiálltam egy kis olvasás után ezt megírni. Egy rendszerbe lenne beleépítve. Kérdésem annyi lenne, hogy ez így valahogy elfogadható-e, továbbtanulás szempontjából, és hogy gyorsabb-e egy ilyen osztály, mint 8 változó használata?
(Tudom, a kivételeknek majd utána kell néznem.)
class Uzenet{
//hiba kijelzése?
private $hibajelzes = false;
private $profilid = 0;//üzenet-tulajdonos profiljának ID-je
private $tipus = 0;//1-szöveges, 2-szöveg+médiafájl
private $id = 0;//üzenet-száma
private $megjelen = Array();//üzenet tartalma
private $profkep = "";//felhasználó profilképje (aktuális)
private $mediafel = "";//HA tipus == 2, akkor a médiafájl tartalma
private $akkorinev = "";//az akkori neve
private $ido = Array();//üzenet idejét tartalmazó tömb
public function setProfil($id)
{
if($id != "" && $id && $this)
{
$this->profilid = $id;
return true;
}
else
{
if($this->hibajelzes == true)
{
return "!2!";
}
}
}
public function getProfil()
{
if($this->profilid != "" && $this->profilid && $this)
{
return $this->profilid;
}
else
{
if($this->hibajelzes == true)
{
return "!3!";
}
}
}
public function setTipus($type)
{
if($type != "" && $type && $this)
{
$this->tipus = $type;
return true;
}
else
{
if($this->hibajelzes == true)
{
return "!2!";
}
}
}
public function getTipus()
{
if($this->tipus != "" && $this->tipus && $this)
{
return $this->tipus;
}
else
{
if($this->hibajelzes == true)
{
return "!3!";
}
}
}
public function setUzenetId($id)
{
if($id != "" && $id && $this)
{
$this->id = $id;
return true;
}
else
{
if($this->hibajelzes == true)
{
return "!2!";
}
}
}
public function getUzenetId()
{
if($this->id != "" && $this->id && $this)
{
return $this->id;
}
else
{
if($this->hibajelzes == true)
{
return "!3!";
}
}
}
public function setUzenet($el, $ma)
{
if($el != "" && $ma != "" && $el && $ma && $this)
{
$this->megjelen[0] = $el;
$this->megjelen[1] = $ma;
return true;
}
else
{
if($this->hibajelzes == true)
{
return "!2!";
}
}
}
public function getUzenet()
{
if($this->megjelen != "" && $this->megjelen && $this)
{
return $this->megjelen;
return true;
}
else
{
if($this->hibajelzes == true)
{
return "!3!";
}
}
}
public function setImg($img)
{
if($img != "" && $img && $this)
{
$this->profkep = $img;
return true;
}
else
{
if($this->hibajelzes == true)
{
return "!2!";
}
}
}
public function getImg()
{
if($this->profkep != "" && $this->profkep && $this)
{
return $this->profkep;
}
else
{
if($this->hibajelzes == true)
{
return "!3!";
}
}
}
public function setImgUp($img)
{
if($img != "" && $img && $this)
{
$this->media = $img;
return true;
}
else
{
if($this->hibajelzes == true)
{
return "!2!";
}
}
}
public function getImgUp()
{
if($this->media != "" && $this->media && $this)
{
return $this->media;
}
else
{
if($this->hibajelzes == true)
{
return "!3!";
}
}
}
public function setDBNev($nev)
{
if($nev != "" && $nev && $this)
{
$this->akkorinev = $nev;
return true;
}
else
{
if($this->hibajelzes == true)
{
return "!2!";
}
}
}
public function getDBNev()
{
if($this->akkorinev != "" && $this->akkorinev && $this)
{
return $this->akkorinev;
}
else
{
if($this->hibajelzes == true)
{
return "!3!";
}
}
}
public function setIdo($ido)
{
if($ido != "" && $ido && $this)
{
for($io=0;$io<count(explode(",", $ido));$io++)
{
$val = $this->ido;
$val[$io] = explode(",", $ido);
$val[$io] = $val[$io][$io];
}
return true;
}
else
{
if($this->hibajelzes == true)
{
return "!2!";
}
}
}
public function getIdo()
{
$valt = "";
if($this->ido != "" && $this->ido && $this)
{
for($iu=0;$iu<count($this->ido);$iu++)
{
$valt .= $this->ido[$iu];
}
if($valt != "" && $valt && $this)
{
return $valt;
}
else
{
if($this->hibajelzes == true)
{
return "!3!";
}
}
}
else
{
if($this->hibajelzes == true)
{
return "!3!";
}
}
}
}
$ll = new Uzenet;
echo $ll->setUzenet("Rövid cím", "Hosszú üzenet");
$lu = $ll->getUzenet();
var_dump($lu);
Kezdetnek nem rossz, pár
-
if($id != "" && $id && $this)
A$this
elvileg mindig igaz, mivel az objektum példányosítva lett, tehát létezik. A$id
mindig igaz, ha a$id != ""
is igaz. Tehát végeredményben elég így:if ($id) {
Persze ez az ellenőrzés magában nem ér túl sokat.- a visszaadott hibakódjaid egyrészt nem túl beszédesek (ez nem olyan nagy gond, a fogadó oldalnak kell tudnia, mit jelentenek), másrészt viszont túl kevés van belőlük, mármint csak kétfajtát adsz vissza, de jóval többfajta hiba történhet. Ez azt jelenti, hogy a hibakezelésnek kell viszonylag bonyolultnak lennie.
-
public function setUzenet($el, $ma)
Este 11-kor én már nem fogom kitalálni, ezek a paraméterek miknek a rövidítései, és fél év múlva te sem fogod tudni.-
for($io=0;$io<count(explode(",", $ido));$io++)
Ez minden ciklusban lefuttatja az explode-ot, ami teljesen felesleges. Így jobb:for($io=0, $l = count(explode(",", $ido)); $io < $l; $io++)
- olvashatóbb a kód, ha az írásjelek közé szóközt teszel
- setter metódusokban a változó értékadását követően érdemes visszaadni a változót, így néha meg lehet spórolni egy plusz getter hívást: return $this->id = $id;
- a metódusaid eléggé hasonlítanak egymásra, a későbbiekben ezeket akár össze lehetne vonni eggyé, persze egy plusz paraméterrel
Inkább method chain
Miért?
Szerkesztve: közben leesett. A hozzászólások címeit sokszor nem látom, számomra ez használhatósági probléma már a kezdetek óta.
Sztem ezt ne
Nagyon verbose a kód szerintem
Ellenben a változók..
Ahogy Gábor is mondta.
Setter ami nem set-el
De mit csinál?
Kérdésed..
Gyorsabb-e? Nyilván nem, de nem észrevehető a lassulás. Hibamentesebb? Igen. Ez a lényeg. Bár ha gyorsaságon nem a futásidőt értjük, hanem a fejlesztésre fordított időt, akkor gyorsabb.
Amúgy használj egy jó IDE-t (PhpStorm a legjobb jelenleg, Eclipse PDT? is jó, az ingyen is van). Nehogy valaki elkezdjen sírni, hogy dehát Java, meg lassan indul el, meg 'mennyi memóriát eszik Atyaúristen!', mert sírvafakadok.
Hajrá!
Off: eclipse+java tegnap
tegnap megnéztem a netbeans, Ubuntu repoból elérhető változatát.
Sírva menekültem vissza az eclipse-hez.
Részben mert ocsmánynak tartom a swinges megjelenését, másrészt meg érezhetően lassúbb, mint az eclipse. Utóbbi csak lassan indul, de naponta/hetente/évente egyszer elviselhető.
Fontok?
Emlekbe
;)