命名空间和MYSQL入门
一:命名空间
1.PHP的常量,类和函数都是全局成员,如果再脚本中出现了重复命名,就会产生一个致命错误;所以就有了命名空间,命名空间的作用就是解决重名问题;不同命名空间中的相同命名不会发生冲突;
2.命名空间是用namespace关键字声明的,必须写再脚本的顶部,declare指令除外;
3.子空间的优先级大于公共空间的;
4.use 在命名空间空间中的作用:将其他空间中的元素导入到当前空间,并可以用as为引过来的命名空间起别名来避免命名冲突;
使用use
<?php
namespace app\one;//第一个命名空间
class Index
{
public static function index()
{
return __CLASS__;
}
}
namespace app\two;//第二个命名空间
// echo \app\one\Index::index();//如果命名空间名字很长,调用起来比较麻烦;
use app\one\Index;//使用use关键字
echo Index::index();//调用起来比较简洁
使用as
<?php
namespace app\method\one;
class Index
{
public static function index()
{
return __CLASS__;
}
}
namespace app\method\two;
// echo \app\one\Index::index();
use app\method\one as app;//给命名空间取个别名
echo app\Index::index();
echo '<hr>';
use app\method\one\Index as app1;//为命名空间的类取个别名
echo app1::index();
echo '<hr>';
use app\method\one\Index;//如果别名和类名一样可一省略别名
echo Index::index();
5.使用自动加载器加载带有命名空间的类
类文件自动加载
<?php
spl_autoload_register(function($className){
require $className.'php';
});
加载带有命名空间的类文件
<?php
namespace app;
require 'autoload.php';//加载自动加载器,相当把流类文件复制到当前文件
use app\admin\controller\Login;//同时要使用use关键字拿到类的命名空间
$loginController = new Login;
echo $loginController->index();