Будет ли PHP загружать все ссылки на файлы на странице? - PullRequest
0 голосов
/ 20 января 2010

Я работаю над классом кэша, я хотел бы иметь возможность устанавливать и получать кэшированные элементы из 5 различных носителей.Memcache, APC кеш, файловый кеш, сессии, куки.Может быть, даже 6-й (база данных может быть добавлена ​​как 6-й).

Моя цель - сделать это достаточно гибким, чтобы я мог использовать его в будущем во многих проектах очень легко (переносимо).Я также хотел бы иметь возможность устанавливать / получать элементы кэша, вызывая 1 метод set и 1 метод get.

Ниже приведен код, который я начал до сих пор, что позволит мне сделать это.В моем блоке переключателей я не уверен, должен ли я поместить туда весь код для этого типа кэша, или чтобы он вызывал другой метод, или чтобы каждый элемент блока переключателя вызывал совершенно новый класс / объект.

Я думаю, что если я помещу каждую систему кеширования в свой собственный файл класса, то для моего автоластинга не потребуется загружать столько кода для этого, если на странице используется только пара типов кеша.Однако я не уверен, что при использовании автозагрузки для моих файлов классов он все равно будет загружать 6 различных файлов классов в приведенном ниже коде или будет загружать ТОЛЬКО файлы, необходимые для коммутатора.Например, если страница использует только кэш сессий, будет ли мой переключатель ниже загружать только файл класса сессий или PHP автоматически загрузит все файлы?Это сложно проверить, потому что если я добавлю что-то, чтобы попытаться проверить это в своем коде, то он обязательно загрузит все файлы.

Пожалуйста, дайте мне совет, и я не хочу использовать фреймворкпытаясь научиться не использовать существующие рамки.

/**
* 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;
    }

}

1 Ответ

2 голосов
/ 20 января 2010

Автозагрузка происходит только при попытке сослаться на класс, который не существует.То есть когда эта строка выполняется.Он не анализирует файл, чтобы найти все возможные классы - он строго необходим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...