dedlfix: php-Code aus Datenbank holen und als lauffähigen Code ins Programm einbinden?

Beitrag lesen

Tach!

alte, vermutlich nirgends mehr genutzte Programmcodes müllen mir Verzeichnisse zu. Da gibt es was von 2006, von dem ich nicht weiß, ob und wo es noch gebraucht wird.

Eine IDE mit statischer Code-Analyse kann helfen, die Stellen der Verwendung zu finden. Voraussetzung ist, dass die Verwendung auch statisch ist und nicht über Magic Strings oder variable Variablen erfolgt.

function foo() { /* ... */ }

//...

foo();

Das obige wäre eine statisch nachvollziehbare Verwendung, das nachfolgende nicht.

$bar = 'foo';
$bar();

JetBrains PhpStorm ist eine solche IDE, die Verwendungen finden kann. Auch auf Dateien kann man das "Find Usages" anwenden und bekommt die entsprechenden include-Anweisungen aufgelistet. Voraussetzung ist hier auch, dass der Dateiname nicht aus String-Einzelteilen zusammengebaut wird.

Soweit mir bekannt, müssen per include eingebundene PHP-Schnipsel als Datei vorliegen. Einer Datei kann man aber nicht ansehen, von welchen Programmen sie aufgerufen werden.

Die Datei erzählt sowas nicht, aber selbst wenn eine IDE nicht helfen kann, ein Stück Code kann helfen. debug_backtrace() gibt dir einen Weg an, der zum Aufruf geführt hat. Damit kannst du zur Laufzeit die verweisenden Stellen finden. Am besten schreibt man das wohl in ein separates Logfile. Allerdings kann das auch nur dann Aufrufe finden, wenn man sich zufällig oder gezielt zu den Programmteilen begibt, die den Aufruf auslösen.

Wenn ich nun die Programmcode in der Datenbank als text hinterlege, könnte ich mir einen Verwendungsnachweis basteln.

Das wäre ein ähnliches Vorgehen wie beim debug_backtrace(), nur viel komplexer.

Aber wie baue ich den aus der Datenbank gelesenen Text als lauffähigen Code ins Programm ein?

Es bleibt sich gleich, ob du den Code als (temporäre) Datei schreibst und dann inkludierst oder direkt per eval() auswertest.

dedlfix.