Steffen: Strict Mode PHP Notice Frage

Hallo Forumleser,

bin gerade dabei ein sauberen PHP Code zu schreiben bekomme aber beim Strict Mode eine Notice, womit ich nichts anfangen kann.

Strict Standards: Non-static method DepartmentSQL::QueryAll() should not be called statically, assuming $this from incompatible context in C:\Users\steffen\workspace\sysld\trunk\class\dao\DepartmentDAO.class.php  on line 9

Zeile 9: $sql = DepartmentSQL::QueryAll();

Die Klasse schaut dementsprechend so aus:

class DepartmentSQL{  
	  
	function QueryAll(){  
	    $sql = "SELECT id, name, costcenter "  
	         . "FROM t_department "  
	         . "ORDER BY name;";  
	    return $sql;  
	}  
}

Kann mir jemand helfen, wie ich diesen "Fehler" behebe?

mfg Steffen

  1. Hallo,

    bin gerade dabei ein sauberen PHP Code zu schreiben bekomme aber beim Strict Mode eine Notice, womit ich nichts anfangen kann.

    Strict Standards: Non-static method DepartmentSQL::QueryAll() should not be called statically, assuming $this from incompatible context in C:\Users\steffen\workspace\sysld\trunk\class\dao\DepartmentDAO.class.php  on line 9

    Du kennst den Unterschied zwischen statischen und nicht statischen Methoden? Versuche, die Fehlermeldung zu verstehen.

    Gruß

    jobo

    1. Hallo jobo,

      Du kennst den Unterschied zwischen statischen und nicht statischen Methoden? Versuche, die Fehlermeldung zu verstehen.

      Gruß

      jobo

      oh man einfach nen static vor die function. Oh man da hätte ich auch selbst drauf kommen können.

      Vielen Dank :)

    2. Hallo,

      bevor ich nochmal ein neues Thema aufmache poste ich nochmal hier. Hoffe das ist in Ordnung.

      Ich rufe eine Klasse auf: $Account = new Account();

      Diese schaut so aus:

        class AccountDTO{  
        	var $id;  
        
        	var $fk_user;  
        
        	var $sid;  
        }
      

      Wenn ich der Variable $Account->test = "dd"; einen Wert zuweise, kommt selbst im static Modus keine Notice oder sonstiges. Wie kann ich garantieren, dass nur Variablen genutzt werden, die fest definiert sind?

      mfg Steffen

      1. Hi!

        bevor ich nochmal ein neues Thema aufmache poste ich nochmal hier. Hoffe das ist in Ordnung.

        Sehr gut. Du kannst auch auf dein Ausgangsposting antworten und über die Vorschau-Funktion den Titel ändern, dann wird es noch etwas übersichtlicher.

        Wenn ich der Variable $Account->test = "dd"; einen Wert zuweise, kommt selbst im static Modus keine Notice oder sonstiges. Wie kann ich garantieren, dass nur Variablen genutzt werden, die fest definiert sind?

        Verwende kein PHP. Es ist PHPs Philosophie, Variablen bei der erstmaligen Zuweisung anzulegen. Da machen auch Objektvariablen keine Ausnahme. Allerdings kannst du Magie verwenden, um Zugriffe auf nicht vorhandene Objektvariablen abzufangen.

        Lo!