现在的位置: 首页 > 编程语言 > 正文

php中require_once的使用方法有哪些?require有什么区别

2019年12月30日 编程语言 ⁄ 共 1809字 ⁄ 字号 评论关闭

  require_once 语句和 require 语句完全相同,唯一区别是 PHP 会检查该文件是否已经被包含过,如果是则不会再次包含。

  参见 include_once 的文档来理解 _once 的含义,并理解与没有 _once 时候有什么不同。

  有一个文件a.php,里面有一个变量$var=1;我在b.php 中用require_once()函数引用了a.php文件,然后我在c.php 中用require_once()引用了b.php文件,在c.php中有一个函数 需要引用a.php中的变量$var. 但却访问不了 变量的值为空

  如果我想访问变量$var该怎么做。

  require_once() 为了避免重复加载文件。 意为:加载文件一次

  require_once() 语句在脚本执行期间包括并运行指定文件。此行为和 require() 语句类似,唯一区别是如果该文件中的代码已经被包括了,则不会再次包括。

  一般都用在包含文件的时候,比如你写了一个类文件a.php,这个文件主要是定义类,代码可能如下:

  class p

  {

  public $a;

  function make(}

  {

  echo $a;

  }

  }

  这个时候你在文件b.php中要使用到该类,就可以再b.php开头加上,require_once(a.php);来加载这个a.php,就相当于把a.php的文件的代码复制到了b.php中。

  类似的方法还有requeire(),include(),include_once()其中带_once字样的方法都是声明只加载一次,因为你require_once()的别文件中可能已经require_once(a.php)了,如果再加载就造成重复加载,代码量会增加造成解析减慢。

  我帮你测试过了,没有问题,require_once就行

  a.php:

  $a=123;

  ?>

  b.php:

  require_once("a.php");

  ?>

  c.php:

  require_once("b.php");

  echo $a;

  ?>

  require_once 与require的区别:

  require_once 只会加载同一个文件一次,require会加载多次。

  相信和我一样的小白还是有些疑惑吧。于是我们猜想:如果456.php引入过123.php,现在文件test_require.php引入了“456.php”与“123.php”。如果是使用require方法,那么在test_require.php中,123.php将被引入2次,而使用require_once方法123.php被引入一次。那么我们做实验吧!

  一、require方法

  123.php的内容如下:

  1

  2

  echo "123\n";

  456.php内容如下:

  require("123.php");

  echo "456\n";

  test_require.php的内容如下:

  require("123.php");

  require("456.php");

  运行test_require.php。

  二、require_once方法

  123.php内容不变。456.php和test_require.php更改require_once方法。内容如下:

  //456.php

  require_once "123.php";

  echo "456\n";

  //test_require.php

  require_once "123.php";

  require_once "456.php";

  运行test_require.php,结果如下:

  三、混用出错

  如果,在456.php中使用require方法,而在require_once方法,那么require_once将会失效。三个文件代码如下:

  //123.php

  echo "123\n";

  //456.php

  require "123.php";

  echo "456\n";

  //test_require.php

  require_once "123.php";

  require_once "456.php";

  运行结果如下:

  总结:如我们猜想的那样,require_once方法,不会多次加载同一个文件。但是和require混用会使require_once方法失效。

抱歉!评论已关闭.