命名空间学习

<?php
// php四大开发成员 常量,函数,类(接口) 默认是声明在全局空间中的
// 优点:全局调用
// 缺点:不能重复命名
// 命名空间 namespace

// function demo()
// {

// }

// function demo()
// {
    
// }    //报错

class UserController{

}

class UserModel{

}

class UserView{

}

class UserCenterView{

}


?>

  

<?php
// namespace需要写在脚本的顶部 必须是php的第一条指令(除了declare指令)
/**
 *namespace ns1{
 * }
 * namespace ns2{
 *} 
 * 全局空间
 * namespace{
 * }
 * 
**/

namespace one{
    function demo()
       {
             echo '我是one空间中的demo()函数<br>';
       }
}



namespace two{
    function demo()
       {
            echo '我是two空间中的demo()函数<br>';
       }

       demo();

       // 在two空间中调用one空间中的demo()
        \one\demo();
}

//全局函数 
namespace {
    function demo()
       {
            echo '我是全局空间中的demo()函数<br>';
       }

       \demo();
       \one\demo();
       \two\demo();
}

?>

  

<?php
namespace phpcn\cart;

class demo
{
    public static function getSite()
    {
        return 'php中文网进阶课购物车<br>';
    }
}

echo Demo::getSite();
// 查看类的完全限定名称
echo Demo::class;//phpcn\cart\Demo


namespace phpcn\order;
class Demo
{
    public static function getSite()
    {
        return 'php中文网进阶课订单<br>';
    }
}
echo Demo::getSite();

// 在一个空间中访问另一个子空间中的成员 需要先回到全局空间再进入子空间
echo \phpcn\cart\Demo::getSite();





?>

  

<?php
// 子空间和公共空间中存在同名的全局成员 函数 类 优先级 子空间>全局空间

function func1()
{
    echo '我是公共空间中的函数'.__FUNCTION__,'<br>';
}

class Test
{
    const APP_NAME = 'my blog';
}

?>

  

<?php
namespace php\ns\one;
require 'dome.php';
function fun1()
{
    echo __NAMESPACE__;
}

function var_dump($name)
{
    echo '早上好!'.$name;
}

class Test{
    const APP_NAME = 'taobao';
}
fun1();//php\ns\one

var_dump('罗月喵');

echo Test::APP_NAME;
?>

  

<?php
// use 在命名空间中的作用
// 1.use 引入别的命名空间到当前空间 as 为引过来的命名空间起别名
// 2.use 引入别的命名空间中的类到当前空间 as 为引过来的命名空间中的类起别名
namespace app\admin\controller;

// 控制器类 index
class Index{
    public function index()
    {
        return __METHOD__;
    }
}

namespace extend\lib;
// \代表根root 空间
echo (new \app\admin\controller\Index)->index();//app\admin\controller\Index::index
// 1.use 导入命名空间
use app\admin\controller;
// 2.成功导入命名空间以后 就可以不使用类的完全限定名称 来调用类元素
echo (new controller\Index)->index();//app\admin\controller\Index::index
// 3.为空间起一个别名
use app\admin\controller as app;
echo (new app\Index)->index();//app\admin\controller\Index::index


echo '<hr>';
// 使用use导入别的空间中的类 可以为该类起别名
// use app\admin\controller\Index as Index;
use app\admin\controller\Index as In;

// echo (new Index)->index();
echo (new In)->index();
?>

  

<?php
// 传统方式
// require 'app/admin/controller/Login.php';
// require 'app/admin/controller/User.php';
// require 'app/admin/model/Login.php';
// require 'app/admin/model/User.php';
// 引入类的自动加载器 只是加载类文件
namespace app;
require 'app/admin/autoload.php';


// 起别名
use app\admin\controller\Login;
use app\admin\controller\User;
use app\admin\model\Login as LoginModel;
use app\admin\model\User as UserModel;

$loginController = new Login;
$loginModel = new LoginModel;
$userModel = new UserModel;
$UserController = new User;

echo $UserController->index();
?>

  

<?php
namespace app\admin\controller;
class Login
{
    
}



?>

  

<?php
namespace app\admin\controller;
// 控制器 User文件 想使用User model
use app\admin\model\User as UserModel;
class User
{
    public function index()
    {
        $res = UserModel::getInfo();
        return $res;
    }
    
}
<?php
namespace app\admin\model;
class User
{
    static function getInfo()
    {
        return '获取到用户信息';
    }
    
}



?>

  

<?php
// 类的自动加载

//  spl_autoload_register(function($className){
//       // 先检查要加载的类
//       echo $className.'<hr>';
//       // 将类的命名空间与类文件所在的路径保持一一映射 linux /  window \
//       $file = str_replace('\\',DIRECTORY_SEPARATOR,$className).'.php';
//     echo $file;

//     if(!(is_file($file) && file_exists($file)))
//     {
//         throw new \Exception('文件名不合法或者不存在');

//     }
//     require $file;

//     // require $className.'.php';
// });


spl_autoload_register(function($class){
  require $class.'.php';
})
?>

  

?>

  

<?php
namespace app\admin\model;
class Login
{
    
}



?>

  

posted @ 2024-07-13 23:08  好好学习天天向上上上  阅读(3)  评论(0编辑  收藏  举报