PHP中include/require的用法与区别

1497字
4分钟阅读
2018-11-27 18:13
技术笔记

一、PHP中的文件包含

在PHP中,文件的引入是非常基础的功能。是代码复用和模块化开发的前提。尽管PSR-4规范大幅简化了类加载流程,但开发者还是要熟悉底层引入方法的使用。

二、基本语法和示例

includerequire 都是PHP中将已有文件引入到当前文件中的语法。用法一致,直接传入需要引入的文件。

1. include示例

本例展示的是phpcs中的引入代码。

//include 
$config = include 'PhpCsFixer.php';  

return $config->setFinder(PhpCsFixer\Finder::create()  
    ->exclude('vendor')  
    ->in(__DIR__.'\src')  
    ->in(__DIR__.'\tests')  
    );

2. require示例

本例使用的是Laravel中index.php中引入自动加载和启动文件的代码。

//require
require __DIR__ . '/../vendor/autoload.php';  

$app = require_once __DIR__ . '/../bootstrap/app.php';

三、核心区别详解

includerequire 的区别在于错误处理机制。
当引入的文件不存在时:

  • include 只显示警告信息,后续代码会继续执行。
  • require则会抛出一个致命异常,停止执行代码。

根据名字可以加深记忆,require是“需要”,必须的。include是“包含”,可有可无的。

四、include_oncerequire_once

如果包含后缀once则表示要引入的文件只需要引入一次,如果引入过则不会再次引入,避免多次引入浪费资源。

五、返回值处理技巧

  1. 如果被包含的文件包含return,则返回值为return内容。
//config.php
<?php  

return [  
    'a' => 'b'  
];

//index.php
$config = include 'config.php';  
var_dump($config);   //输出数组array(1) { ["a"]=> string(1) "b" }
exit;
  1. 如果被包含文件不包含return,则直接返回1
//config.php
<?php  

$a = '123234';

//index.php
<?php  

$config = include 'config.php';  
var_dump($config);   //输出 int(1)
exit;
  1. PHP中的引入是包含即执行。所以在被包含的文件中echoexit等都会立即执行。
//config.php
<?php  

echo 'debug';  
exit;

//index.php
<?php  

$config = include 'config.php';   //输出debug,后续不再执行
var_dump($config);  
exit;

六、使用场景和最佳实践

  • 配置文件、类定义:requirerequire_once。引入失败即报错。
  • 可选模版、视图文件:include。可重复引入组件。
  • 函数库:require_once

七、现代文件引入

在现代PHP开发中,Composer已经成为文件引入的主流方案。通过配置autoload中的files字段,可指定在应用启动前强制加载的文件。如:

"autoload": {  
    "psr-4": {  
        "App\\": "app/",  
        "Database\\Factories\\": "database/factories/",  
        "Database\\Seeders\\": "database/seeders/"  
    },  
    "files": [  
        "bootstrap/helpers.php"  
    ]  
},

发表评论

您的邮箱地址不会被公开。必填项已用*标注

评论列表

0 条评论

暂无评论

成为第一个评论者吧!