Using Global Variables Expensive for PHP

I am writing some functions to display Custom Fields across multiple templates. Rather than getting each CF like so:

$var = get_post_meta($post->ID, 'my_cf_key', true);

and then checking if the var exists, if so, doing some HTML and then echoing the variable, I have started another approach.

Read More

My concern is that this new approach might become more expensive and load on the server… Here it is…

Each CF has a function to a) get it via the above code, then b) echo it. Within each get function, I am calling global $post.

Then, on each actual template page, I am first checking the get function for that CF, then doing the echo function, like so:

if ( func_get_the_cf() ) {
echo '<div>';
func_the_cf();
echo '</div>';
};

So the above looks like it is having to do this for each one… a) get a global $post from the get function and get a value from the DB, then if that exists, run the echo function, which again has to do global post and assign a value from the DB by running the get function.

So it seems like I am doing things in unncessary loops just so I can have clean looking template pages.

is this too much PHP? Am I making this too expensive on the server?

Thanks.. I’m just 5% into the project now so I rather get some opinions before I finish it all the way I’m doing it just to change it all.

Thank you!

Related posts

1 comment

  1. Here is a basic class which you can create once:

    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;
    

    Now in your template files you can access the class like this:

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

Comments are closed.