首先,我认为他们过度复杂了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];
}
}
登记处与单身人士合并只是一团糟.
关于你迷路的方面:
1. buildFromTemplates
Method接受无限数量的参数func_get_args()作为模板文件位置,相对或绝对.如果相对(如在皮肤中/不是参数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,这是一个很大的框架并不难以遵循.