Re: Classes and access to outside variables

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



That's incorrectly syntactically. Won't run.

----

Ok, let's write some code to show how this can be done:

class SearchHelper extends AjaxACApplication {
  private $dbh;
  public function __construct() {
    $this->dbh = $GLOBALS['dbh'];
  }
}

----

Better yet, pass the database host in the construction:

class SearchHelper extends AjaxACApplication {
  private $dbh;
  public function __construct($dbh) {
    $this->dbh = $dbh;
  }
}

$searchHelper = new SearchHelper($dbh);

----

Even better, DON'T use globals:

class DatabaseConnectionInfo {
  private var $host;
  ...
  public function getHost() {
    return $this->host();
  }
  ...
  private static $defaultConnectionInfo;
  public static function getDefault() {
    if (self::$defaultConnectionInfo === null) {
    ...build default connection...
    }
    return self::$defaultConnectionInfo;
  }
}

class SearchHelper extends AjaxACApplication {
  private $dbh;
  public function __construct(DatabaseConnectionInfo $connectionInfo = null)
{
    if ($connectionInfo === null) {
      $connectionInfo = DatabaseConnectionInfo::getDefault();
    }
    $this->dbh = $connectionInfo->getHost();
  }
}

Yes, I know what you're thinking, too much more code for just a stupid
thing. Trust me, refactoring it's easier when the code was written right the
first time.

2007/9/30, 潘志彬 <ryu.pan@xxxxxxxxx>:
>
> $dbh = 'test';
>
> class search_helper extends AjaxACApplication
>     {
>         /**
>          * Database connection details
>          */
>
>        // announce global variable before use it
>        global $dbh;
>
>         $db_hostname = $dbh;
>
>
>        ...
>
> Regards,
> Ryu
>
>
>
> 2007/9/29, Merlin <ngroups@xxxxxxxxxxx>:
> >
> > Hi there,
> >
> > I am new to PHP classes and I do want to access a variable outside the
> > class, but somehow that does not work. global also does not have any
> > effect.
> >
> > In the following example I would like to be able to access $dbh from
> > inside the class like I did in that example. This does not work. Can
> > somebody please give me a hint on the right syntax?
> >
> > $dbh = 'test';
> >
> > class search_helper extends AjaxACApplication
> >     {
> >         /**
> >          * Database connection details
> >          */
> >
> >         var $db_hostname = $dbh;
> >
> > Thank you for any help,
> >
> > Merlin
> >
> > --
> > PHP General Mailing List (http://www.php.net/)
> > To unsubscribe, visit: http://www.php.net/unsub.php
> >
> >
>

[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux