Regenbogenjonny: PHP OOP Einsteigerfrage

Hallo,

ich lese gerade ein Einsteigerbuch php/oop. Da steht, dass ab php5 der Konstruktor einen verbindlichen Methodennamen hat. Ich arbeite aber z.b. mit der fpdf-Klasse, die noch den php-4 Standard in der Beziehung folgt.

Warum interpretiert mein php 5.5 diesen php-4-Konstruktor dann korrekt?

Jonny

  1. Hi there,

    ich lese gerade ein Einsteigerbuch php/oop. Da steht, dass ab php5 der Konstruktor einen verbindlichen Methodennamen hat. Ich arbeite aber z.b. mit der fpdf-Klasse, die noch den php-4 Standard in der Beziehung folgt.

    Warum interpretiert mein php 5.5 diesen php-4-Konstruktor dann korrekt?

    Weil der ganze objektorientierte Mist bei PHP nur aufgesetzt ist. Man kann PHP auch komplett prozedural programmieren...

    1. Hallo,

      ich lese gerade ein Einsteigerbuch php/oop. Da steht, dass ab php5 der Konstruktor einen verbindlichen Methodennamen hat. Ich arbeite aber z.b. mit der fpdf-Klasse, die noch den php-4 Standard in der Beziehung folgt.

      Warum interpretiert mein php 5.5 diesen php-4-Konstruktor dann korrekt?

      Weil der ganze objektorientierte Mist bei PHP nur aufgesetzt ist.

      Verstehe.

      Man kann PHP auch komplett prozedural programmieren...

      Natürlich, so mache ich es bisher.

      Danke für Deine Hilfe, Jonny

    2. Tach!

      Warum interpretiert mein php 5.5 diesen php-4-Konstruktor dann korrekt?

      Weil der ganze objektorientierte Mist bei PHP nur aufgesetzt ist. Man kann PHP auch komplett prozedural programmieren...

      Das ist die falsche Antwort, die hat mit dem Thema nichts zu tun. Es geht um die beiden Möglichkeiten, Konstruktoren zu notieren.

      Die richtige Antwort steht im PHP-Handbuch auf der Seite zu den Konstruktoren und Destruktoren (nur die wichtigsten Passagen zitiert)

      For backwards compatibility with PHP 3 and 4, if PHP cannot find a __construct() function for a given class, and the class did not inherit one from a parent class, it will search for the old-style constructor function, by the name of the class.
      
      Warning
      Old style constructors are DEPRECATED in PHP 7.0, and will be removed in a future version. You should always use __construct() in new code.
      
      As of PHP 5.3.3, methods with the same name as the last element of a namespaced class name will no longer be treated as constructor. This change doesn't affect non-namespaced classes.
      

      Die deutsche Übersetzung ist mal wieder nicht aktuell, da fehlt die Warnung.

      Aus Gründen der Abwärtskompatibilität sucht PHP 5, falls die Klasse keine __construct() Methode besitzt, und die Klasse keine von einer Elternklasse geerbt hat, nach einem Konstruktur des alten Stils, d.h. einer Methode mit dem selben Namen wie die Klasse.
      
      Seit PHP 5.3.3 werden Methoden, welche mit dem Klassennamen übereinstimmen, nicht länger als Konstruktoren behandelt, wenn die Klasse sich in einem Namespace befindet. Klassen, welche sich nicht in einem Namespace befinden, betrifft dies jedoch nicht.
      

      dedlfix.

      1. Hallo,

        Das ist die falsche Antwort, die hat mit dem Thema nichts zu tun. Es geht um die beiden Möglichkeiten, Konstruktoren zu notieren.

        Die richtige Antwort steht im PHP-Handbuch auf der Seite zu den Konstruktoren und Destruktoren (nur die wichtigsten Passagen zitiert)

        Vielen Dank, dedlfix. Genau danach hatte ich gefragt, aber keine Lösung im Netz gefunden.

        Jonny