PHP 文件包含20
PHP 文件包含 include
PHP 文件包含
在我们实际的生产工作中,当构建一个较大的系统时,总有一些内容是需要重复使用的,如一些常用的函数,或者一些公共 html 元素如菜单,页脚等。我们可以把这些公共的内容集中写入一些文件内,然后再根据具体情况,在需要的地方包含进来,这样可以节约大量的开发时间,使代码文件统一简练,以利于更好的维护。
include() 和 require() 语句都可用于这种文件的包含。
下面的例子演示文件包含的用法。
创建一个file.php文件:
<?php
$word = "你好!";
?>
然后在另外的文件如 test.php 中包含它(两个文件在同一目录):
<?php
echo "包含内容为:".$word."<br />";
include("file.php");
echo "包含内容为:".$word;
?>
运行 test.php 输出如下:
包含内容为:
包含内容为:你好!
从上面的例子可以看出,包含文件,可以理解为将被包含的文件用于替换了 include() 语句部分。在包含了文件之后,被包含文件的内容便成为了当前文件的一部分,被包含的内容也开始生效。
include() 与 require() 的区别
require() 语句也可用于文件的包含,在使用上等同于 include() 。但二者也有一些细微差别,可以视实际情况采用 include() 还是 require() 。
二者区别如下:
当包含的文件不存在时(包含发生错误),如果使用 require() ,则程序立刻停止执行,而使用 include() 的话,系统除了提示错误外,下面的程序内容还会继续执行。大多情况下推荐使用 require() 函数,以避免在错误引用发生后的程序继续执行
不管 require() 语句是否执行,程序执行包含文件都被加入进来,include() 只有执行的时候文件才会被包含。所以如果是有条件判断的情况下,用 include() 显然更合适
使用 require() 多次引用时,只执行一次对被引用文件的引用动作,而 include() 则每次都要进行读取和评估后引用文件
PHP 设定系统 include_path 包含路径
系统包含路径
使用include() 或 require() 语句包含文件时,可以写明具体的文件及路径,还有一种方式是设定 PHP 系统包含路径,而在 include() 或 require() 直接包含目标文件。
PHP系统包含路径可以在 php.ini 里面设定(Windows版本):
include_path = ".;e:\php5\includes"
在没有修改 php.ini 权限的条件下,可以使用 PHP 的相关函数来进行系统包含路径 include_path 的设定。
ini_get()
ini_get() 函数用于取得系统配置信息,成功则返回对应的配置信息字符串,否则返回空字串。
语法:
string ini_get( string varname )
参数为配置变量名。
ini_set()
ini_set() 函数用于设定新系统配置信息,成功则返回原来的变量值,失败则返回FALSE。
语法:
string ini_set( string varname, string newvalue )
更改系统包含路径的例子:
<?php
//定义自己应用的包含路径,多个路径以 ; 分隔
define('INC_DIR', '../common;../lib');
$inc_path = ini_get('include_path');
echo "系统 include_path 路径:".$inc_path."<br />";
$inc_path .= ';'.INC_DIR;
ini_set('include_path', $inc_path);
echo "现在系统 include_path 路径:".ini_get('include_path');
//直接包含目录内文件
//include("1.php");
?>
运行结果输出如下:
系统 include_path 路径:.;e:\php5\includes
现在系统 include_path 路径:.;e:\php5\includes;../common ;../lib
设定了系统包含路径之后,可以在 include() 或 require() 语句中直接将需要包含的文件包含进来而无需标明具体路径。而对具体的多个路径,可以如上例所示集中定义:
define('INC_DIR', '../common ;../lib');
提示
php.ini 的参数里面,只有可修改范围为 PHP_INI_ALL 的参数才可以通过 ini_set 来修改,如 include_path 、date.timezone 等。