zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden Global auf Objekte zugreifen

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 31.05.2007, 12:40
Benutzerbild von fox
fox fox ist offline
Erfahrener Benutzer
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 11.09.2006
Beiträge: 1.008
fox sorgt für eine eindrucksvolle Atmosphärefox sorgt für eine eindrucksvolle Atmosphäre
Standard Global auf Objekte zugreifen

Hallo,


ich steh grad vor einem Problem - mehr oder weniger.

Ich habe eine Globale Klasse in PHP, mit der ich auf alles zugreife... Datenbank, Template- und Sprachsystem, etc.

Eine neue Instanz wird in einer Variable gespeichert, z.B. $obj.
Zugriff auf die Datenbank wird dann durch $obj->db->tu_was(); möglich.

Wie kann ich es allerdings ohne ständig das Objekt zu globalisieren realisieren, dass ich z.B. auch von der Template-Klasse auf die Datenbank zugreifen kann, auch ohne dass ich eine Kopie der Datenbank z.B. als Argument angebe ($obj->tpl->tu_was_anderes(&$obj->db);)

Ich vermute ja fast, dass es da keine andere möglichkeit gibt, außer das ganze statisch zu machen und dann so darauf zuzugreifen: Database::tu_was();

Diese Lösung fände ich allerdings nicht so toll - hat da jemand noch bessere Ideen?


lg
__________________
:)
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 31.05.2007, 20:01
Benutzerbild von netspy
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 13.08.2004
Ort: Leipzig
Beiträge: 1.953
netspy sorgt für eine eindrucksvolle Atmosphärenetspy sorgt für eine eindrucksvolle Atmosphäre
Standard

Eine Möglichkeit ist ein Singleton-Muster:
PHP-Code:
<?php

    
/**
     * Klassendefinition
     */

    
class Klasse {

        private static 
$instance FALSE;

        
// Konstruktor verstecken
        
private function __construct() { }

        
// Singleton-Muster
        
public static function getInstance() {

            if (
self::$instance === FALSE) {

                
self::$instance = new Klasse();

            }

          return 
self::$instance;

        }

    }

?>
Damit kannst du jetzt von überall auf immer die gleiche Instanz deiner Klasse zugreifen:
PHP-Code:
$obj Klasse::getInstance(); 
Mario
__________________
AppDev Blog · AppDev Forum
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 01.06.2007, 11:49
Benutzerbild von fox
fox fox ist offline
Erfahrener Benutzer
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 11.09.2006
Beiträge: 1.008
fox sorgt für eine eindrucksvolle Atmosphärefox sorgt für eine eindrucksvolle Atmosphäre
Standard

Hm, diese Lösung gefällt mir auch nicht wirklich, ist aber jedenfalls ein Ansatz, danke trotzdem
__________________
:)
Mit Zitat antworten
  #4 (permalink)  
Alt 01.06.2007, 12:19
Benutzerbild von netspy
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 13.08.2004
Ort: Leipzig
Beiträge: 1.953
netspy sorgt für eine eindrucksvolle Atmosphärenetspy sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von fox Beitrag anzeigen
Hm, diese Lösung gefällt mir auch nicht wirklich, ist aber jedenfalls ein Ansatz, danke trotzdem
Singleton-Patterns sind aber durchaus gebräuchlich und IMO genau das richtige für dein Anliegen.

Mario
__________________
AppDev Blog · AppDev Forum
Mit Zitat antworten
  #5 (permalink)  
Alt 01.06.2007, 14:56
Benutzerbild von Yhi
Yhi Yhi ist offline
/* no comment */
XHTMLforum-Mitglied
 
Registriert seit: 28.05.2006
Beiträge: 208
Yhi befindet sich auf einem aufstrebenden Ast
Standard

Ich war mit Singletons auch nicht ganz glücklich und habe daher was eigenes gemacht. Hab darüber vor einer Weile gebloggt.

Meine Lösung ist auch nicht ganz ideal, aber ich habe nichts besseres gefunden. Denke auch dass es derzeit nix anderes gibt.
__________________
PHP und Webdesign Blog
Mit Zitat antworten
  #6 (permalink)  
Alt 01.06.2007, 16:37
Benutzerbild von fox
fox fox ist offline
Erfahrener Benutzer
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 11.09.2006
Beiträge: 1.008
fox sorgt für eine eindrucksvolle Atmosphärefox sorgt für eine eindrucksvolle Atmosphäre
Standard

So wie ich das sehe sind wohl Singletons die einzige vernünftige Möglichkeit, global darauf zuzugreifen. Werds wohl (erstmal?) so lösen, danke euch beiden!
__________________
:)
Mit Zitat antworten
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
3D Objekte in HTML5 Chemika (X)HTML 2 28.06.2011 13:59
[PHP] Attribut 'global' markuskoehler Serveradministration und serverseitige Scripte 6 22.11.2008 18:10
Was macht dieses Script ? lullaby Javascript & Ajax 15 23.06.2008 00:26
Abmahnungen. AT-Site sperrt deutsche Leser global aus. EvT Offtopic 45 27.11.2007 13:33
Mehrere Objekte horizontal zentrieren und ausrichten... el_vital CSS 5 26.09.2005 19:17


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:24 Uhr.