ugrás a tartalomhoz

php osztalyok es az adatbazis kapcsolat

juhasztibi · 2010. Nov. 20. (Szo), 13.23
Sziasztok!

Szeretnem megkerdezni toletek, hogy milyen megoldast javasolnatok a kovetkezo problemamra.
Van egy db.class.php osztalyom aminek a konstruktoraban bealltigatok minden kapcsolodashoz szukseges erteket. Peldanyositasnal adom meg a szukseges ertekeket.
Ezzel nincs is gond. Csak amikor egy masik osztaly metodusaval szeretnek adatbazis muveletet vegezni akkor ujra peldanyositanom kell az adott asztalyban a db class-t, hogy tudjak kommunikalni az adatbazissal.
Kerdes tehat az lenne, hogy milyen modon lehetne inicializalni az objektumot, hogy ugymond globalisan elerheto legyen es ne kelljen ujra peldanyositani.
Vagy tenyleg mindig letre kell hoznom egy peldanyt az adott muvelehez? Ha igen akkor nyilvan egyszerubb lenne a konstruktorban default parameternek megadni a kapcsolodasi inormaciokat. PDO-t hasznalok mysql driverrel.

Elore is koszonom a valaszokat!

udv,
Tibi
 
1

Szoval a static lesz a

juhasztibi · 2010. Nov. 20. (Szo), 14.34
Szoval a static lesz a megoldas, hogy ne kelljen ujra peldanyositani es elerjem mindenhonnan a tagfuggvenyt.
Bocs, kicsit jobban utana kellett volna jarni mielott hulyeseget kerdezek.
2

Singleton, Dependency

inf · 2010. Nov. 20. (Szo), 14.57
Singleton, Dependency Injection Container kell neked.
3

Koszonom a valaszod! En erre

juhasztibi · 2010. Nov. 20. (Szo), 15.36
Koszonom a valaszod!

En erre jutottam kozben:


<?php

class db{

private static $instance; 
private $server   = "";
private $user     = "";
private $pass     = "";
private $database = "";

private function __construct($server=null, $user=null, $pass=null, $database=null){
    $this->server=$server;
    $this->user=$user;
    $this->pass=$pass;
    $this->database=$database;
}

public static function getInstance($server=null, $user=null, $pass=null, $database=null){
    if (!self::$instance){ 
        self::$instance = new db($server, $user, $pass, $database); 
    } 

    return self::$instance; 
}

public function connect(){
...
}

}

igy pedig hasznalom:

<?php
$db = db::getInstance(host, user, password, dbtable);
$db->connect();
?>
majd pedig ha uj egyed kell belole egy masik osztalyban akkor igy:

<?php
$db = db::getInstance();
?>
nem tudom, hogy mennyire szep vagy standard megoldas, de mukodik.

udv,
Tibi