批改状态:合格
老师批语:自动加载器的设计 原理非常的巧妙, 不是吗?
<?php//1.建立一个命名空间namespace Phone\iphone;//函数function iphone4(){return 'iphone4的价格是1000元';}//类class iphone5{public static function iphon5(){return 'iphone5的价格是2000元';}}//接口interface iphone6{public static function iphone6();}//常量const IPHONEX = 'iphonex的价格是8000元';//2.建立另一个命名空间,并且访问上一空间中的内容namespace aaa;//通过完全限定名称访问//函数echo \Phone\iphone\iphone4() , '<br>';//类echo \Phone\iphone\iphone5::iphon5() , '<br>';//常量echo \Phone\iphone\IPHONEX , '<br>';echo '<hr>';//通过use关键字引入,把访问由完全限定名称转换为限定名称或者非限定名称//函数//可以通过use将访问函数由完全限定名称转换为限定名称,但是不能转换为非限定名称use Phone\iphone;echo iphone\iphone4() , '<br>';//类//可以通过use将访问类由完全限定名称转换为非限定名称,但是不能转换为限定名称use Phone\iphone\iphone5;echo iphone5::iphon5() , '<br>';//接口//可以通过use将访问接口由完全限定名称转换为非限定名称,但是不能转换为限定名称use Phone\iphone\iphone6;class iphone6s implements iphone6{public static function iphone6(){return 'iphone6的价格是3000元';}}echo iphone6s::iphone6() , '<br>';//常量//没有办法通过use将完全限定名称转换为限定名称或者非限定名称//use Phone\iphone;//echo IPHONEX;
<?phptry {spl_autoload_register(function ($namespace){//将命名空间中的分隔符转换为目录分隔符$path = str_replace('\\', DIRECTORY_SEPARATOR, $namespace);//生成真正要加载的地址和文件$file = __DIR__ . DIRECTORY_SEPARATOR . $path . '.php';require $file;});}catch (Exception $e) {die($e->getMessage());}
<?phprequire 'autoload.php';use car\toyota\corolla;echo corolla::aaa(), '<br>';
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号