Können wir eine PHP -Extraktfunktion in PHP ohne Zend -API implementieren?
-
20-09-2019 - |
Frage
Extrahieren Sie die Funktion von PHP fügt dem lokalen Bereich der Aufruffunktion Variablen hinzu. Wie können wir unsere eigene PHP -Funktion extrahieren, die dasselbe ist?
Lösung
Ich glaube nicht, dass Sie das in reinem Php tun können: Eine Funktion hat keinen Zugriff auf die Variablen seines Anrufers.
Dies sieht so aus, als ob Sie eine C -Erweiterung schreiben müssen, um sich zu entwickeln - Sie haben mehr Kontrolle über die Interna von PHP -Variablen.
(Und ich verstehe nicht wirklich, warum Sie das versuchen: Warum nicht einfach das Bestehende verwenden extract
Funktion? ))
Andere Tipps
Ok, wenn es nur zum Spaß ist, ist es möglich:
<?php
$data=array('a' => 1, 'b' => 2);
foreach ($data as $name => $value) {
${$name} = $value;
}
echo $a;
?>
Einige Probleme - wie Konflikte mit $ Data, $ Name und $ Value, und Sie können es nicht in eine Funktion einwickeln. Aber möglich.
Ja, es ist möglich,
Der Grund, warum ich dies getan habe
function extractArray($ar) {
if(count($ar)>=1) {
foreach($ar as $k=>$v) {
$GLOBALS[$k] = (is_array($v)?$v:trim($v));
}
}
}
Ich habe gerade mein $ _get, $ _post und sonst Arrays für solche für z. $ _Get ['Benutzername'] = 'JustNajm'; extractArray ($ _ GET);
Und ich kann einfach wiederholen und es wird 'Justnajm' drucken