kostenloser Webspace werbefrei: lima-city


Statische Trait-Methode liefert NULL-Resultat

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    bastians-seite

    Kostenloser Webspace von bastians-seite

    bastians-seite hat kostenlosen Webspace.

    Gelöst
    #NR_Sprache.php
    trait NR_Sprache
    {
        use NR_Konfig;
        public static function Sprachdatei_laden($Sprachobjekt)
        {
            $XMLDatei = simplexml_load_file(NR_Konfig::$Datei_Sprache);
            $XMLSprachenListe = array("Deutsch", "Italienisch", "Japanisch");
            
            foreach($XMLSprachenListe as $SprachenDurchgang)
            {
                if($SprachenDurchgang === $Sprachobjekt)
                {
                    $XMLDatei = $XMLDatei->$Sprachobjekt;
                    return $XMLDatei;
                }
            }
                    
            return $XMLDatei;
        }
    }
    
    
    #NR_Meldungen.php
    trait NR_Meldungen
    {
        use NR_Sprache;
        public static function Fehler($Code)
        {
            $XMLFehler = NR_Sprache::Sprachdatei_laden("Deutsch")->Fehler;
            $XMLFehlerListe = array(0=>$XMLFehler->Code_0,1=>$XMLFehler->Code_1,2=>$XMLFehler->Code_2); 
      
                foreach(array_keys($XMLFehlerListe) as $AnzahlFehlerID)
                {
                    if($AnzahlFehlerID === $Code)
                    {
                        return $XMLFehlerListe[$AnzahlFehlerID][0];
                    }
                }
        }
        
    }
    
    
    #NR_Sprache.xml (vereinfacht)
    <?xml version="1.0" encoding="UTF-8"?>
    <PS>
    
        <Deutsch>
    	<Fehler>
                <Code_0>Ungültige Zeichenanzahl</Code_0>
                <Code_1>Ungültige E-Mail-Adresse angegeben</Code_1>
                <Code_2>Ungültiges Zeichen verwendet</Code_2>
    	</Fehler>
        </Deutsch>
    
    </PS>


    ---------------------------------------------------------

    Ich habe folgende XML-Datei:
    <?xml version="1.0" encoding="UTF-8"?>
    <PS>
    
        <Sprache ID="Deutsch">
    	<Fehler>
                <Code_0>Ungültige Zeichenanzahl</Code_0>
                <Code_1>Ungültige E-Mail-Adresse angegeben</Code_1>
                <Code_2>Ungültiges Zeichen verwendet</Code_2>
    	</Fehler>
        </Sprache>
    
    </PS>


    Hier ist die Variable hinterlegt:
    trait NR_Konfig
    {
        static $Datei_Sprache = "NR_Sprache.xml";
        
    }


    Nun wird die XML-Datei geladen und Element mit "ID"-Attribute-Wert "Deutsch" ausgewählt:
    trait NR_Sprache
    {
        use NR_Konfig;
        public static function Sprachdatei_laden($Sprachobjekt="Deutsch")
        {
            $XMLDatei = simplexml_load_file(self::$Datei_Sprache);
            switch($Sprachobjekt)
            {
                case "Deutsch":
                    $XMLAusgewaehlteSprache = $Sprachobjekt;
                break;
            }
            $XMLDatei->Sprache["ID"] = $XMLAusgewaehlteSprache;
            return $XMLDatei;
        }
    }


    Als nächstes ordne ich den XML-Nodes Fehler-Codes zu:
    trait NR_Meldungen
    {
        use NR_Sprache;
        public static function Fehler($Code)
        {
            $XMLFehler = self::Sprachdatei_laden();
            $XMLFehlerListe = array(0=>$XMLFehler->Code_0, 1=>$XMLFehler->Code_1,
                                    2=>$XMLFehler->Code_2
                                     
                
                                    );
    
            foreach($XMLFehlerListe as $FehlerCode)
            {
                if($FehlerCode[0] == $Code)
                {
                    # print und return probiert
                    print $FehlerCode[1];
                }
            }
        }
        
        
    }


    Da die unstatische Verwendung der trait-Methoden nicht funktionierte, wandelte ich sie in statische um.
    Echt seltsam, hab deprecated Warnungen erhalten.
    Kann ich da keinen return empfangen bzw. auswerten, müsste doch gehen? Sind Trait-Methoden nicht schon automatisch statisch??
    Folgendes gibt den Typ Null zurück:
    #Klasse KL_Formular (hat ein Interface, zwei private und eine öffentliche Methode)
    use NR_Meldungen;
      var_dump(self::Fehler(0));
      $GLOBALS['PS_ANTWORT'] .= self::Fehler(0);


    (Hier werden dementsprechend nur die breaks ausgegeben):
    print "<br/><br/>".$GLOBALS['PS_ANTWORT'];


    Kann mir da bitte evt. jemand weiterhelfen, entdeckt jemand den Fehler? Bin zu müde und unerfahren im Umgang mit traits allgemein.













    Beitrag zuletzt geändert: 14.7.2020 12:04:52 von bastians-seite
  2. 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!