> -----Original Message-----
> From: Julian [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, January 16, 2008 3:39 PM
> Cc: php-general@lists.php.net
> Subject: Re: [PHP] green bean question on singleton php5
> 
> 
> nope... only works if I change
> 
> $dummy= new dbaccess();
> 
> and keep the rest .....
> 
> Thanks.
> 
> 
> ... hope it does not repeat... got undelivered...
> 
> Eric Butera wrote:
> > On Jan 16, 2008 12:57 PM, julian <[EMAIL PROTECTED]> wrote:
> >
> >> Hi,
> >>
> >> I am implementing this
> >>
> >> class dbaccess{
> >>    static $db=null;
> >>    static $othervar=33;
> >>
> >>    private  function dbaccess(){
> >>      dbaccess::$db= new mysqli("localhost",USER,PASSWD,DB);
> >>      if(mysqli_connect_errno()){
> >>        echo "no way";
> >>      }
> >>    }
> >>
> >> public static function GetDb(){
> >>    if(dbaccess::$db==null){
> >>    dbaccess::$db= new dbaccess();
> >>    }
> >>    return  dbaccess::$db;
> >>
> >>    }
> >> }
> >>
> >>
> >> $db=dbaccess::GetDE();
> >>
> >> $db->query(..................);
> >>
> >> will fail...with Call to undefined method dbaccess::query()
> >>
> >> apparently $db is of type dbaccess... and thus has not does not have
> >> query implemented....
> >>
> >>
> >> any hhelp appreciated.....
> >>
> >> JCG
> >>
> >> --
> >> PHP General Mailing List (http://www.php.net/)
> >> To unsubscribe, visit: http://www.php.net/unsub.php
> >>
> >>
> >>
> >
> > Try changing dbaccess to self inside the class.
> >
> > Look at this:
> > http://us.php.net/manual/en/language.oop5.patterns.php
> > Example#2 Singleton Function
> >
> >

Not the ideal solution, but this is what I meant:

class dbaccess {

  private static $db = null;
          
  public static function GetDb() {
    if (!isset(self::$db)) {
        self::$db = new mysqli("localhost", USER, PASSWD, DB);
        if(mysqli_connect_errno()) {
          die("Very bad, you need to handle errors better");
        }
    }
    return self::$db;
  }
}
        
$db = dbaccess::GetDb();
$stmt = $db->query('SHOW DATABASES');

print_r($stmt); // Outputs "mysqli_result Object ( )"

Regards,

Rob

Andrés Robinet | Lead Developer | BESTPLACE CORPORATION
5100 Bayview Drive 206, Royal Lauderdale Landings, Fort Lauderdale, FL 33308
| TEL 954-607-4207 | FAX 954-337-2695
Email: [EMAIL PROTECTED]  | MSN Chat: [EMAIL PROTECTED]  |  SKYPE:
bestplace |  Web: http://www.bestplace.biz | Web: http://www.seo-diy.com

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to