Strict Standards: Creating default object from empty value

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Strict Standards: Creating default object from empty value

    Hallo,

    erhalte folgende fehlermeldung
    Strict Standards: Creating default object from empty value in E:\xampp\htdocs\lebensraum\application\models\LeftMenues.php on line 20

    PHP-Code:
    class LeftMenues extends AdminController
        
        
    {
        public function 
    __construct($baseUrl)
            {
            
    $array=array
                (
                
    "step" => "menue",
                
    "link" => $baseUrl "/admin/menu-add",
                
    "alt" => "neue News anlegen",
                
    "text" => "Neue news anlegen"
                
    );

            
    $this->AddMenuPageObject($array);
            }

        public function 
    AddMenuPageObject($array)
            {
            
    $this->_mnuPageObject->text=$array["text"];
            }

        } 
    Weiss da jemand Rat

    derTrallala
    Manchmal verliert ma eben ... und manchmal gewinnen die Anderen

  • #2
    $this->_mnuPageObject
    existiert warum auch immer nicht


    Mit folgender Zeile eingefügt geht es
    PHP-Code:
    <?php
    error_reporting
    (E_ALL E_STRICT);


    class 
    LeftMenues
    {
        public function 
    __construct($baseUrl)
        {
            
    $array=array
            (
            
    "step" => "menue",
            
    "link" => $baseUrl "/admin/menu-add",
            
    "alt" => "neue News anlegen",
            
    "text" => "Neue news anlegen"
            
    );
     
    #insert
            
    $this->_mnuPageObject = new stdClass();
     
    #insert/
            
    $this->AddMenuPageObject($array);
        }

        public function 
    AddMenuPageObject($array)
        {
            
    $this->_mnuPageObject->text=$array["text"];
        }

    }
        
        
    $test = new LeftMenues("bla");
        
    print_r($test);
    davon rate ich aber ab - irgendein Bytecache hatte afaik mal Probleme mit der stdClass, und das sieht so oder so mehr nach einem Applikationsfehler aus.

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      Hallo,

      irgendwie habe ich da jetzt ein Verständnisproblem.

      Alles was ich möchte, ist menuobjekte zu erstellen, in etwa sowas


      ein Menu-Objekt für News (insert|edit|delet)
      eines für Workshops (insert|edit|...)

      die würde ich d gerne über den Konstruktor der Klasse Leftmenues füllen.

      Evt. hat da jemand einen hilfreichen Ansatz ...
      Manchmal verliert ma eben ... und manchmal gewinnen die Anderen

      Kommentar


      • #4
        Mit new LeftMenues("bla"); wird der Konstruktor von LeftMenues() aufgerufen.
        Der ruft die Methode AddMenuPageObject() auf.
        In dieser wird auf eine Property _mnuPageObject zugegriffen, die nicht existiert.
        Deshalb die Fehlermeldung.

        Du mußt nun irgendwie dafür sorgen, dass _mnuPageObject existiert.
        Entweder erzeugst du es wie ghostgambler vorgeschlagen hat, oder du überlegst dir mal, was es eigentlich sein sollte.

        Ich vermute, dass dir da ein Blick in die Klasse AdminController helfen wird. Wenn dort im Konstruktor irgendwo _mnuPageObject auftaucht, solltest du in deiner Klasse LeftMenues diesen Konstruktor aufrufen. Denn offensichtlich erledigt er wichtige Dinge.

        Du erreichst in via parent::__construct().

        Kommentar


        • #5
          Hallo,

          was ist denn mit dem Kritikpunkt von Ghostgambler.

          Wenn ich das richtig verstehe erzeugt stdClass das einfachst-mögliche Objekt ohne Methoden oder Properties

          Sehe ich das richtig???

          derTrallala
          Manchmal verliert ma eben ... und manchmal gewinnen die Anderen

          Kommentar


          • #6
            Naja, wenn du nicht mal weißt, was ein Bytecache ist, dann hast du auch keinen. Insofern ist ghostgamblers Einwand belanglos.

            Aber du solltest von seinem Tipp dennoch Abstand nehmen. Denn StdClass() erzeugt dir ein Objekt ohne jegliche Methoden oder Properties. Insbesondere ohne StdClass::text.

            ... bevor ich noch lange rumschwatz, tu uns beiden den Gefallen und schau in die Klasse AdminController. Such dort nach _mnuPageObject.
            Du wirst hoffentlich erkennen, dass dieses _mnuPageObject irgendwas besonderes ist. Jedenfalls mehr als eine Instanz von StdClass().

            Kommentar

            Lädt...
            X