Hi Jochem, Sorry, I missed "static". So, getDB() would works like singleton, right? I agree that's better method to manage dbh. On Dec 19, 2007 11:27 PM, Jochem Maas <jochem@xxxxxxxxxxxxx> wrote: > js schreef: > > That wouldn't work well when you have to update multiple tables in a > > transaction. > > I think it's more maintainable to use GLOBALS than passing around dbh > > to classes/functions. > > getDB() is a function that returns a database connection wrapper object not > a handle to a connection (that handle is assumed to be stored inside the object). > > it is also assumed that this connection object has a query method of some sort > so you could do something like: > > myBigTransaction() { > $db = getDB(); > $db->trans(); > $db->query(/* bla */); > $db->query(/* bla */); > $db->query(/* bla */); > $db->commit(); > } > > BUT regardless of that example you can still get rid of the global dbh by > replacing references to $GLOBALS['my_dbh'] with something like getDBH() with > no functional difference except you nolonger have global variables that > are overrideable. > > if you don't understand what I am saying (as your last reply seemed to imply) > then please let's just leave it at that. > > > > > > On Dec 19, 2007 11:07 PM, Jochem Maas <jochem@xxxxxxxxxxxxx> wrote: > >> please reply to the list ... > >> > >> js schreef: > >>> I always store database handler in $GLOBALS. > >>> I think that's the best place to save request-level-global. > >>> I wonder where other people save that kind of data. > >> how about a static variable inside a function or a static member of a class. > >> > >> e.g. > >> > >> function getDB($args) { > >> static $conn = array(); > >> > >> $key = serialize($args); > >> if (!isset($conn[ $key ]) > >> $conn[ $key ] = new DBConn($args); > >> > >> return $conn[ $key ]; > >> > >> } > >> > >>> On Dec 19, 2007 9:52 PM, Jochem Maas <jochem@xxxxxxxxxxxxx> wrote: > >>>> Sancar Saran schreef: > >>>>> Hello list. > >>>>> > >>>>> I want know to you opinions about using $GLOBALS directly. > >>>>> > >>>>> like > >>>>> > >>>>> $GLOBALS['myString'] = 'test'; > >>>>> $GLOBALS['myArray']['this'] = 'this'; > >>>>> $GLOBALS['myArray']['that'] = 'that'; > >>>>> $GLOBALS['myClassObj] = new SomeClass; > >>>> there is no real difference between 'global $foo' and $GLOBALS['foo'], > >>>> and the second is probably more maintainance friendly (as Rob pionted out) > >>>> > >>>> that said, avoid globals like the plague - sometimes you may come up with > >>>> a situation where using a global is really necessary - such situations should > >>>> be the exception rather than the rule, often if your thinking of using a > >>>> global there is another way of doing it. jmho > >>>> > >>>> > >>>>> Regards > >>>>> > >>>>> Sancar > >>>>> > >>>> -- > >>>> PHP General Mailing List (http://www.php.net/) > >>>> To unsubscribe, visit: http://www.php.net/unsub.php > >>>> > >>>> > >> > > -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php