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 包含文件的区别的更多相关文章

  1. 2018/03/09 每日一个Linux命令 之 chgrp/chown

    每日一个Linux命令 2018-03-09 Linux 命令 chgrp/chown chgrp [-参数] [文件或者目录] chown [-参数] [文件所有者]:[文件所属群组] [文件或者目 ...

  2. 2018/03/10 每日一学PHP 之 修饰符 public/private/protected

    对于面向对象 修饰符的使用是我们最常用,也是很容易忽略的小细节. 对于编程来说,把握好每一个小细节,就能构造出漂亮,优雅的程序. public 使用最多的修饰符,公共方法,允许所有访问,就像一个公交车 ...

  3. 2018/03/08 每日一学PHP 之 常量defind 和 const区别

    常量defind 和 const区别 什么是常量? 如字面理解的,在脚本执行期间不可改变的的量. 定义一个常量应该注意的事项? 1:常量默认大小写敏感,错误的大小写不会被识别为常量. 2:常量只能是标 ...

  4. 2018/03/31 每日一个Linux命令 之 date

    date 命令主要用于查看和修改时间和时区 -- 这里主要学习基本的查看和设置时间和时区的方法. 直接显示日期 date '+%D' 效果 vagrant@hong:~$ date '+%D' 03/ ...

  5. 2018/03/27 每日一个Linux命令 之 cron

    Cron 用于配置定时任务. -- 环境为 Ubuntu16-04 -- 先说说怎么配置一个简单的定时任务.直观的可以看到效果. 之前在网上查找资料,对Shell编程不熟悉的实在是很头疼,走了不少弯路 ...

  6. 2018/03/08 每日一个Linux命令 之 chattr/lsattr

    每日一个Linux命令 2018-03-08 Linux 命令 chattr/lsattr chattr [-参数] [+/-属性] [文件或者目录] 经过今天没有对铃,粥熬糊了,我就知道...... ...

  7. 2018/03/07 每日一个Linux命令 之 cat

    每日一个Linux命令 2018-03-07 Linux 命令 cat cat [-参数] fileName 在之前的Linux使用中 cat 命令一直作为文本输出指令来使用,很少可以深入学习的该命令 ...

  8. 2018/03/11 每日一个Linux命令 之 top

    每日一个Linux命令 之 top   今天在公司测试服务器上跑了一个我写的功能[本地测试过的],但是不知道怎么跑了个无限死循环出来,一个文件的体积在不停的变大,如果不管的话这能行? 上去一看,PHP ...

  9. 2018/03/10 每日一个Linux命令 之 find

    每日一个Linux命令 2018-03-10 Linux 命令 find find [查找目录] [定义条件]   今天很累了,本来不想写了,但想到自己订的学习计划必须坚持下去,每天完成.   fin ...

随机推荐

  1. Top 20 NuGet packages for captcha

    Top 20 NuGet packages for captcha CaptchaMvc.Mvc4 CaptchaMvc will implement your web MVC application ...

  2. PHP 使用 MongoDB

    PHP 想要往 MongoDB 里增删查改数据,需要先安装 mongodb 或 mongo 扩展模块,一般两个都装上: cd /usr/local/src/ wget https://pecl.php ...

  3. List 集合的N层遍历

    package com.j1.cms.model; import java.io.Serializable; import java.util.List; /** * Created by wangc ...

  4. python--Anaconda学习笔记

    http://study.163.com/course/courseLearn.htm?courseId=1003664056#/learn/video?lessonId=1048567028& ...

  5. 基于Cocos2d-x学习OpenGL ES 2.0系列——编写自己的shader(2)

    在上篇文章中,我给大家介绍了如何在Cocos2d-x里面绘制一个三角形,当时我们使用的是Cocos2d-x引擎自带的shader和一些辅助函数.在本文中,我将演示一下如何编写自己的shader,同时, ...

  6. ajax和promise的结合使用

    在需要依赖完成的ajax请求可使用promise保证执行顺序 在第一个请求正确返回后再发送第二个请求 /* 定义一个使用promise的ajax请求,这里依赖jquery 参数中请求url为必填参数 ...

  7. 《C++ Primer Plus》16.4 泛型编程 学习笔记

    STL是一种泛型编程(generic programming).面向对象编程关注的是编成的数据方面,而泛型编程关注的是算法.它们之间的共同点是抽象和创建可重用代码,单他们的理念决然不同.泛型编程旨在编 ...

  8. iOS - 转场动画

    苹果在 iOS7 定制了 ViewController 的切换效果 一 在iOS5和iOS6之前,ViewController的切换主要有4种 Push/Pop,NavigationViewCotnr ...

  9. No.2 PyQt学习

    新增加了状态栏.菜单栏和工具栏,界面如下: 代码如下: # -*- coding: utf-8 -*- import sys from PyQt4 import QtGui, QtCore class ...

  10. Word 2010 插入其他文件的方法

    1. 2.