引用

首先说说引用,看课本上的时候针对引用只是说了变量的引用,未提及到函数引用(可能是书本落后了有或者未全部罗列,书本只是入门,很多东西需要后面自己去深究)。然后有一次看别人写的程序,发现了函数前面带有&符号,&符号不是引用吗,后来查阅了官方文档,才知道函数引用这个东西。关于那个函数是这样的,连接数据库函数,巧妙的通过静态变量和引用实现了mysqli的单例模式,很强。

通过网上冲浪,看到了一篇文章,关于引用的。如果函数在返回时用了()逻辑就变了,用了()就是表达式了,而返回结果就是引用的变量了,我原本是在找关于include用括号和不用括号相关的文章,没想到发现这个知识点,学习了。原文链接https://blog.csdn.net/zha_stef/article/details/38559169

include

关于include/require语句(include/requie这里统称include),注意include是语句,而不是函数。函数调用是带有()的,include对于()是可有可无的。一会有一会没有的,我略有强迫症,难受。于是就是看看别人的代码是怎么写的,鉴于权威性的我就去看看php.net的网站是怎么写的,我发现下面的规律:
1.include如果是纯文本就带(),如果是带有变量就不用(),include语句带有_once不管是不是带有变量都不用(),而require和require_once不管带不带变量都不带()。这总结是针对于大部分文件的,也有部分文件并不是这样的。
2.如 include('include/prepend.inc');
3.如 include __DIR__ . '/include/prepend.inc';
4.如 include_once 'include/prepend.inc';
5.如 include_once __DIR__ . '/include/prepend.inc';
6.require就不列了,require都是不带()的
再次说明,以上总结是正对于大部分文件的,并不是所有文件都这样的。看完了代码,还是很疑惑,没能够完美解决,于是我继续找答案。最后看了上面所提到关于引用的文章,解决了我的疑惑。既然include是语句,而不是函数,那么就没必要用()了,何必多此一举呢,感觉不带()更标准一些,因为include是语句,在加上()是表达式的一种表现。关于include路径和性能优化问题,用绝对路径看到比相对路径性能好,因为用来绝对路径include的时候就会跳过include_path的,关于这个问题如果你不明白,官方文档是最好的老师,'./include/prepend.ic','../include/prepend.ic'也会跳过include_path的。

总结

所以关于include语句用不用括号,我的答案是不用括号。
我想起了了,通过静态变量加引用函数实现mysql链接的单例模式是哪个程序这样干的,是codeignore。