Jörg: Syntax error bei Variable in Klasse

Hi,

ich bekomme einen
Syntax-Fehler und weiß nicht, warum. Außerdem weiß ich nicht, ob meine Klasse die Variable kennen sollte oder nicht?

class Test{  
  
public static $Host = $db_server;  
  
...

Deshalb meine Fragen:

Kennt meine Klasse die Variable $db_server oder muß ich sie erst als global deklarieren?

Und warum meldet der Parser einen Syntaxfehler?

Gruß, Jörg

  1. Hi!

    ich bekomme einen Syntax-Fehler und weiß nicht, warum.

    class Test{

    public static $Host = $db_server;
    ...

      
    Default-Werte müssen konstante Werte sein. Variablen sind das nicht.  
      
    
    > Kennt meine Klasse die Variable $db\_server oder muß ich sie erst als global deklarieren?  
      
    "global" kann sowieso nur innerhalb von Funtionen/Methoden stehen. Die Übergabe als Konstruktor-Parameter wäre sowieso vorzuziehen. Die Klasse bleibt dann autark ohne irgendwelche anderswo definierten Variablen vorauszusetzen.  
      
      
    Lo!
    
    1. Die Übergabe als Konstruktor-Parameter wäre sowieso vorzuziehen. Die Klasse bleibt dann autark ohne irgendwelche anderswo definierten Variablen vorauszusetzen.

      Hi dedlfix,

      ja, das habe ich bereits in  einem alten Post von Dir gelesen, aber trotz Suche ist es mir bisher nicht gelungen, diese Übergabe als Konstruktor-Parameter zu finden.

      Deshalb: Wie mache ich das denn?

      Es geht daraum, dass die Klasse die DB-Zuagangsdaten braucht, die ich aber bereits in einer Konfigurationsdatei festgehalten habe. Deshalb möchte ich sie nicht in der Klasse nochmals eintragen müssen.

      Gruß, Jörg

      1. Hi!

        Die Übergabe als Konstruktor-Parameter wäre sowieso vorzuziehen. Die Klasse bleibt dann autark ohne irgendwelche anderswo definierten Variablen vorauszusetzen.
        Wie mache ich das denn?

        Du definierst eine Funktion namens __construct und notierst wie bei anderen Funktionen auch einen oder mehrere Parameternamen. Diese Parametervariableninhalte kannst du dann innerhalb der Konstruktorfunktion den Eigenschaften des Objekts zuweisen.

        Es geht daraum, dass die Klasse die DB-Zuagangsdaten braucht, die ich aber bereits in einer Konfigurationsdatei festgehalten habe. Deshalb möchte ich sie nicht in der Klasse nochmals eintragen müssen.

        Es wäre aber besser, wenn die Klasse nichts von anderswo existierenden Variablen weiß. Sie sollte entweder alle Werte über einzelnen Parameter oder auch ein Array entgegennehmen.

        Lo!

        1. Du definierst eine Funktion namens __construct und notierst wie bei anderen Funktionen auch einen oder mehrere Parameternamen. Diese Parametervariableninhalte kannst du dann innerhalb der Konstruktorfunktion den Eigenschaften des Objekts zuweisen.

          Muss ich die Funktion denn dann innerhalb der Klasse irgendwie aufrufen?

          Es wäre aber besser, wenn die Klasse nichts von anderswo existierenden Variablen weiß. Sie sollte entweder alle Werte über einzelnen Parameter oder auch ein Array entgegennehmen.

          Ist das sicherheitsrelevant oder "nur" eleganter?

          Gruß, Jörg

          1. Hi!

            Du definierst eine Funktion namens __construct und notierst wie bei anderen Funktionen auch einen oder mehrere Parameternamen. Diese Parametervariableninhalte kannst du dann innerhalb der Konstruktorfunktion den Eigenschaften des Objekts zuweisen.
            Muss ich die Funktion denn dann innerhalb der Klasse irgendwie aufrufen?

            Bitte informiere dich über die Grundlagen objektorientierten Programmierens. Ein Konstruktor wird immer implizit beim Instantiieren eines Objekts (mit new) aufgerufen.

            Es wäre aber besser, wenn die Klasse nichts von anderswo existierenden Variablen weiß. Sie sollte entweder alle Werte über einzelnen Parameter oder auch ein Array entgegennehmen.
            Ist das sicherheitsrelevant oder "nur" eleganter?

            Es ist dann sicher(er), dass du die Klasse anderswo unter anderen Umgebungsbedingungen wiederverwenden kannst.

            Lo!