![]() |
Does MyClass::class autoload MyClass? - Druckversion +- PHP Rocks (https://www.php-rocks.de) +-- Forum: PHP Programmierung (https://www.php-rocks.de/https://www.php-rocks.de/forum/1-php-programmierung.html) +--- Forum: PHP Basics (https://www.php-rocks.de/https://www.php-rocks.de/forum/2-php-basics.html) +--- Thema: Does MyClass::class autoload MyClass? (/https://www.php-rocks.de/thema/341-does-myclass-class-autoload-myclass-.html) |
Does MyClass::class autoload MyClass? - Till - 03.08.2019 Nabend, sollte ich eigentlich selbst herausfinden können, schmeiße aber die Überlegung mal in den Raum: Es geht um die vordefinierte ::class Klassenkonstante. Wenn ich sie benutze, versucht php dann die Klasse zu laden, oder wird der Klassenname geparsed ohne die Klasse autozuloaden? Hintergrund: Ich habe eine spl_autoload_register function welche php klassen code per remote lädt. Es wäre ein ziemlicher overhead wenn die Klasse geladen wird wenn ich nur den Klassennamen als string (für lazy loading) brauche. Beispiel: PHP-Code: $this->getContainer()->set(\Webfan\App\Rpc\Procedure\install_requirements::class, function(\Psr\Container\ContainerInterface $c) { vs. PHP-Code: $this->getContainer()->set('\Webfan\App\Rpc\Procedure\install_requirements', function(\Psr\Container\ContainerInterface $c) { RE: Does MyClass::class autoload MyClass? - Arne Drews - 05.08.2019 Hi Till, Gute Frage, kann ich ehrlich gesagt gar nicht exakt beantworten, aber ich hau mal meine Gedanken dazu in den Raum: Ich würde meinen, das Autoloading wird nur getriggert, wenn eine Klasse instanziiert wird, was ja prinzipiell nicht der Fall ist. Daher sollte grundsätzlich keine Klasse geladen werden in dem Moment. Allerdings muss die Klasse ja im Scope bekannt sein, was bedeutet, dass sie evtl. doch geladen werden muss? Ich nutze ::class bisher nicht, daher sind das nur mal meine Gedanken dazu. Vielleicht hilfts..., wenn nicht, einfach ignorieren ![]() Gruß Arne RE: Does MyClass::class autoload MyClass? - Till - 05.08.2019 Hallo Arne, Zitat:Gute FrageDu weißt selber das die Frage dumm ist, trotzdem danke für die Antwort! Statt einfach PHP-Code: echo DoYouExist::class; ![]() PHP-Code: Ich nutze ::class bisher nicht Zitat:daher sind das nur mal meine Gedanken dazu.Gut das wir uns nun Gedanken gemacht haben, nun kann ich zu der Meinung kommen das das ::class Konstrukt nur Vorteile bringt. Viele Grüße aus dem schönen und sonnigen Bochum Till RE: Does MyClass::class autoload MyClass? - Arne Drews - 05.08.2019 Und hat der Test ergeben, dass das Autoloading getriggert wird oder nicht? RE: Does MyClass::class autoload MyClass? - Till - 05.08.2019 Es hat keinen fatalen oder sonstwie gemeldeten Fehler erzeugt, also gehe ich davon aus das das autoloading nicht getriggert wird. Alles andere wäre auch in der praktischen Anwendungsmöglichkeit irgendwie nicht wirklich von Mehrwert (edit: oder? vielleicht höchstens bei einer "Ahead of time" compilation als Type check). RE: Does MyClass::class autoload MyClass? - Arne Drews - 06.08.2019 Ich hab das eben mal selber nachgestellt aus Neugier: PHP-Code: spl_autoload_register(function($class) { Gruß Arne |