[PHP] Statische Klassenmethode Datei soll nur ein mal ausgelesen werden.

Dieses Thema im Forum "Webentwicklung" wurde erstellt von frankred, 9. März 2010 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 9. März 2010
    Statische Klassenmethode Datei soll nur ein mal ausgelesen werden.

    Hi Leute habe mit nem Kumpel gerade angefangen ein neues Projekt zu beginnen.
    Wollen unsere Konfugurationswerte gerne auslagern in eine *.properties datei die folgendermaßen aussieht
    Code:
    mysql_server=localhost
    mysql_username=root
    mysql_password=
    mysql_database=abc
    
    Die Klasse mit der wir auf die Werte zugreifen ist die Config.class.php diese sieht folgendermaßen aus.

    PHP:
    <? php
        
    class  Config {

            public function 
    __construct (){
                    
            }
            
            public static function 
    getValue ( $key ){
                
    $constants  parse_ini_file ( '/configs/config.properties' );                     
                return 
    $constants [ $key ];
            }
        }
    Mittels dieser statischen Methode getValue hat man also zugriff auf die Werte. Das Problem dabei ist dass die datei jedesmal neu ausgelesen wird, was natürlich unnötig ist. Was könnten wir dagegen tun? Uns fehlt jeglicher ansatz? Die Methode sollte aufjedenfall statisch bleiben damit der Zugriff von jeder Klasse möglich ist.

    Vielleicht kann mir ein PHP-Crack weiterhelfen

    Grüßle Frankiii
     
  2. 9. März 2010
    AW: Statische Klassenmethode Datei soll nur ein mal ausgelesen werden.

    geht sogar nativ seit php4
    siehe: PHP: Geltungsbereich von Variablen - Manual

    PHP:
    <? php

    class  Config
    {

        public function 
    __construct ()
        {
                
        }
        
        public static function 
    getValue ( $key )
        {
            static 
    $constants  null ;
            if(
    null  ===  $constants )
                
    $constants  parse_ini_file ( '/configs/config.properties' );      
                
            return 
    $constants [ $key ];
        }
    }
     
  3. 9. März 2010
    AW: Statische Klassenmethode Datei soll nur ein mal ausgelesen werden.

    Hey du bist echt genial, hat super funktioniert! 1000 Dank BW is raus. :]

    Ganz verstanden habe ich das leider jedoch nicht. erst wird die variable null gesetzt (static $constants = null

    anschließend geprüft ob es null ist. Müsst normal doch immer in den Anwendungsblock reinrutschen (machts aber nicht habs ja getestet). Verstehn tu ichs dennoch nicht wirklich^^
     
  4. 9. März 2010
    AW: Statische Klassenmethode Datei soll nur ein mal ausgelesen werden.

    mit "static" bleibt die variable auch nach verlassen der funktion (durch return) erhalten.

    ich deklariere die variable mit static und setze den ausgangswert (hier null)
    anschließend prüfe ich ob die variable null ist (was bedeutet das dies der erste aufruf der funktion ist) und belege die variable mit dem wert der funktion "parse_ini_file".

    beim nächsten aufruf wird der teil übergangen, da die variable nicht mehr null ist.

    kurz: durch die verwendung von "static" ist die variable nicht mehr an den stack gebunden.
    d.h. aber auch das du dich selber um die bereinigung kümmern musst, denn so können selbst in php
    speicherlecks entstehen.
     
  5. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.