资讯专栏INFORMATION COLUMN

include加载路径解析 - 你可能不知道的特性

betacat / 890人阅读

摘要:官网关于加载路径解释如下被包含文件先按参数给出的路径寻找,如果没有给出目录只有文件名时则按照指定的目录寻找。如果最后仍未找到文件则结构会发出一条警告这一点和不同,后者会发出一个致命错误。

官网关于include加载路径解释如下:

被包含文件先按参数给出的路径寻找,如果没有给出目录(只有文件名)时则按照 include_path 指定的目录寻找。如果在 include_path 下没找到该文件则 include 最后才在调用脚本文件所在的目录当前工作目录下寻找。如果最后仍未找到文件则 include 结构会发出一条警告;这一点和 require 不同,后者会发出一个致命错误。

include_path

这是一个需要在php.ini中设置的值,一般情况下我们不会轻易设置它

脚本文件所在的目录

顾名思义就是当前php文件所在的目录的路径

当前工作目录

这个值是容易混淆的,因为这个所谓的当前工作目录路径其实和文件是否被include有关系!这一点在框架中更容易被混淆、被忽略!

实例说明

文件目录结构如下:

- require
-- app
--- application.php
--- db.php
-- index.php
-- db2.php
index.php中的代码

application.php

你猜运行index.php后的显示的打印结果是什么?

你是不是认为 $config2 = include "db2.php"; 会报错?

然而结果是这样的

Array
(
    [host] => 127.0.0.1
    [username] => root
    [password] => root
)
Array
(
    [host] => 127.0.0.1
    [username] => root2
    [password] => root2
)


__FILE__:E:dongchaoprojects	estphp
equireappapplication.php
__DIR__:E:dongchaoprojects	estphp
equireapp
Working Dir:E:dongchaoprojects	estphp
equire

正如官网所述,include会尝试在当前脚本所在目录和当前工作目录查找文件是否存在。db.php所在的目录正是当前脚本所在目录,而当前工作目录则是index.php所在的目录,如果把这个看成是一个框架的目录结构,那么当前工作目录其实就是框架入口文件所在的目录。

getcwd函数可以获取到当前工作目录路径

得出结论:

为了不引起混淆,提高代码可读性,建议引入文件时使用绝对路径! 使用绝对路径还可以避免include函数多余的两次查找(从当前脚本所在目录和当前工作目录进行查找),因此使用绝对路径能提高执行效率!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/26070.html

相关文章

  • Spring Boot 参考指南(开发者工具)

    摘要:触发器文件可以手动更新,也可以使用插件进行更新。例如,要配置重新启动以始终使用触发器文件,你需要添加以下属性远程应用程序开发工具并不局限于本地开发,在远程运行应用程序时,还可以使用几个特性。 20. 开发者工具 Spring Boot包括一组额外的工具,这些工具可以使应用程序开发体验变得更加愉快,spring-boot-devtools模块可以包含在任何项目中,以提供额外的develo...

    APICloud 评论0 收藏0
  • PHP自动加载功能原理解析

    摘要:前言在开始之前,欢迎关注我自己的博客这篇文章是对自动加载功能的一个总结,内容涉及的自动加载功能的命名空间的与标准等内容。要实现第一步,第二步的功能,必须在开发时约定类名与磁盘文件的映射方法,只有这样我们才能根据类名找到它对应的磁盘文件。 前言 在开始之前,欢迎关注我自己的博客:www.leoyang90.cn 这篇文章是对PHP自动加载功能的一个总结,内容涉及PHP的自动加载功能、P...

    Imfan 评论0 收藏0
  • webpack4.0打包总结

    摘要:我们可以使用内置的为所有的依赖定义这个变量这是开发环境这是生产环境作者正儿八经的娇娇链接来源掘金著作权归作者所有。 1.webpack概念 WebPack可以看做是模块打包机:它做的事情是,分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript等),并将其打包为合适的格式以供浏览器使用。 构建就是把源代码转换成发布到线上...

    XFLY 评论0 收藏0
  • 从0到1搭建webpack2+vue2自定义模板详细教程

    摘要:安装安装完成之后,你应该可以使用了,方式如下上述命令应该自动在浏览器中打开。 前言 webpack2和vue2已经不是新鲜东西了,满大街的文章在讲解webpack和vue,但是很多内容写的不是很详细,对于很多个性化配置还是需要自己过一遍文档。Vue官方提供了多个vue-templates,基于vue-cli用官方的webpack模板居多,不过对于很多人来说,官方的webpack模板的配...

    cartoon 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<