[PHP] Globale Deklaration der Datenbankklasse

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Die_Quelle, 27. Dezember 2009 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  1. #1 27. Dezember 2009
    Globale Deklaration der Datenbankklasse

    Hallöchen,

    habe folgendes Problem:

    Ich möchte gewissen Komponenten und / oder Klassenobjekte global so deklarieren, dass sie auch in anderen Klassen verfügbar sind.

    zb. sollte die Datenbankklasse in allen weiteren benutzten Klassen verfügbar sein.
    Ich möchte jedoch nicht jede Klasse so schreiben das sie die mysql-Klasse oder die Templateklasse erweitern.

    Ich hatte gehoft es über "global $db = new Mysql(); " zu tun, aber okay ich glaube ich habe das global Schlüsselwort falsch interpretiert.
    ^^ =)

    Kann mir da jemand helfen wie man soetwas lösen könnte?
    danke im voraus
     

  2. Anzeige
    Heute: Deals & Sale mit stark reduzierten Angeboten finden.
  3. #2 27. Dezember 2009
    AW: Globale Deklaration der Datenbankklasse

    Du musst global in jeder Funktion/Methode auf die Variable anwenden um sie als Globale zu deklarieren.

    PHP:
    $db  = new  Mysql ;

    function 
    a ()
    {
        global 
    $db ;
        
    //code..
    }

    function 
    b ()
    {
        global 
    $db ;
        
    //code..
    }

    function 
    c ()
    {
        global 
    $db ;
        
    //code..
    }
    oder du benutzt die Superglobale $GLOBALS:

    PHP:
    $db  = new  Mysql ;

    function 
    a ()
    {
        
    $GLOBALS [ 'db' ]->...
    }
    oder du Speicherst die Klasseninstanz in einer public static Klassenvariable.

    PHP:
    class  Core
    {
        public static 
    $db ;
    }


    function 
    x ()
    {
        
    Core :: $db ->...
    }
     
  4. #3 28. Dezember 2009
    AW: Globale Deklaration der Datenbankklasse

    oder als singleton, nicht ganz übersichtlich aber es geht
    PHP:
    <? php
    class  db
    {
        private static 
    $instance  NULL ;
        
        private function 
    __construct (){}

        public static function 
    run ()
        {
            if(!
    self :: $instance )
            {
                
    self :: $instance  = new  PDO ( 'mysql:host=localhost;dbname=test' , 'root' , 'tester' );
                
    self :: $instance -> setAttribute ( PDO :: ATTR_ERRMODE PDO :: ERRMODE_EXCEPTION );
            }
            return 
    self :: $instance ;
        }
        
        private function 
    __clone (){}
    }

    // und jetzt einfach anwenden
    $sql  "SELECT "
    $res  db :: run ()-> prepare ( $sql );
    while(
    $row  $res -> fetch ())  // u.s.w
    ?>
     
  5. #4 28. Dezember 2009
    AW: Globale Deklaration der Datenbankklasse

    okay also würde es reichen wenn ich in meinem konstruktor jeder / der klassen die das objekt enthalten sollen,... oder halt expizit im aufruf global $db->MeinMySQLKlassenBefehl(); aufrufe?!

    oder halt eine private variable in jeder klasse, die das objekt einmalig im konstruktor übergeben bekommt ... mhh klingt relativ plausibel =)

    okay ich werde das mal versuchen umzusetzen, danke =)
     
  6. #5 29. Dezember 2009
    AW: Globale Deklaration der Datenbankklasse

    keine private variable oder sonstige, benutze das singleton. spart ressourcen und rechenzeit ;)
     

  7. Videos zum Thema
Die Seite wird geladen...
Similar Threads - PHP Globale Deklaration
  1. Antworten:
    0
    Aufrufe:
    4.066
  2. Antworten:
    0
    Aufrufe:
    4.345
  3. Antworten:
    4
    Aufrufe:
    6.385
  4. Antworten:
    5
    Aufrufe:
    16.317
  5. Gute PHP Template Engine

    Yuesang , 20. Februar 2017 , im Forum: Webentwicklung
    Antworten:
    4
    Aufrufe:
    6.586
  • Annonce

  • Annonce