Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Kommunikation mit dem Autoloader

0 views
Skip to first unread message

Stefan Froehlich

unread,
May 6, 2022, 4:47:00 PM5/6/22
to
Einmal eine etwas ungewöhnlichere Anforderung: Ich habe ein
Prüf-Programm, das über den abstract syntax tree PHP-Code auf (vor
allem) korrekte Klassen- und Konstantennamen prüft. Das funktioniert
so weit ganz gut, beim Überarbeiten und der Umstellung von
echo-Ausgaben auf ein Sammeln der Fehlermeldungen in einer
Collection ist nun aber ein Problem aufgetreten:

Das Programm hängt einen eigenen Autoloader ans Ende der Chain;
im Code gefundene Klassen werden nachgeladen,

#v+
is_subclass_of($fqcn, 'foo');
#v-

und wenn das die regulären Autoloader nicht schaffen, erzeugt die
Software in ihrem eigenen "Autoloader" zuerst ein

#v+
eval ("namespace $root$namespace; class $class {}");
#v-

um den Compiler glücklich zu machen und gibt danach eine
Fehlermeldung nach stdout aus. Nun hätte ich diese Meldung in
Zukunft aber gerne in der Software beim is_subclass_of(). Wie
könnte ich sie dorthin bekommen?

Servus,
Stefan

--
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Offizieller Erstbesucher(TM) von mmeike

Geht nicht!? Gibt's nicht! Stefan.
(Sloganizer)

Arno Welzel

unread,
May 9, 2022, 6:32:56 AM5/9/22
to
Stefan Froehlich:

> Einmal eine etwas ungewöhnlichere Anforderung: Ich habe ein
> Prüf-Programm, das über den abstract syntax tree PHP-Code auf (vor
> allem) korrekte Klassen- und Konstantennamen prüft. Das funktioniert
> so weit ganz gut, beim Überarbeiten und der Umstellung von
> echo-Ausgaben auf ein Sammeln der Fehlermeldungen in einer
> Collection ist nun aber ein Problem aufgetreten:
[...]

Zu dem konkreten Problem kann ich leider nichts beitragen.

Aber eine Gegenfrage: was spricht gegen php-cs oder psalm. Ersteres kann
man auch nutzen um eigene Regeln prüfen zu lassen.

Siehe dazu z.B.:

<https://stackoverflow.com/questions/54881514/phpcs-enforce-class-name-case-when-instantiating>


--
Arno Welzel
https://arnowelzel.de

Stefan Froehlich

unread,
May 9, 2022, 8:37:47 AM5/9/22
to
On Mon, 09 May 2022 12:32:54 Arno Welzel wrote:
> Stefan Froehlich:
>> Einmal eine etwas ungewöhnlichere Anforderung: Ich habe ein
>> Prüf-Programm, das über den abstract syntax tree PHP-Code auf
>> (vor allem) korrekte Klassen- und Konstantennamen prüft. Das
>> funktioniert so weit ganz gut, beim Überarbeiten und der
>> Umstellung von echo-Ausgaben auf ein Sammeln der Fehlermeldungen
>> in einer Collection ist nun aber ein Problem aufgetreten:
> [...]
>
> Zu dem konkreten Problem kann ich leider nichts beitragen.

Ich hab's vorerst einmal durch eine globale Variable gelöst. Das mag
nicht der Inbegriff an Eleganz sein, aber da es ohnehin nur
Prüf-Code ist...

> Aber eine Gegenfrage: was spricht gegen php-cs oder psalm.
> Ersteres kann man auch nutzen um eigene Regeln prüfen zu lassen.

> Siehe dazu z.B.:
>
> <https://stackoverflow.com/questions/54881514/phpcs-enforce-class-name-case-when-instantiating>

Zunächst einmal vor allem, dass ich es nicht kannte :)

Soweit ich das überblicke, wird hier aber auch nicht auf die
Existenz von Konstanten geprüft, sondern lediglich auf Einhalten der
Namenskonventionen (und da sähe es bei mir leider traurig aus).

Mein Code wird analog zur zu prüfenden Software aufgerufen und teilt
daher deren Infrastruktur, insbes. den Autoloader. Dadurch ist der
im vorherigen Posting beschriebene Trick mit eval() überhaupt erst
möglich, das wird für ein externes Tool schwierig bis unmöglich
sein.

Servus,
Stefan

--
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Offizieller Erstbesucher(TM) von mmeike

Stefan, mit dem mächtigen Gefühl der Lust.
(Sloganizer)
0 new messages