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