学习thinkphp的小伙伴都知道在tp中,命名空间很重要,tp是很依赖命名空间的。在此,我就和大家分享下命名空间的简单知识点~
引用官方的话如下:
在PHP中,命名空间用来解决在编写类库或应用程序时创建可重用的代码如类或函数时碰到的两类问题:
用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性
简单的说就是:例如一个文件下不能出现两个相同名字的文件,php中也是。命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误。
引入命名空间:
例子:有两个php文件:
a.php
// 这个是a.php文件下的源代码
<?
namespace a;
function demo(){
echo "我是第一个文件下的demo方法,啦啦啦";
}
?>
b.php
// 这个是b.php文件下的源代码
<?
namespace b;
function demo(){
echo "我是第二个文件下的demo方法,啦啦啦"
}
?>
在第三个文件中引入:
// 这个是c.php文件下的源代码
<?
require "a.php"
require "b.php"
a\demo();
b\demo();
?>
最后输出:
我是第一个文件下的demo方法,啦啦啦
我是第二个文件下的demo方法,啦啦啦
**命名可以任意定义,只要之前没有出现即可。
一般情况下,命名是与目录以及文件名一致。thinkphp也是如此。
在ThinkPHP5.0版本中,引入了惰性加载。
惰性加载:一个类只有在使用的时候才include(require)进来。
优点:减少内存占用,提高系统整体速度**
惰性加载用到了这个函数:spl_autoload_register