我有一个在页面上显示广告的类。我想跟踪显示了哪些广告,所以我在类中添加了一个私有静态成员,该成员将保存一组数字。我想将 db 查询结果中的 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 中是否以这种方式工作?我知道这个值会在每次页面加载时被重置——但这就是我想要的功能。我希望它只包含当前页面/进程的值,然后重置。