欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

laravel - php许多框架直接通过命名空间导入相关类,但是命名空间其实没那个功能?解释一下啊

程序员文章站 2022-06-12 09:36:37
...
php许多框架直接通过命名空间导入相关类,但是命名空间其实没那个功能?解释一下啊

导入一个类使用require_once include_once()...

但是许多框架,诸如thinkphp,laravel等并没有通过这些方法,而是通过命名空间

这是怎么回事呢?

回复内容:

php许多框架直接通过命名空间导入相关类,但是命名空间其实没那个功能?解释一下啊

导入一个类使用require_once include_once()...

但是许多框架,诸如thinkphp,laravel等并没有通过这些方法,而是通过命名空间

这是怎么回事呢?

另外两位的答案都提到了一些点, 但是不够完整

首先这是自动加载的特性

PHP5中引入了自动加载, 你可以使用spl_autoload_register注册一个自动加载函数, 当PHP在找一个内存中还不存在的类时, 就会依次调用spl_autoload_register注册进来的自动加载函数来寻找类

另一个也可用但是不好的方式是通过覆盖__autoload函数, 只是这样你就只能有一个自动加载函数了, 如果你还用一些其它类库, 可能会产生一些问题, 所以并不建议这么做

至于composer, 它带了一个标准的autoload实现, 如果你可以让自己的代码遵循PSR的目录组织方式, 也可以直接用composer提供的autoload的实现, 可以简单去了解一下PSR

需要注意的事, 自动加载这个特性和命名空间是无关的, 虽然推荐它和命名空间一起使用, 但是你会在一些老PHP代码中发现其实是用下划线_来变通的实现了命名空间的效果的

有的,只是不是直接写在逻辑代码里,你的问题,你可以试着搜下php自动加载,composer自动加载

你可以查下 命名空间use的用法,是use引入类,所以不需要require_once include_once()...
而use其实是没有引入功能的,只是程序自动加载了__autoload方法便引入了相关类

相关标签: php laravel