[OOP] Cautare in obietele deja create de acelasi tip
Moderatori: coditza, Emil, Moderatori
- mihaitha
- Senior Member
- Mesaje: 2383
- Membru din: Vin Mai 04, 2007 12:40 pm
- Localitate: Sibiu
- Contact:
Daca lucrezi OOP si doresti ceva global, de regula metoda de abordare preferata e cu singletons - http://php.net/manual/en/language.oop5.patterns.php
- Adry.ro
- Average Member
- Mesaje: 76
- Membru din: Lun Sep 22, 2008 11:46 pm
- Localitate: Bucuresti RO
- Contact:
Am folosit ce a zis socu, o variabila statica array doar ca pun instanta obiectului creat (ma ajuta mai mult).
Ultima oară modificat Mie Mai 16, 2012 9:18 pm de către Adry.ro, modificat 1 dată în total.
- mihaitha
- Senior Member
- Mesaje: 2383
- Membru din: Vin Mai 04, 2007 12:40 pm
- Localitate: Sibiu
- Contact:
@socu - stiu foarte bine ce e un singleton, pun pariu ca tu nu stii. Daca stiai ce e iti revizuiai ultima afirmatie. Oricum exemplul ce l-ai facut tu nu are nici o legatura cu ce a cerut adry, nu e nimic in codul tau care sa previna codul din exemplul dat de el.
@adry - ceea ce faci tu acolo nu prea e kosher si nici nu stiu daca va merge, a combina self (referinta statica a clasei) si $this (instanta obiectului) sunt doua concepte care se bat cap in cap.
Iti recomand sa folosesti un singleton care contine o serie de membri de tipul object25 de-ale tale (apropo, iti recomand sa iti denumesti clasele dupa ce fac, altfel te vei uita peste 2-3 ani la codul asta si nu o sa stii ce e object25 si ce face).
[php]
<?php
class container {
private static $instance = null;
private children = array();
public static function get_instance() {
if (!isset(self::$instance)) {
$class_name = __CLASS__;
self::$instance = new $class_name;
}
return (self::$instance);
}
public add_child($id) {
while (isset($this->children[$id])) {
$id = rand(0, 999);
}
$this->children[$id] = new object25;
}
}
// apelul extern:
container::get_instance()->add(111);
container::get_instance()->add(222);
container::get_instance()->add(333);
container::get_instance()->add(111); // asta iti va intra pe random
?>
[/php]
@adry - ceea ce faci tu acolo nu prea e kosher si nici nu stiu daca va merge, a combina self (referinta statica a clasei) si $this (instanta obiectului) sunt doua concepte care se bat cap in cap.
Iti recomand sa folosesti un singleton care contine o serie de membri de tipul object25 de-ale tale (apropo, iti recomand sa iti denumesti clasele dupa ce fac, altfel te vei uita peste 2-3 ani la codul asta si nu o sa stii ce e object25 si ce face).
[php]
<?php
class container {
private static $instance = null;
private children = array();
public static function get_instance() {
if (!isset(self::$instance)) {
$class_name = __CLASS__;
self::$instance = new $class_name;
}
return (self::$instance);
}
public add_child($id) {
while (isset($this->children[$id])) {
$id = rand(0, 999);
}
$this->children[$id] = new object25;
}
}
// apelul extern:
container::get_instance()->add(111);
container::get_instance()->add(222);
container::get_instance()->add(333);
container::get_instance()->add(111); // asta iti va intra pe random
?>
[/php]
-
nevvermind
- Senior Member
- Mesaje: 1264
- Membru din: Mar Iun 22, 2010 3:17 pm
Uhm.. singleton-ul il folosesti cand vrei acelasi obiect, nu mai multe.
Pt ce vrea OP-ul se foloseste o proprietate statica, fiindca sunt *mai multe* obiecte diferite.
"Am folosit ce a zis socu , o variabila statica array doar ca pun instanta obiectului creat (ma ajuta mai mult). "
De ce ai pune instanta in proprietate? Asta-i socu-mihaitha combo.
Pt ce vrea OP-ul se foloseste o proprietate statica, fiindca sunt *mai multe* obiecte diferite.
"Am folosit ce a zis socu , o variabila statica array doar ca pun instanta obiectului creat (ma ajuta mai mult). "
De ce ai pune instanta in proprietate? Asta-i socu-mihaitha combo.
Cine este conectat
Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 4 vizitatori
