首页 > 其他分享 >命名空间学习

命名空间学习

时间:2024-07-13 23:07:49浏览次数:16  
标签:Index index demo app echo 学习 空间 controller 命名

<?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
{
    
}



?>

  

标签:Index,index,demo,app,echo,学习,空间,controller,命名
From: https://www.cnblogs.com/QWD7986/p/18300946

相关文章

  • AD学习易忘点DAY1
    目录一.AD原理图中元件引脚红色波浪线报错问题二.原理图更新到到PCB三.将立创EDA中的元器件的原理图/封装和3D模型导入AD的库中四.PCB板框绘制、定义板子形状、重新设置原点、放置尺寸标注五.原理图导入pcb出现报错CannotLocateDocument一.AD原理图中元件引脚红色波......
  • 昇思25天学习打卡营第20天|K近邻算法实现红酒聚类
    这节课主要学习使用MindSpore在部分wine数据集上进行KNN实验。目标是了解KNN的基本概念以及如何使用MindSpore进行KNN实验。1.K近邻算法原理介绍1.1K近邻算法(K-Nearest-Neighbor,KNN)是一种用于分类和回归的非参数统计方法,最初由Cover和Hart于1968年提出(Cover等人,196......
  • Java第二周学习总结
    深入Java基础语法本周,我进一步理解Java中的基本数据类型和引用数据类型。学会了如何根据需求选择合适的数据类型。掌握了算术运算符、关系运算符、逻辑运算符以及位运算符的使用,能够编写简单的表达式进行计算和条件判断。并深入学习了if-else、switch-case、for、while、do-whi......
  • hadoop学习
    在数据驱动的时代背景下,Hadoop作为一款开源的大数据处理框架,其地位举足轻重。自开始接触Hadoop以来,每一次深入学习都如同揭开大数据处理神秘面纱的一角,让人兴奋不已。Hadoop的核心魅力在于其分布式文件系统HDFS和计算框架MapReduce,以及资源管理器YARN。HDFS负责存储海量数据,MapRed......
  • Spring框架,IOC学习整理
    思考平时我们创建对象的类的时候,经常会在类里面引用其他的类,形成类与类的依赖,当其中一个类功能需要进行修改的时候,就需要修改那个类的代码,由于这个类的依赖关系很复杂也就是所说的耦合度很高,所以很可能导致修改一个类就需要修改其他依赖这个类的代码,极大的影响开发的效率,......
  • Web学习day04
    mybatis目录mybatis文章目录一、查询1.1结果映射1.2多条件查询1.3模糊查询二、XML书写规范三、动态SQL四、配置文件4.1settings标签4.2mappers标签4.3environments标签五、案例5.1数据表5.2实现类5.3mapper实现5.4工具类实现5.5XML动态SQL实现5.6XML配置......
  • 关于Hadoop学习
    Hadoop是一个开源的分布式计算框架,被广泛应用于大数据处理和分析中。作为一个学习Hadoop的初学者,我不仅对其强大的功能和灵活性感到震撼,还深刻体会到了学习这一技术所需的耐心和毅力。在这篇文章中,我将分享我学习Hadoop的体会和心得。学习Hadoop需要具备一定的计算机基础知识和编......
  • 每周JAVA学习汇总
    本周我自学了Java的输入与输出包括了:使用Scanner类进行输入导入Scanner类:importjava.util.Scanner;创建Scanner对象:Scannerscanner=newScanner(System.in);读取不同类型的数据:读取字符串:StringinputString=scanner.nextLine();读取整数:intinputInt=scanner.ne......
  • Java学习第二周
    标识符是用来给变量,类,方法以及包进行命名的。标识符的命名规则1.必须以字母、下划线“”、美元符“$”开头。2.其他部分可以是字母、下划线“”、美元符“$”和数字的人员组合·。3.大小写敏感,且长度无限制。4.不可以是Java的关键字。标识符使用规范表示类名的标识符:每个单......
  • 2024.07.06 hadoop学习
    这是暑假自学的第一周,在这里做一个周总结。自从考完试之后,数据库小学期也开始了,所以我在下午进行自学,这一周自学的内容是javaweb。这一周每天下午都会抽出一小时的时间学习,学习的主要内容是javaweb中的maven,连接数据库,进行CRUD开发。在学习maven的过程中,主要使用半成品框架......