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

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
發布: 2016-07-06 13:52:41
原創
963 人瀏覽過

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.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
怎麼學好php
來自於 1970-01-01 08:00:00
0
0
0
PHP擴充intl
來自於 1970-01-01 08:00:00
0
0
0
php數據獲取?
來自於 1970-01-01 08:00:00
0
0
0
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板