kostenloser Webspace werbefrei: lima-city


Variable global verfügbar machen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    das-koenigreich

    das-koenigreich hat kostenlosen Webspace.

    Ich brauche eine Variable in fast allen Methoden, gibt es eine Möglichkeit, diese global verfügbar zu machen, so dass man nicht in jeder Methode "global [Variablenname]" schreiben muss?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Das exakt gleiche Problem hatte ich auch schon. Hab ziemlich lang gegoogelt und gesucht und dabei wirklich nur deine Lösung (global [Variablenname]) gefunden.

    Meines Erachtens kommst du nicht drum herum. Sonst wäre auch ich über eine Lösung sehr erfreut.
  4. Meinst du alle Funktionen innerhalb von eine Skript? Kannst du dann nicht eine Konstante nutzen?
    Die werde in PHP glaub ich mit DEFINE deklariert. Kannst dir das ja auf PHP.net mal anschauen.

  5. Autor dieses Themas

    das-koenigreich

    das-koenigreich hat kostenlosen Webspace.

    Ich meine es so, dass alle Funktionen und alle Methoden aller Klassen auf diese Variable zugreifen können.

    Das mit der Konstante ist eine sehr gute Idee, danke :thumb:. Eine Lösung für Variablen wäre aber noch besser.
  6. g****e

    mit global wie mein vorgänger es gemacht hat:

    $var = 'value';
    function foo() {
        global $var;
        echo $var; //returns value
    }


    das gleiche kommt auch bei raus, wenn man das $GLOBALS array nutzt. dieses array enthält alle variablen die im globalen scope bekannt sind.
    http://php.net/manual/de/reserved.variables.globals.php

    du könntest also einfach so:
    $var = 'value';
    function foo() {
        echo $GLOBALS['var']; //returns value
    }


    ergibt das gleiche.

    hoffe es hilft ;-)

    es gibt sonst noch perverse tricks wie "temporäre sessionvariablen", dass du das in eine session füllst. du kannst auch noch perversere dinge tun, zb deine values im $_POST oder $_GET array ablegen. da diese aber schon belegt sein können versichere dass sie nicht belegt sind!!! außerdem entstehen hier sicherheitslücken wenn man damit nicht richtig arbeitet.

    ich hoffe damit kannst du was anfangen ;-)
  7. Das ist ein geläufiges Problem und man hat auch bereits viele Lösungen dafür gefunden. Dependency Injection ist ein Beispiel hierfür. Grundidee ist, dass alle für die Funktionalität einer Klasse benötigten Variablen "injected" werden.

    Aber es gibt auch deutlich einfachere Design Pattern als DI (welches normalerweise ein größeres Framework erfordert, um einigermaßen nutzbar zu sein), zumindest solange man recht wenige globale Variablen benötigt. Die meiner Meinung nach einfachste Variante ist die Registry. Eine Möglichkeit diese zu implementieren sind öffentliche statische Eigenschaften in einer Klasse:
    class R {
        public static $db;
        public static $session;
        public static $user;
        public static $tplData;
        public static $tplName;
        // ...
    }
    
    R::$db->query();
    
    doQuery();
    function doQuery() {
        R::$db->query(); // YES, it does!
    }
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!