Tom: lokalen ordner öffnen

Beitrag lesen

Hello,

Allerdings könnte man bei dickeren Funktionen diese bedingt includieren, wenn sie nicht vorhanden sind. Da fehlt mir in PHP noch das Feature eines include_optional(), dass aus einer eigenen Bibliothek die darin enthaltenen Funktionen includiert, sofern sie nicht schon vorhanden sind.

if (!function_exists('foo'))
  function foo() {...}

ist dir aber bekannt?

Wenn diese Funktion nausgewertet wird, dann ist aber der Prototyp bereits geladen, verschwendet also Speicherplatz.

Also die Option auf jede einzelne darin gefundene Funktion anwendet,

hmm, sieht so aus, als ob du das kennst, aber nur den "Aufwand" scheust...

Nein, den Aufwand scheue ich nicht.
Ich arbeite bisher mit einer include-Datei für jede aufwändige Funktion (Implementation) und einer include-Ddatei für die bedingte Deklaration

und den Speicher nicht mit den überschüssigen Prototypen belastet.

Was konkret meinst du damit? Bei obigem Konstrukt sollte nichts überschüssiges angelegt werden, ansonsten gäbe es doch einen "Fatal error: Cannot redeclare foo in ..."

Doch, die Funktion ist bereits geladen ...

in der include-Datei für die Version Completion steht nur:

if (!function_exists(f1)) include_once(DOCROOT.'/functions/f1);
if (!function_exists(f2)) include_once(DOCROOT.'/functions/f2);
if (!function_exists(f3)) include_once(DOCROOT.'/functions/f3);
...

Das führt aber zu einem relativ hohen Aufwand im Dateisystem.

Besser wäre es mMn, wenn PHP für solche Dinge eben entweder eine spezielle Funktion bereitstellen würde, die die Librairy nur temporär lädt und aus ihr dann nur die Funktionen ins Script übernimmt, die noch nicht vorhanden sind.

Oder aber die Möglichkeit geben würde, Funktionsdeklarationen nebst Implementationen wieder zu entladen, so wie es mit unset($variable) ja auch geht.

Ich schreibe ziemlich viele Scripte, die dauernd an die Speichergrenzen stoßen. Nun kann man einfach den Speicher hochsetzen, sofern man darf, oder aber schon mal vorausschauend und sorgsam damit umgehen.

Harzliche Grüße vom Berg
esst mehr http://www.harte-harzer.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau