Globals!? YUCK :) A better solution IMHO that maintains encapsulation,
is to use a static var in a function:
function &getClassVar( $name )
{
return getAndSetClassVar( $name, false );
}
function &setClassVar( $name, $value )
{
return getAndSetClassVar( $name, true, $value );
}
function &getAndSetClassVar( $name, $set, &$value )
{
static $classVars = array();
if( !$set )
{
return $classVars[$name];
}
$classVars[$name] = &$value;
return $value;
}
Admittedly this is slower than using a global, but it doesn't pollute
the global scope and ensures you'll never have naming conflicts.
HTH,
Rob.
On Thu, 2003-08-28 at 13:48, Tom Rogers wrote:
>
> static calls to a class will never have $this set so you have to set
> your reference globally something like this:
>
> <?php
> $_miInstancia = array();
> class db{
> var $c;
> function db ($count=false){
> global $_miInstancia;
> $_miInstancia['db'] =& $this;
> if($count)$this->c = $count;
> // funcion que se conecta con la BBDD
> $result = @mysql_pconnect("inforalv", "discoteca", "password");
> if (!$result)
> return false;
> if ([EMAIL PROTECTED]("discoteca"))
> return false;
> }
> function &getInstancia($count=false){
> global $_miInstancia;
> if (!isset($_miInstancia['db'])){
> new db($count);
> }
> return $_miInstancia;
> }
> }
> $conexiondb =& db::getInstancia(1);
> print_r($conexiondb);
> $conexiondb2 =& db::getInstancia();
> print_r($conexiondb2);
>
> ?>
>
> (The $count was just to prove we only have the one instance)
> --
> regards,
> Tom
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>
--
.---------------------------------------------.
| Worlds of Carnage - http://www.wocmud.org |
:---------------------------------------------:
| Come visit a world of myth and legend where |
| fantastical creatures come to life and the |
| stuff of nightmares grasp for your soul. |
`---------------------------------------------'
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php