PHP require_once()

来源:百度知道 编辑:UC知道 时间:2024/06/25 04:25:04
问一个低级的问题:
我的网站目录是这样的:
wwwroot目录下有:
--class目录
--test目录

class目录下有:
--class_database.php
--class_product.php

test目录下有:
--test.php

备注:
1.class目录下为类文件,class_database.php是数据库基本操作类,class_product.php是产品类
2.class_product.php产品类肯定需要操作数据库,所以它的第一行就是 require_once("class_database.php");

3.test目录下的test.php是测试文件,测试产品类,所以它的第一行是:require_once("../class/class_product.php")

4.问题就来了:请大家注意,我在test.php文件包含产品类文件(class_product.php)时,包含的路径是../class/class_product.php,而产品类(class_product.php)在包含数据库文件时,路径直接就是class_database.php.
那么这是否就意味着,class_product.php文件在被test.php文件包含之前,就已经运行了?

不知道大家是否能明白我的意思.我是ASP转过来的,asp中的inlucde和require好像是只包含,不运行,也就是说,如果这些代码是用asp来写的话,class_product.php文件的第一行就应该写:require_once("../class/class_database.php"),尽管 数据库类文件 和 产品类文件 在同一目录.

注意:运行完全正确,这是否就意味着,PHP在使用require_once()函数包含一个文件之前,会运行这个文件?
另外请详细说说include,include_once,require,require_once的根

1、在php中include和require内的内容是否运行,要看你在所包含的文件里面的代码。如果你包含的是函数,那么当然要等到你调用才会运行,如果你包含的是语句,那么相当于是把这段语句加入到当前的位置
2、include和require的区别是,一个会出现应用级别的报警,include文件不存在,不会引起报错(但是有报警),而require会引起报错,你试一下引用不存在的文件就知道了
3、增加once,那么就是说只包含一次,如果该文件已经被包含了,那么就不会再次包含,你可以设计一个包含文件,直接让其echo数据,然后运行看看,比如
<?php
echo $f
?>
这是一个文件
然后你再另外一个页面使用:
<?php
$f=1
include ("xxx.php")
$f=2
include ("xxx.php")
?>
来看
自己动动手

require_once("../class/class_product.php")的意思是说test.php包的文件在test.php的上一级目录的class文件夹中,当中的..就是表示上级目录

而class_product.php在包含class_database.php时直接用require_once("class_database.php")就可以,因为他们都在同一目录(class目录)下

如果class_product.php要包含test.php文件时就用require_once("../test/test.php"),因为test.php在class_product.php的上级目录(wwwroot)的test文件夹中

说的有点乱,不止楼主是否看明白

楼主的问题不复杂,你是问,被包含的文件是否一包含进来就运行。多级包含时是否也这样。。

回答是肯定的,在PHP中,被包含进来的文件。等效于当前文件,会按你代码的书写顺序运行。不管多少级