我目前正在为自定义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);' –