使用全局变量对于PHP来说代价高昂

时间:2013-08-31 作者:user37390

我正在编写一些函数来跨多个模板显示自定义字段。而不是像这样获得每个CF:

$var = get_post_meta($post->ID, \'my_cf_key\', true);
然后检查var是否存在,如果存在,则执行一些HTML,然后回显变量,我已经开始了另一种方法。

我担心的是,这种新方法可能会变得更加昂贵,并在服务器上加载。。。在这里。。。

每个CF都有一个函数a)通过上述代码获取,然后b)回显。在每个get函数中,我调用global$post。

然后,在每个实际的模板页面上,我首先检查CF的get函数,然后执行echo函数,如下所示:

if ( func_get_the_cf() ) {
echo \'<div>\';
func_the_cf();
echo \'</div>\';
};
因此,上面的内容似乎是必须为每个人都这样做。。。a) 从get函数中获取全局$post并从DB中获取值,如果存在,则运行echo函数,该函数必须再次执行全局post并通过运行get函数从DB中分配值。

所以我似乎在做一些不必要的循环,只是为了让我的模板页面看起来干净。

这是不是太多了?我是不是在服务器上让它太贵了?

谢谢我现在对这个项目只有5%的投入,所以我宁愿在我完成它之前得到一些意见,我这样做只是为了改变这一切。

非常感谢。

1 个回复
最合适的回答,由SO网友:Twifty 整理而成

下面是一个可以创建一次的基本类:

if ( ! class_exists(\'my_class\') ) :

class my_class {

    public $my_var;

    // This variable is for a single instance
    static $instance;

    function __construct () {
        // Call other methods like this
        $this->initialize();
    }

    function initialize () {
        // Populate your variables here
        $this->my_var = \'any value you want\';
    }

    static function get_instance () {
        // Static variables are persistant
        // Notice the \'self::\' prefix to access them
        if ( empty(self::$instance) )
            self::$instance = new my_class();
        return self::$instance;
    }    
}

endif;
现在,在模板文件中,您可以像这样访问类:

<?php $var = my_class::get_instance()->my_var; ?>

结束

相关推荐

如何包含php生成的javascript?

我环顾四周,迄今为止还没有找到很好的解决方案:我想使用wp_enqueue_script, 但是Wordpress似乎限制了我加载的javascript文件的范围,正如我的javascript文件所说:未捕获类型错误:对象[对象对象]没有方法“photogallery”这是我想加载的输出,就像它自己的脚本通过wp_enqueue_script:<script type = \"text/javascript\"> (function ($) {