我目前正在爲自定義CMS開發廣告模塊,並使用模板標籤允許客戶通過WSYWIG頁面內容編輯器將廣告添加到其頁面中。PHP定義函數而不執行
例如, {=advert_1}
在前端,這將通過一個正則表達式中找到,然後被轉換成一個函數,它會尋找到一個數據庫來選擇和顯示一個廣告
Template_tags.php
while ($advertRow = $advertResult->fetch_assoc()) {
$advertGroupID = $advertRow['grpID'];
$advert = "advert_";
${$advert . $advertGroupID} = showAdvert($advertGroupID);
}
這意味着{=advert_1}
將被轉換爲showAdvert(1)
我遇到的問題是,showAdvert
函數將運行的所有廣告,無論o r它不會出現在頁面上,然後添加到「視圖」,即使廣告可能不會顯示。
我想要的只是定義函數而不執行它,所以當它出現在頁面內容中時,纔會執行該函數。
使用它,我不知道你的意思。如果頁面上出現'{= advert_1}',那麼它將被轉換爲'showAdvert(1)'並運行。如果沒有,它不會被轉換並且不會運行。什麼概率? – AbraCadaver
任何時候你使用變量變量,你都應該使用一個數組。 – Barmar
由於它從數據庫中獲取'grpID',它正在循環這些併爲每個「組」創建一個函數,並在'$ {$ advert。 $ advertGroupID} = showAdvert($ advertGroupID);' –