我有一个在页面上显示广告的课程。我想跟踪哪些广告已经显示,所以我在类中添加了一个私有静态成员,该成员将保存一组数字。我想将数据库查询结果中的ID添加到静态成员,以便从下一个查询中排除这些ID。这样可以防止显示的广告再次显示在同一页面上。
class ADS {
private static $excluded_ads = array();
function get_ads() {
// run db query and assign $ads to the resulting array
$ads = $this->query();
// Iterate through result and add the IDs of each row to the static array
foreach ($ads as $ad) {
self::$excluded_ads[] = $ad->ID;
}
}
function query() {
// Use local variable to hold string of excluded ads
$excluded_ads = $this->sql_get_excluded_ads();
// run the db query and use the class static member to exclude results
// SELECT * FROM ....
// WHERE ...
// AND p.ID NOT IN ($excluded_ads)
}
function sql_get_excluded_ads() {
if (empty(self::$excluded_ads)){
return '-1';
} else {
return implode(',',self::$excluded_ads);
}
}
}
$ads_class = new ADS();
$ads_class->get_ads();
当我加载页面时,我为行Trying to get property of non-object
self::$excluded_ads[] = $ad->ID;
静态类成员在PHP中以这种方式工作吗?我知道这个值会在每次页面加载时重置 - 但这就是我想要的功能。我希望它只包含当前页面/进程的值,然后重置。
答案 0 :(得分:0)
你试过调试var_dump($ ads)中的内容吗?