批改状态:合格
老师批语:其实完整的类, 就应该带上空间的
PHP 命名空间可以解决以下两类问题:
1、非限定名称:省略空间名称,使用默认或当前的命名空间
2、完全限定名称:类似绝对目录,从全局空间的反斜线开始’\’
3、限定名称:前面必须添加全局空间才可访问
示例:
<?phpnamespace test;const USER_NAME = '曹操';function info(){return '魏国人';}class Demo{public static function nation(){return USER_NAME.'->魏国人!';}}echo '1、非限定名称:省略空间名称,使用默认或当前的命名空间';echo '<hr>';echo USER_NAME;echo '<hr>';echo info();echo '<hr>';echo Demo::nation();echo '<hr>';echo '当前命名空间: ',__NAMESPACE__,'<hr>';echo '2、完全限定名称:类似绝对目录,从全局空间的反斜线开始';namespace test\demo\show\index\test;const USER_NAME = '刘备';function info(){return '蜀国';}class Demo{public static function nation(){return USER_NAME.'->魏国人!';}}echo '<hr>';echo \test\demo\show\index\test\USER_NAME;echo '<hr>';echo \test\demo\show\index\test\info();echo '<hr>';echo \test\demo\show\index\test\Demo::nation();echo '<hr>';echo '当前命名空间: ',__NAMESPACE__,'<hr>';use test\demo\show\index\test as show;echo show\USER_NAME;echo show\info();echo show\Demo::nation();echo '<hr>';echo '3、限定名称:前面必须添加全局空间才可访问';namespace test\demo\show\index;echo test\USER_NAME;echo '<hr>';echo test\info();echo '<hr>';echo test\Demo::nation();echo '<hr>';echo '当前命名空间: ',__NAMESPACE__,'<hr>';
示例图
总结:完全限制:从全局开始,类似绝对路径。
限定名称:添加了全局空间才可以使用。类似相对路径
非限定名称:类似类访问当前的空间。
自动加载就是我们在new一个class的时候,不需要手动去写require来导入这个class.php文件,程序自动帮我们加载导入进来。
自动加载可以说是现代PHP框架的根基,任何牛逼的框架或者架构都会用到它,它发明出来的理由是啥呢?一个字:懒。因为项目越来愈大,相关联的类库文件越来越多,我们不可能再像小项目那样在一个文件中全部手动一个一个require
示例
<?phptry {spl_autoload_register(function($class){$path = str_replace('\\',DIRECTORY_SEPARATOR,$class);$file = __DIR__. DIRECTORY_SEPARATOR.$path.'.php';if(!(is_file($file) && file_exists($file)))//判断$file是不是一个文件和存不存在{throw new \Exception('不是文件或者文件不存在');}require $file;});} catch (Exception $e){die($e->getMessage());}use bin\lib\Test;use bin\lib\Test1;use bin\lib\Test2;use bin\lib\Test3;echo Test::class;echo"<br>";echo Test1::class;echo"<br>";echo Test2::class;echo"<br>";echo Test3::class;
示例图:
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号