开发者

Will PHP load all files references in a page?

I am working on a cache class, I would like to be able to set and get cached items from 5 different storage mediums. Memcache, APC cache, file cache, sessions, cookies. Maybe even a 6th (database could be added as a 6th).

My goal is to make this flexible enough that I can use it in the future on many projects very easily (portable). I also would like to be able to set/get cache items all from calling 1 set method and 1 get method.

Below is the code I have started so far which will allow me to do that. In my switch block I am not sure if I should put all the code for that cache type there or have it call another method, or have each switch block item call a completley new class/object.

I am thinking that if I put each cache system in it's own class file, then my autolaoding will not need to load as much code for this if only a couple of the cache types is used on a page. I am not sure though, using autoloading for my class files, would it still load 6 different class files in the code below or would it ONLY load the files that the switch needs. For example if a page only uses the sessions cache, would my switch below only load a session class file or would PHP automaticly load all the files? It is hard to test because if I put something to try to test it in my code, then it will definately load all the files.

Please give me advice and I do not want to use a framework, I am trying to learn not use an existing framework.

/**
* Set a key/value to cache system.
*
* @param   string        type of cache to store with
* @param   string|array  keys, or array of values
* @param   mixed         value (if keys is not an array)
* @return  void
*/  
public function set($type, $keys, $value = FALSE, $options_arr)
{
    if (empty($keys))
        return FALSE;

    if ( ! is_array($keys))
    {
        $keys 开发者_运维知识库= array($keys => $val);
    }

    // Pick our Cache system to use
    switch ($type) {
        case "memcache":
            echo "Cache item to memcache";
            break;

        case "apc":
            echo "Cache item to APC";
            break;

        case "session":
            echo "Cache item to Sessions";
            foreach ($keys as $key => $val)
            {
                // Set the key
                $_SESSION[$key] = $val;
            }
            break;

        case "cookie":
            echo "Cache item to Cookie";
            break;

        case "file":
            echo "Cache item to File";
            break;
    }

}


Autoloading only occurs when you try to reference a class which does not exist. That is, when that line is executed. It doesn't parse through the file to find all the possible classes - it's strictly as needed.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜