[php]引入文件的习惯
1、__DIR__后面记得接斜杠/ 例如require_once __DIR__.'/../a.php';
其实我个人习惯,无论是定义好的路径还是用__DIR__ 只要后面连路径,开头必然会写一个斜杠/,这是最保险的。
例如:
define('MY_PATH',realpath(__DIR__.'/../../my/') . '/' );
require_once( MY_PATH . '/test.php' ); // 不用关心定义的路劲最后是不是斜杠,就算路劲有两个斜杠,其实对路径的解析是没有影响的
2、用require_once,不要用include_once。 因为用include的时候路劲如果错了,是不会告诉你的,然后你找了半天为什么class xxx not found也找不到原因,用require_once的话会直接告诉你路劲错误。另外,不要说require比include开销大,其实那点开销是小到可以忽略的。
3、引入文件不要用realpath函数,原因:一是用realpath会带来不好的阅读体验,其他人看到你这样还要先判断你realpath之后的值;二是realpath返回的路径最后面会缺少一个斜杠/;三是编辑器不够智能,无法识别realpath返回的路径,就无法判断你是否引入了相应的类,例如你用realpath引入了一个类文件,但编辑器往往会以为你没有引入某个类,而给你警告类不存在,作为强迫症这个真不能忍.....
不推荐写法: require_once( realpath(MY_PATH . '/../my/test_class.inc.php') ); 推荐写法:require_once( MY_PATH . '/../my/test_class.inc.php' );
但是,定义项目路径的时候可以用realpath函数,但别忘了后面加斜杠/
例子:define('MY_PATH',realpath(__DIR__.'/../../my/') . '/' );
4、当一个php文件引入其他文件时,一定要用绝对路径,不要用相对路径。
错误做法: require_once('/../test.php');
正确做法: require_once(__DIR__.'/../test.php'); 或者 require_once( MY_PATH . '/test.php' );
为什么不能用相对路径?因为要考虑文件之间相互引入的时候,会出现路劲解析错误导致文件不存在的异常。PHP中相对路径是以当前工作目录为基准的,并非以当前处理文件目录为基准。
5、类文件:当类继承另一个类的时候,必须要引入被继承的类,因为要确保这个类文件被单独引入也能正常使用这个类的功能。
例如:
require_once(__DIR__. '/parent_class.inc.php');
class child_class extends parent_class{
...
}