php中require和use的一些理解,在此做个笔记(本人小白哈)
作为一个小白,use和namespace着实让我迷惑了很久,实在是想不明白为什么要用这两个东西。通过查找大量的查找学习,总结了一点自己的理解。
首先,require是用来引入外部文件的(此处require_once和include之类的,都看作一样)。而use,只是引入了命名空间和类名,如“use x\test_x”,x就是命名空间,test_x就是类名;简化了命名空间和类名的组合,在下面实例化的时候,只要直接new 类名就行了;且use不用像require一样,需要保证路径,use不存在路径一说。
下面上例子:
新建两个文件,第一个:program.php,代码如下:
第二个:testclass1.php,代码如下:
如program.php中所示,这里使用了use,则下面直接:new test_x()即可;如果把use这行注释掉,则下面需要改成:new x\test_x();否则会报错,所以这里use只是起到了简化的作用。
下面,测试使用自动加载机制:spl_autoload_register();
需要修改代码,program.php如下:
testclass1.php如下(这个文件只是修改了类名,保证类名和文件名一致):
此处也是用到了use来简化命名空间+类名的组合,如果没有use,则下面应该改成:new x\testclass1。另外,在自动加载类的机制下,如果不修改testclass1.php文件中的类名(保证和文件名相同),则会一直报错,提示文件找到,但是无法找到该类。如有大神能实现文件名和类名不同的情况下,还能成功自动加载机制调用的,请指教。
另外个人的感觉,这个use,真的是比较适合多人合作的时候使用,如果是自己一个人的小项目,感觉完全没必要用,只要保证我每个类名不重复,就可以了。当然了,直接use+require的方式,是面向过程的做法,而自动加载机制+use则是面向对象的做法。不过我个人觉得,如果项目不是那么庞大,只要能解决实际问题,没必要非要纠结面向对象还是面向过程_(小白个人意见,有大神有不同看法,可说明)。