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

PHP加入命名空间的好处方便自动加载

程序员文章站 2022-03-27 16:49:29
...
这篇文章主要介绍了关于PHP加入命名空间的好处方便自动加载,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

一个PHP项目,通常只有一个入口文件index.php,我们通常会在这个入口文件中写入自动加载函数,用来require以后会实例化的类文件。如:

spl_autoload_register(function ($className) {    require 'class/' . $className . '.php';});通过以上的代码,我们发现:在自动加载时,我们需要指定存放类的文件夹,以便找到相应的类。那么问题产生了。在引入命名空间之前:

PHP加入命名空间的好处方便自动加载

我们的项目目录

PHP加入命名空间的好处方便自动加载

index.php

PHP加入命名空间的好处方便自动加载

Controller.php

在index.php中我们需要实例化一个controller目录下的Controller类,并且调用这个对象的model()方法,而这个方法则需要实例化一个model目录下的Model类。我们运行一下index.php:

Warning: require(controller/Model.php): failed to open stream: No such file or directory

提示没有这个文件或目录。原因很简单:PHP在new Model()的时候,是自动去controller目录下去require的,所以找不到。

那么,我们的自动加载函数应该怎么写才能解决问题呢?很显然,把'controller/'换成'model/' 或者 不写目录,都不能正常加载。于是,使用命名空间的好处就显现出来了。

引入命名空间之后:

PHP加入命名空间的好处方便自动加载

index.php

PHP加入命名空间的好处方便自动加载

Controller.php

PHP加入命名空间的好处方便自动加载

Model.php

我们按照文件目录的结构来为每个类写入命名空间,当在一个类中需要实例化另外一个类时,IDE会帮我们写入use namespace ; 。这样,我们在写自动加载的时候,就不用考虑将要加载的类在哪一个文件目录下了,只需要这样写:

spl_autoload_register(function ($class) {    require $class . '.php';});因为我们在index.php中use了所用到的类的命名空间,自动加载函数会到相应的命名空间中去寻找类(上述代码中的$class就相当于是'controller\Controller'),而这些类中又需要实例化其他的类,因为这些类中也声明了use 其他类的命名空间 ;,所以自动加载函数又会去相应的命名空间中去require其他类。这样,我们就不会为加载类而发愁了,极大地解放了我们的编程负担。

相关推荐:

无需重新编译php加入ftp扩展的方法

PHP加入数据程序的具体实现方法

以上就是PHP加入命名空间的好处方便自动加载的详细内容,更多请关注其它相关文章!

相关标签: php 方便 好处