Doe ik dit goed? Singleton pattern

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ventilatiesysteem Productontwikkelaar HBO WO Verwa

Samengevat: Zij bieden flexibele ventilatiematerialen, geluidsdempers, rookgasafvoer producten en industrieslangen. Ben jij een technisch productontwikkelaar? Heb jij ervaring met het ontwikkelen van nieuwe producten? Vaste baan: Technisch Productontwikkelaar HBO WO €3.000 - €4.000 Zij bieden een variëteit aan flexibele ventilatiematerialen, geluiddempers, rookgasafvoer producten, industrieslangen en ventilatieslangen voor de scheepsbouw. Met slimme en innovatieve materialen zorgen wij voor een gezonde en frisse leefomgeving. Deze werkgever is een organisatie die volop in ontwikkeling is met hardwerkende collega's. Dit geeft goede ontwikkelingsmogelijkheden. De branche van dit bedrijf is Techniek en Engineering. Functie: Voor de vacature als Technisch Productontwikkelaar Ede Gld HBO WO ga

Bekijk vacature »

21/04/2011 18:07:40
Quote Anchor link
Ik heb tot nu toe het volgende script geschreven:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
    class Database {
        public static $dbCon;
        private $dbArray;
        private static $dbInstance;
        
        public function __construct() { }
        
        public function connect($dbArray) {
            $this->dbArray = $dbArray;
            
            try {
                $dbInit = new PDO("mysql:host=".$this->dbArray['0'].";dbname=".$this->dbArray['3'], $this->dbArray['1'], $this->dbArray['2']);
                $this->dbCon = $dbInit;
                
                return true;
            }
catch (PDOException $e) {
                return false;
            }
        }

        
        public static function getInstance() {
            if (empty(self::$dbInstance)) {
                self::$dbInstance = new self;
                
                return self::$dbInstance;
            }
        }
    }

    
    $db = Database::getInstance();
    
    if ($db->connect(array("localhost", "root", "", "cdcol"))) {
        echo "Connected";
    }
else {
        echo "Not connected";
    }

?>


Ik wil het gaan gebruiken voor een systeem(pje) waarin er meerdere libs komen vandaar dat ik als tip heb gekregen om het singleton pattern te gebruiken. Doe ik het zo op de goede manier? Alvast bedankt voor jullie reacties!
 
PHP hulp

PHP hulp

26/12/2024 16:52:51
 
Jelmer -

Jelmer -

21/04/2011 18:17:46
Quote Anchor link
- Je moet het return-statement buiten de if halen, anders werkt je method maar één keer.
- Je hoeft geen empty te gebruiken, gewoon self::$dbInstance zelf evalueren werkt prima
- Je mag je contructor en copy-constructor (naja, __clone) private maken, zodat je onmogelijk meerdere instanties kan maken.
- En het kan korter >:)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php

class Database
{
    static private $instance;
    
    private function __construct()
    {}

    
    private function __clone()
    {}

    
    static public function getInstance()
    {

        return self::$instance
            ? self::$instance
            : self::$instance = new self();
    }

    
    // of als je PHP 5.3 hebt
    static public function getInstance()
    {

        return self::$instance ?: self::$instance = new self();
    }
}

?>
 

21/04/2011 18:19:37
Quote Anchor link
@Jelmer dankjewel! Ben hier nieuw mee maar je script lijkt logisch dus ik ga me script gelijk even aanpassen.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.