bituniverse.com Foren-Übersicht bituniverse.com
Entwickler Forum
 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

global in funktionen und klassen hat nichts zu suchen

 
Neues Thema eröffnen   Neue Antwort erstellen    bituniverse.com Foren-Übersicht -> Code-Schnipsel
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Slava
Administrator


Anmeldedatum: 16.01.2007
Beiträge: 282
Wohnort: Köln

BeitragVerfasst am: Mi 23 Apr, 2008 21:58    Titel: global in funktionen und klassen hat nichts zu suchen Antworten mit Zitat

wie titel schon sagt:global in funktionen und klassen hat nichts zu suchen[/b]
die gloable Variablen können viele Probleme verursachen, da bei den grossen Scripts wird die kontrolle über der Anzahl und die Namen von Variablen oft unübersichtlich und kann schnell bei zu Überschneidungen kommen. Aus diesem Grund wurde auch bei PHP5 Register-Globals auf 'OFF' gesetzt und für die Variablen die Namensräume an Hand von Herkunft zugewiesen ($_SERVER, $_COOKIE,$_GET,$_POST,$_FILES) und als letzter Versteck $GLOBALS.
Wer PHP5 nutzt, kann jetzt sich selbst ein "Schrank" für die Variablen schafen und von überall auf die Variablen von beliebigen Typen lesend und schreibend zuzugreifen. Dank modifer 'static' und einem wirklich sinnvollem Einsatz von Singelton-Pattern wurde für diese Technik schon eine Name vergeben "Registry".
Hier presentiere ich meine primetive Registry, die ich für die pivate als auch die geschäftliche Zwecke immer wieder benutze.

Php:
  1. <?php
  2. /**
  3.  * Class BU_Registry
  4.  * globaler Behaelter fuer die Variablen und objecten, der statt global verwendet wird
  5.  * Singelton
  6.  * @autor Slava
  7.  * @example
  8.  * //instanzieren
  9.  * $r=BU_Registry::getInstance();
  10.  * $r->ding=new stdClass();
  11.  * $r->ding->test='hallo wellt';
  12.  *  
  13.  * //und dann irgendwo in einer funktion oder anderer stelle
  14.  * $a=BU_Registry::getInstance();
  15.  * if(isset($a->ding->test))
  16.  * echo $a->ding->test;
  17.  *
  18.  */
  19. class BU_Registry
  20. {
  21.   /**
  22.    * behaelter fuer die objecte und variablen
  23.    * @staticvar registry
  24.    * @access protected
  25.    */
  26.   protected static $registry;
  27.  
  28.   /**
  29.    * factory singelton methode zum aufrufen von BU_Registry instance
  30.    *
  31.    * @return BU_Registry
  32.    */
  33.   public static function getInstance()
  34.   {
  35.     if(!isset(self::$registry))
  36.     self::$registry=new self();
  37.  
  38.     return self::$registry;
  39.   }
  40.  
  41.   /**
  42.    * konstructor
  43.    * @access private
  44.    */
  45.   private function __construct()
  46.   {
  47.     self::$registry=new stdClass();
  48.   }
  49.  
  50.   /**
  51.    * magische methode __get
  52.    *
  53.    * @param string $was
  54.    * @return mixed
  55.    */
  56.   public final function __get($was)
  57.   {
  58.     return self::$registry->$was;
  59.   }
  60.  
  61.   /**
  62.    * magische methode __set
  63.    *
  64.    * @param string $was
  65.    * @param mixed $wert
  66.    */
  67.   public final function __set($was,$wert)
  68.   {
  69.     self::$registry->$was=$wert;
  70.   }
  71.  
  72.   /**
  73.    * magische methode __isset
  74.    *
  75.    * @param string $was
  76.    * @return bool
  77.    */
  78.   public final function __isset($was)
  79.   {
  80.     return isset(self::$registry->$was);
  81.   }
  82. }#end class BU_Registry
  83. ?>

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    bituniverse.com Foren-Übersicht -> Code-Schnipsel Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB2.de
Powered by WebRing.