Avatar billede viciodk Praktikant
11. november 2005 - 15:09 Der er 1 kommentar og
1 løsning

Singleton i PHP

Hej,

Jeg forsøger at implementere et eksempel på en Singleton design pattern i PHP, men kan ikke gennemskue hvordan man kan oprette variablen $hest som static (dette giver en fejl-meddelelse).

I sidste ende skal outputtet fra programmet være '8' + '8', men lige nu er det '5' + '8'. $test1 og $test2 skal pege på det samme objekt. Men hvordan definerer jeg $hest som static?

<?php

class Database
{
    var $hest;

    function getInstance()
    {
        static $instance;

        if(!isset($instance))
        {
            $c = __CLASS__;
            $instance = new $c;
        }

        return $instance;
    }

    function getHest()
    {
        return $this->hest;
    }

    function setHest($nyValue)
    {
        $this->hest = $nyValue;
    }
}

$test1 = Database::getInstance();
$test2 = Database::getInstance();

$test1->setHest(5);
$test2->setHest(8);
echo $test1->getHest();
echo $test2->getHest();

?>
Avatar billede viciodk Praktikant
11. november 2005 - 15:25 #1
Woww!!! Jeg fandt søreme selv en løsning:

<?php

class Database
{
    var $hest;

    function &getInstance()
    {
        static $instance;
       
        if(!isset($instance))
        {
            $c = __CLASS__;
            $instance = new $c;
        }

        return $instance;
    }

    function &getHest()
    {
        return $this->hest;
    }

    function &setHest($nyValue)
    {
        $this->hest = $nyValue;
    }
}

$test1 =& Database::getInstance();
$test2 =& Database::getInstance();

$test1->setHest(5);
$test2->setHest(8);
echo $test1->getHest();
echo $test2->getHest();

?>
Avatar billede viciodk Praktikant
11. november 2005 - 15:25 #2
.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester