Heim  >  Artikel  >  Backend-Entwicklung  >  Kann der PHP-Funktionsquellcode programmgesteuert abgerufen werden?

Kann der PHP-Funktionsquellcode programmgesteuert abgerufen werden?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-19 07:33:30383Durchsuche

Can PHP Function Source Code be Retrieved Programmatically?

PHP-Funktionsquellcode programmgesteuert extrahieren

Frage:

Ist es möglich, den Quellcode eines PHP programmgesteuert abzurufen? Hat die Funktion ihren Namen erhalten?

Hintergrund:

Betrachten Sie beispielsweise den folgenden Code:

<code class="php">function blah($a, $b) { return $a*$b; }
echo getFunctionCode("blah");</code>

Ist es machbar, eine solche Funktion zu implementieren? ?

Antwort:

Ja, dies ist mit der ReflectionFunction-Klasse von PHP erreichbar. Hier ist ein Codeausschnitt, der zeigt, wie:

<code class="php">$func = new ReflectionFunction('myfunction');
$filename = $func->getFileName();
$start_line = $func->getStartLine() - 1; // subtract 1 to obtain the correct function block
$end_line = $func->getEndLine();
$length = $end_line - $start_line;

$source = file($filename);
$body = implode("", array_slice($source, $start_line, $length));
print_r($body);</code>

Dieser Code ruft den Quellcode der Funktion ab, indem er die PHP-Quelldatei analysiert und die Zeilen extrahiert, die dem Funktionskörper entsprechen. Die ReflectionFunction-Klasse bietet praktische Methoden zum Bestimmen des Dateispeicherorts der Funktion sowie der Start- und Endzeilennummern.

Das obige ist der detaillierte Inhalt vonKann der PHP-Funktionsquellcode programmgesteuert abgerufen werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn