模型的全局变量

时间:2012-05-28 23:38:29

标签: php codeigniter variables global-variables

不确定它本身是否是全局的,但我需要的是一个变量,它是在调用模型时动态生成的模型中设置的。但是,我需要设置一个变量,通过模板引入多个视图可以访问该变量以使用相同的变量。

我的客户赞助商的广告ID每页有多个广告位,例如486x 60和160x90点。但我想要做的是当从群中随机抽取ID时,我希望我的所有广告位都是同一个赞助商。

现在我尝试进入header.php视图并定义一个像

这样的变量

$adsIDvar = $this->modelname->sponsorids()然后在每个视图中我都使用$ varIDvar进行广告展示位置,但似乎任何视图都没有加入变量。我试图找到有关这方面的信息,但大多数寻找类似符号的人都需要硬编码变量,例如网站标题。

我需要能够越过障碍的东西,我宁愿避免使用会话/ cookie,因为我想避免在英国处理整个Cookie的事情,因为该网站的一半观众来自英国而且我宁愿不必为了这个目的而努力说这个网站使用cookies blah blah accept / decline。此外,如果他们拒绝,那就会对我的工作产生影响。

1 个答案:

答案 0 :(得分:1)

如果要从全局范围导入变量,则需要使用global关键字。例如:

class SomeClass {
    public function SomeFunction() {
        global $adsIDvar; // now it is imported from the global scope
    }
}

这只是我的观点,但也许更好的方法是制作一个专门用于处理ad ID的课程。我可能会尝试这样的事情:

class AdHelper {
    public static $advertiser_id;

    public static function getAdvertiserId() {
        if (!isset(self::$advertiser_id)) {
            self::selectAdvertiserId();
        }

        return self::$advertiser_id;
    }

    protected static function selectAdvertiserId() {
        self::$advertiser_id = ....; // Implement this however you like, random or whatever
    }
}

// you can call it from anywhere like:
$adsIDvar = AdHelper::getAdvertiserId();