PHP命名空间实现自动加载引入文件
PHP 命名空间(namespace)
PHP 命名空间(namespace)是在PHP 5.3中加入的,如果你学过C#和Java,那命名空间就不算什么新事物。 不过在PHP当中还是有着相当重要的意义。
PHP 命名空间可以解决以下两类问题:
- 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
- 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。
虽然使用了命名空间,但我们在使用的时候也需要引入PHP文件,这就造成命名空间有时候不会减少我们的工作量,反而增加了我们的工作量。
自动加载
自动加载就是为了解决有了命名空间还让我们引入文件的问题。
文件结构:
自动加载有几种方式去实现:
1.__autoload()方法
?1 2 3 4 5 6 7 8 9 10 11 12 | index.php文件 function __autoload( $class ){ if ( $class ) { $file = str_replace ( '\\' , '/' , $class ); $file .= '.php' ; if ( file_exists ( $file )) { include $file ; } } } $class = new \app\Index(); $class ->index(); |
2.spl_autoload_register()方法,如果用spl_autoload_register,autoload就失效了。
?1 2 3 4 5 6 7 8 9 10 11 12 | index.php文件 spl_autoload_register( function ( $class ) { if ( $class ) { $file = str_replace ( '\\' , '/' , $class ); $file .= '.php' ; if ( file_exists ( $file )) { include $file ; } } }); $class = new \app\Index(); $class ->index(); |
3.使用composer的自动加载实现。
在文件的跟目录创建composer.json文件。"app\\": "app"指向命名空间的文件存放的地址
?1 2 3 4 5 6 7 | { "autoload" : { "psr-4" : { "app\\" : "app" } } } |
使用命令composer install,生成vendor文件在根目录index.php 引入vendor/autoload.php
?1 | require 'vendor/autoload.php' ; |
PSR-0
PHP的命名空间必须与绝对路径一致。
类名首字母大写。
除了入口文件之外,其他的PHP文件必须是一个类,不能有执行的代码。
到此这篇关于PHP命名空间实现自动加载引入文件的文章就介绍到这了,更多相关PHP自动加载内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/qq_39688201/article/details/126360305
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。