laravel - php许多框架直接通过命名空间导入相关类,但是命名空间其实没那个功能?解释一下啊
Jul 06, 2016 pm 01:52 PM
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方法便引入了相关类

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian

Comment configurer Visual Studio Code (VS Code) pour le développement PHP
