房产交易网站开发三网合一网站源码下载
news/
2025/10/3 21:52:17/
文章来源:
房产交易网站开发,三网合一网站源码下载,夏津网站建设电话,推广方式有哪些渠道本系列第三篇文章#xff0c;一起了解下PSR规范中的PSR4和PSR0规范首先恭喜大家#xff0c;包括我自己#xff0c;坚持到了现在。这篇文章之后#xff0c;Composer的基础原理就清晰明了咯。也就是说#xff0c;Composer所利用的正是spl_autoload_register()和PSR4规范一起了解下PSR规范中的PSR4和PSR0规范首先恭喜大家包括我自己坚持到了现在。这篇文章之后Composer的基础原理就清晰明了咯。也就是说Composer所利用的正是spl_autoload_register()和PSR4规范然后通过线上服务器存储包来实现包管理的功能。spl_autoload_register()的作用我们已经清楚了主要就是动态加载我们所需要的文件。然而我们的文件不可能都乱七八糟的随便找个目录放下然后注册一堆的spl_autoload_register()来加载吧要真这么写估计你的老板会废了你。在这个时候PSR路径规范的作用就显示出来咯本文参考PSR规范https://psr.phphub.org/PSR4的格式命名空间(子命名空间)*类名具体的内容直接上文中提供的参考链接这里总结重要的几点顶级命名空间必须有一个子命名空间可以多个或没有类名必须有大小写敏感下划线无实际意义注意下划线是主要的和PSR0的区别类名与文件载入的对应去掉最前面的命名空间的分隔符前面的命名空间作为[命名空间前缀]必须与至少一个[文件基目录]对应子命名空间与[文件基目录]下的文件夹对应命名空间分隔符号作为目录分隔符号末尾的类名与最终目录下的对应的.php文件相同autoload的实现不可出现异常也就是要解决掉异常问题估计各位看得一脸懵逼吧其实很好理解举例说明我们先建立一个目录叫myvendor里面放着常用的工具包如图那么TestClass.php的命名空间应该是Test而CaseClass的应该是CaseModelCaseChild。统一从myvendor这个文件夹作为入口进入。也就是myvendor是一个超级[基目录]然后Test和CaseModel是对应命名空间的两个[文件基目录]剩下的子个名空间与目录对应。官网中还有其他的展示方式但在这里我们用这种最标准的方式。其实说白了就是命名空间和目录对应上写代码找文件就方便得很啦上面说的是PSR4的规范那么PSR0又是什么鬼目前来说PSR0已经废弃了它们两个大部分内容还是相近的最大的区别在于PSR0中的_这个符号是有意义的也就是/namespace/package/Class_Name这样的内容会去提供/namespace/package/Class/Name.php文件而PSR4中则忽略_这个符号的意义还是去查找Class_Name.php这个文件。TestClass.php代码?phpnamespace Test;class TestClass
{public function show(){echo we are family!n;}
}CaseClass.php代码?phpnamespace CaseModelCaseChild;class CaseClass
{public function show(){echo Good!n;}
}接下来在myvendor目录外面添加一个psr4.php文件代码如下?phpspl_autoload_register(function ($class) {$vendor __DIR__ . /myvendor;$file $vendor . / . str_replace(, /, $class) . .php;if (file_exists($file)) {require $file;}
});use CaseModelCaseChildCaseClass;
use TestTestClass;$t new TestClass();
$t-show();$c new CaseClass();
$c-show();神奇的事情发生了文件自动加载进来了有点高大上吧至此关于Composer的自动加载部分就结束了。我们一起学习到了PHP是如何通过spl_autoload_register方法来自动加载文件并且通过PSR4规范来形成约束让大家都有一套统一的规范。而这些正是Composer的灵魂和肉身。完整源码https://github.com/zhangyue0503/php-blog-code-resource/tree/master/composer/base/psr4namespace
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/926360.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!