Во-первых, я думаю, что они усложнили реализацию шаблона Registry
. Я всегда использовал следующий подход, который является более простым (я напишу его упрощенную версию).
class Registry {
protected static $_instances = array();
public static function add($instance, $name) {
self::$_instances[$name] = $instance;
}
public static function get($name) {
return self::$_instances[$name];
}
}
Registry
в сочетании с Singleton
- просто беспорядок.
Относительно аспектов, в которых вы потерялись:
1. buildFromTemplates
Метод принимает неограниченное количество параметров func_get_args()
в качестве местоположений файла шаблона, относительных или абсолютных. Если относительный (как в skins/
не является частью параметра send), перезаписать переменную, содержащую имя $bit
, абсолютным местоположением. Если файл существует, читайте в переменной $content
. Повторяйте до тех пор, пока не будут использованы все аргументы метода, и добавьте конечный результат в класс Page
.
2. Кеш запросов
Если данный запрос не возвращает resource_id (который должен выполнять запрос к базе данных), это означает, что запрос не был выполнен успешно, а метод вызывает ошибку. В противном случае сохраните resource_id в свойстве queryCache
для дальнейшего использования. Например:
// assume $db is a reference to the database object and that this is the first
// query
$db->cacheQuery('SELECT * FROM whatever');
$results = $db->resultFromCache(0); // previous query resource_id
.... аааа, забудь об этом.
Это так запутано, я рекомендую вам начать с какой-то здравой основы, полезной для изучения внутренних работ. Как CodeIgniter, и двигаться дальше, когда эти понятия ясны.
Этот учебник полон неправильных решений, таких как ошибки вместо исключений, тесная связь, пользовательский шаблонизатор (где достаточно простого PHP) и многое другое.
Даже Symfony, который представляет собой большой фреймворк, не так сложно следовать по всем направлениям.