7.1 PHP文件间的引用
在讲解自定义函数之前,先介绍4个有关PHP文件间相互引用的PHP语言结构,包括include、include_once、require和require_once语言结构。通过使用文件间的相互引用功能,可以增强代码的重用性。
7.1.1 include语言结构
include语言结构的语法格式:mixed include(string resource)
include语言结构的功能:include语言结构将一个资源文件resource载入到当前PHP程序中。字符串参数resource是一个资源文件的文件名,该资源可以是本地WEB服务器上的资源,如图片、HTML页面、PHP页面等,也可以是互联网上的资源。若找不到资源文件resource,include语言结构返回FALSE;若找到资源文件resource,且资源文件resource没有返回值时,返回整数1,否则返回资源文件resource的返回值。
include语言结构使用说明如下。
(1)使用include语言结构载入文件时,如果被载入的文件中包含PHP语句,这些PHP语句必须使用PHP开始和结束标记标识。
(2)resource资源是互联网上的某个资源时,需要将配置文件php.ini中的选项allow_url_include设置为On(allow_url_include = On),否则不能引用该互联网资源。
下面两个程序included.php和main.php演示了include语言结构的用法,这两个程序位于同一个目录(例如C:\wamp\www\7)中,其中程序main.php为引用文件,程序included.php为被引用的文件,引用文件main.php的运行结果如图7-1所示。
程序included.php
<?php
$color = 'red';
$fruit = 'apple';
echo "这是被引用的文件输出!<br/>";
?>
程序main.php
<?php
echo "A $color $fruit<br/>";
include("included.php");
//也可以写成include "included.php";
echo "A $color $fruit<br/>";
?>
7.1.2 require与include语言结构的比较
require 语言结构的语法格式及功能与 include 基本相同,两者之间只存在着细微的区别。在错误处理方面,使用include语言结构,如果被引用文件发生错误或不能找到被引用文件,引用文件将提示Warning信息然后继续执行下面的语句;使用require语言结构,如果被引用文件发生错误或不能找到被引用文件,引用文件将提示Warning 信息及Fatal error 致命错误信息然后终止程序运行。下面的两个程序main1.php和main2.php演示了include与require语言结构的区别。
程序main1.php
<?php
echo "A $color $fruit<br/>";
include('notExist.php');
echo "A $color $fruit<br/>";
?>
程序main2.php
<?php
echo "A $color $fruit<br/>";
require('notExist.php');
echo "A $color $fruit<br/>";
?>
程序main1.php的运行结果如图7-2所示,程序main2.php的运行结果如图7-3所示。可以看出,程序 main1.php 并没有因为引用了一个不存在的文件而终止了程序的运行,程序 main2.php因为引用了一个不存在的文件而终止了程序的运行。
7.1.3 include_once和require_once语言结构
随着程序规模的扩大,同一程序多次使用include或require语言结构时有发生,而多次引用同一个资源文件也变得不可避免,但这可能导致文件引用混乱问题。为了解决这种问题,PHP提供了另外两个语言结构 include_once 和 require_once 确保资源文件只引用一次。include_once 和require_once语言结构分别对应于include和require语言结构,使用include_once和require_once语言结构可以有效避免多次引用同一个PHP文件而引起函数或变量重复定义问题的发生。
include_once语言结构的语法格式:mixed include_once (string resource)
include_once语言结构的功能:include_once语句将一个资源文件resource载入到当前PHP程序中。若找不到资源文件resource,include_once语句返回FALSE。若找到资源文件resource,且该资源文件第一次载入,include_once语句返回整数1;若找到资源文件resource,且该资源文件已经载入,include_once语句返回TRUE。
下面的两个程序mainOnce.php和mainTwice.php演示了include_once语言结构和include语言结构的区别。
程序mainOnce.php代码如下,该程序的运行结果如图7-4所示。
<?php
$first = include_once('included.php');
$color = 'green';
$second = include_once('included.php');
var_dump($color);
echo "<br/>";
var_dump($first);
echo "<br/>";
var_dump($second);
?>
程序mainTwice.php代码如下,该程序的运行结果如图7-5所示。
<?php
$first = include('included.php');
$color = 'green';
$second = include('included.php');
var_dump($color);
echo "<br/>";
var_dump($first);
echo "<br/>";
var_dump($second);
?>
共有条评论 网友评论