2018/03/09 每日一学PHP 之 require_once require include include_once 包含文件的区别
require_once require include include_once 方法的区别
对于包含文件来说,如果只是使用框架来说的话,应该会很少碰到,因为框架底层对于文件的引用等做了很好的封装,这也导致了我们对于这块知识理解的欠缺。
为什么要使用类似引入文件的函数?
在一个PHP函数的生命周期中(就是一个程序执行的过程,比如echo 一个字符串),可能会用到很多个文件,这些个文件不可能都写在一个文件中,这样极不好管理,也不利于维护。
也就产生了MVC框架,使得编码可以结构化,利于管理和维护。
最简单的一个例子:
单一入口:index.php + 随便一个控制器 + 随便一个视图 。
就这样一个最简单的过程,就引用了3个文件,在实际运行中,文件数远远大于了这个数。
关于引用文件来说,用到的也是这些方法。
这些函数有什么作用呢?
引入第三方库,等等..
不过现在已经使用Composer管理了,引入一次就好了。
下面主要是比较他们的区别。
1:include()和require()的区别
1:遇到错误,[引入路径出错,没有找到引用文件等]
include()引入文件时,遇到错误会提示错误并继续执行;
require()引入文件时,遇到错误时也提示错误但会终止程序的运行。
2:使用位置
require()语句一般放在脚本页面的最前面,在执行前,就先读入require()引入的文件,一旦出现错误,则立即退出程序,用于必须引入文件。、
include()语句一般在用到时才引入,所以通常是放在流程控制的处理区段中,脚本在执行到它时,才会将文件包含进来
3:使用原则
即require()是预加载机制,位置在脚本最前面,一开始就引入所有可能用到的文件;include()是即用即加载,位置灵活
2: include()、require()和include_once()、require_once()的区别
1: include_once()、require_once() 相比于 include() 、require() 区别
include()、require()执行即包含文件,不会对引入的文件进行比较判断,可能会出现重复包含的情况;
而include_once()、require_once()在包含时会先判断文件是否已经被包含, 如果已经包含过了,如果已包含,则不再包含文件,这样的引入文件方式即可以节省资源,又可避免重复定义的错误
3:ps
虽然在 include_once() 和 require_once() 可以替你检查文件是否已经包含过,但是也不能因为这样就不检查或者直接使用函数引入,这种偷懒的心理是不对的,
如果你都不知道在你的程序里面引用了文件有多少次,那么之后出了问题去排查,实有多么困难呢?
会在之后学习中,如果在遇到问题,补充此文章内容。
2018/03/09 每日一学PHP 之 require_once require include include_once 包含文件的区别的更多相关文章
- 2018/03/09 每日一个Linux命令 之 chgrp/chown
每日一个Linux命令 2018-03-09 Linux 命令 chgrp/chown chgrp [-参数] [文件或者目录] chown [-参数] [文件所有者]:[文件所属群组] [文件或者目 ...
- 2018/03/10 每日一学PHP 之 修饰符 public/private/protected
对于面向对象 修饰符的使用是我们最常用,也是很容易忽略的小细节. 对于编程来说,把握好每一个小细节,就能构造出漂亮,优雅的程序. public 使用最多的修饰符,公共方法,允许所有访问,就像一个公交车 ...
- 2018/03/08 每日一学PHP 之 常量defind 和 const区别
常量defind 和 const区别 什么是常量? 如字面理解的,在脚本执行期间不可改变的的量. 定义一个常量应该注意的事项? 1:常量默认大小写敏感,错误的大小写不会被识别为常量. 2:常量只能是标 ...
- 2018/03/31 每日一个Linux命令 之 date
date 命令主要用于查看和修改时间和时区 -- 这里主要学习基本的查看和设置时间和时区的方法. 直接显示日期 date '+%D' 效果 vagrant@hong:~$ date '+%D' 03/ ...
- 2018/03/27 每日一个Linux命令 之 cron
Cron 用于配置定时任务. -- 环境为 Ubuntu16-04 -- 先说说怎么配置一个简单的定时任务.直观的可以看到效果. 之前在网上查找资料,对Shell编程不熟悉的实在是很头疼,走了不少弯路 ...
- 2018/03/08 每日一个Linux命令 之 chattr/lsattr
每日一个Linux命令 2018-03-08 Linux 命令 chattr/lsattr chattr [-参数] [+/-属性] [文件或者目录] 经过今天没有对铃,粥熬糊了,我就知道...... ...
- 2018/03/07 每日一个Linux命令 之 cat
每日一个Linux命令 2018-03-07 Linux 命令 cat cat [-参数] fileName 在之前的Linux使用中 cat 命令一直作为文本输出指令来使用,很少可以深入学习的该命令 ...
- 2018/03/11 每日一个Linux命令 之 top
每日一个Linux命令 之 top 今天在公司测试服务器上跑了一个我写的功能[本地测试过的],但是不知道怎么跑了个无限死循环出来,一个文件的体积在不停的变大,如果不管的话这能行? 上去一看,PHP ...
- 2018/03/10 每日一个Linux命令 之 find
每日一个Linux命令 2018-03-10 Linux 命令 find find [查找目录] [定义条件] 今天很累了,本来不想写了,但想到自己订的学习计划必须坚持下去,每天完成. fin ...
随机推荐
- GreenPlum数据加载
1. copy命令 对于数据加载,GreenPlum数据库提供copy工具,copy工具源于PostgreSQL数据库,copy命令支持文件与表之间的数据加载和表对文件的数据卸载.使用copy命令进行 ...
- Window关闭端口的方法(445/135/137/138/139/3389等)
为防止漏洞被利用,需要采取必要措施,关闭以上端口,以保证系统更加安全. window2003 关闭135端口的方法 要关闭此端口,只需停止DCOM接口服务即达到目的.下面是详细操作过程. 1.打开“组 ...
- GitLab 使用
命令行界面的基本操作如下,Web界面的操作参考:https://www.cnblogs.com/pzk7788/p/10291378.html [root@localhost ~]$ gitlab-c ...
- ie11中报SCRIPT1003: 缺少 ':'的错误?
兼容性?IE的兼容性…… 由于“叶叶综合征发作”,导致有段时间都在自我否定中,故而引发一系列的不美好.幸好,自己还有超强的恢复能力,一切都在往好的方向发展吧. 直接进入 “可怕的IE兼容”主题: 第一 ...
- vue回到顶部的事件
其实只需要一句代码就好了: document.documentElement.scrollTop = document.body.scrollTop = ;
- JSP基本用法(一)运行机制和语法
一.概述 JSP是一种建立在Servlet规范功能上的动态网页技术,在网页文件中嵌入Java代码和JSP标记用于产生动态内容. 本文简单介绍JSP的运行机制和JSP的语法. 二.JSP的运行机制 JS ...
- 【技术分享会】 iOS开发简述
前言 Objective-C(简称OC)也是面向对象的编程语言,运用的许多面向对象的编程思想和C# . Java .C++等变成语言都是相通的: 本次技术讲座主要讲一些设计模式.设计思想等计算机语言通 ...
- ipcs命令以及oracle内存段
今天是2014-01-06,在没过春节之前重新复习一下2013年学习的内容,关于oracle内存段在我之前写的blog中有详细操作.在此记录一下ipcs命令的用法. http://blog.csdn. ...
- jQuery的回调管理机制(三)
jQuery.when()方法是jQuery内部使用回调机制的范例. // 参数为多个方法,这些方法全部执行完成之后执行回调 when: function( subordinate /* , ..., ...
- JavaAgent 应用(spring-loaded 热部署)
上一篇文章简单介绍了 javaagent ,想了解的可以移步 “JavaAgent” 本文重点说一下,JavaAgent 能给我们带来什么? 自己实现一个 JavaAgent xxxxxx 基于 Ja ...