理解php引用和静态
我试图理解CodeIgniter的核心基础知识,比如加载类。我被困在这里:理解php引用和静态,php,codeigniter,oop,Php,Codeigniter,Oop,我试图理解CodeIgniter的核心基础知识,比如加载类。我被困在这里: function &load_class($class, $directory = 'libraries', $prefix = 'CI_') { static $_classes = array(); // Does the class exist? If so, we're done... if (isset($_classes[$class])) { re
function &load_class($class, $directory = 'libraries', $prefix = 'CI_')
{
static $_classes = array();
// Does the class exist? If so, we're done...
if (isset($_classes[$class]))
{
return $_classes[$class];
}
...
... // more code
...
}
然后他们加载类,如下所示:
$BM =& load_class('Benchmark', 'core');
所以我的理解问题是为什么在函数名之前使用&before,为什么使用static,为什么使用'=&'。。我认为他们有一些共同点。
每次使用load\u class函数时,$\u类是否会作为空数组覆盖
谢谢大家! 以下函数
function &load_class($class, $directory = 'libraries', $prefix = 'CI_') { //... }
将返回引用而不是值。也就是说,当你像这样调用函数
$BM =& load_class('Benchmark', 'core');
在这种情况下,$BM
将获得类基准的引用
检查
以下变量
static $_classes = array();
将仅初始化一次,并将在函数结束时和下次执行重新进入函数时保持其状态,如果它看到变量$\u classes
已初始化,则不会再次初始化,如果未初始化,则将对其进行初始化。当您需要在后续调用中保持变量的相同状态,但还不是全局变量时,这非常有用
检查。这正是我想听到的,谢谢!所以$\u类将被初始化一次,因为每次使用“=&”,实际上使用的是同一个实例?是的,此变量将其状态保持在函数范围内。