Ich entwickle derzeit ein Werbemodul für ein benutzerdefiniertes CMS und verwende Vorlagen-Tags, damit Kunden Anzeigen über einen WSYWIG-Seiteninhaltseditor in ihre Seiten einfügen können.PHP Define Function ohne Ausführen
Eg. {=advert_1}
auf dem Frontend, wird dies durch einen regulären Ausdruck gefunden werden und dann in eine Funktion umgewandelt werden, die in einer Datenbank eine Anzeige aussehen
Template_tags.php
while ($advertRow = $advertResult->fetch_assoc()) {
$advertGroupID = $advertRow['grpID'];
$advert = "advert_";
${$advert . $advertGroupID} = showAdvert($advertGroupID);
}
auswählen und anzeigen Dies bedeutet, {=advert_1}
wird in showAdvert(1)
konvertiert werden Das Problem, das ich habe, ist, dass die showAdvert
Funktion für alle Anzeigen unabhängig davon ausgeführt wird, ob o R nicht es erscheint auf der Seite, die dann zu den "Ansichten" hinzugefügt wird, obwohl die Anzeige möglicherweise nicht angezeigt wird.
Was ich will, ist nur die Funktion zu definieren, ohne sie auszuführen, so wenn sie im Seiteninhalt erscheint, nur dann wird die Funktion ausgeführt werden.
Ich habe keine Ahnung, was du meinst. Wenn '{= advert_1}' auf der Seite ist, wird es in 'showAdvert (1)' konvertiert und ausgeführt. Wenn nicht, wird es nicht konvertiert und wird nicht ausgeführt. Was ist das Problem? – AbraCadaver
Jedes Mal, wenn Sie Variablenvariablen verwenden, sollten Sie wirklich ein Array verwenden. – Barmar
Da es sich um die 'grpID' aus der Datenbank handelt, durchläuft es diese und erstellt für jede" Gruppe "eine Funktion, die jeweils in der Zeile $ {$ advert ausgeführt wird. $ advertGroupID} = showAdvert ($ advertGroupID); ' –