Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- class Singleton
- {
- private $_values = array(); // för att hålla värden för demonstration av exemplet
- private static $_instance; // här sparar vi instansen av klassen när den skapats så att det inte kommer att skapas flera
- private function __construct() {} // vi vill inte ha en __construct metod som går att komma åt
- /* getInstance är den metod vi kommer att använda för att skapa en ny instans av klassen
- * detta är det som "gör det" singleton kan man säga
- * Vi kollar om det finns en instans av klassen sparad, om så inte är fallet så skapas en ny
- * i annat fall så använder vi den som finns
- */
- public static function getInstance() {
- if (empty(self::$_instance)) {
- self::$_instance = new Singleton();
- }
- return self::$_instance;
- }
- // 2 metoder, lägga till värde och hämta
- public function setVal($key, $val) {
- $this->_values[$key] = $val;
- }
- public function getVal($key) {
- return $this->_values[$key];
- }
- }
- // $test = new Singleton(); Detta ger fel då construct metoden inte är tillgänglig
- //istället så använder vi static metoden getInstance för att skapa en instans av klassen
- $test = Singleton::getInstance();
- //vi kan nu sätta värden till instansen av klassen
- $test->setVal("test", "hej");
- // och skriva ut det, så att vi ser att det fungerar
- echo $test->getVal("test");
- // ta bort $test
- unset($test);
- // echo $test->getVal("test"); skulle här ge fatal error då $test inte har ett värde
- // hämta en instans av klassen om det finns, annars skapa en ny
- $test2 = Singleton::getInstance();
- // värdet är fortfarande samma eftersom vårt singleton mönster inte skapat en ny instans av klassen
- echo $test2->getVal("test");
Advertisement
Add Comment
Please, Sign In to add comment