【PHP】04 基础 P3

文件包含

文件包含:在一个PHP脚本中,去将另外一个文件(PHP)包含进来,去合作完成一件事情。

文件包含的作用

文件包含的意义:

1 要么使用被包含文件中的内容,实现代码的共享(重用):向上包含(索要)

向上包含:在当前脚本要用某个代码之前包含别的文件

 

2 要么自己有东西可以给别的文件使用,实现代码的共享(重用):向下包含(给予)

向下包含:在自己有某个东西的时候,需要别的脚本来显示(自己代码写完之后包含其他文件)

 

最大的作用:分工协作,每个脚本做的事情不一样,因此可以使用协作方式,让多个脚本共同完成一件事情。

文件包含四种形式

PHP中文件的包含有四种形式(两种大形式)

Include:包含文件

Include_once:系统会自动判断文件包含过程中,是否已经包含过(一个文件最多被包含一次)

Require:与include相同

Require_once:以include_once相同

包含基本语法

Include ‘文件名字’;

Include(‘文件名字’); //文件名字:路径问题

以上方式:是先包含文件,后使用文件中的内容(向上包含)

 

向下包含:先准备内容,然后包含另外的文件,在另外的文件中,使用当前的内容

 

 

文件加载原理

PHP代码的执行流程

1、读取代码文件(PHP程序)

2、编译:将PHP代码转换成字节码(生成opcode)

3、zendengine引擎来解析opcode,按照字节码去进行逻辑运算

4、转换成对应的HTML代码

文件加载原理:

1、在文件加载(include或者require)的时候,系统会自动的将被包含文件中的代码相当于嵌入到当前文件中

2、加载位置:在哪加载,对应的文件中的代码嵌入的位置就是对应的include位置

3、在PHP中被包含的文件是单独进行编译的

PHP文件在编译的过程中如果出现了语法错误,那么会失败(不会执行);但是如果被包含文件有错误的时候,系统会在执行到包含include这条语句的时候才会报错。

 

Includerequire区别

Include和include_once的区别:

 

Include系统会碰到一次,执行一次;如果对统一个文件进行多次加载,那么系统会执行多次

 

 

 

Include_once:系统碰到多次,也只会执行一次。

 

 

Require和include的区别:本质都是包含文件,唯一的区别在于包含不到文件的时候,报错的形式不一样

Include的错误级别比较轻:不会阻止代码执行

 

 

 

 

 

Require要求较高:如果包含出错代码不再执行(require后面的代码)

 

 

 

 

文件加载路径

文件在加载的时候需要指定文件路径才能保证PHP正确的找到对应的文件。

文件的加载路径包含两大类:

1、 绝对路径

从磁盘的根目录开始(本地绝对路径)

Windows:盘符C:/路径/PHP文件

Linux:/路径/PHP文件

从网站根目录开始(网络绝对路径)

/ :相对于网站主机名字对应的路径

Localhost/index.php -> E:/server/apache/htdocs/index.php

 

2、相对路径:从当前文件所在目录开始的路径

.或./ :表示当前文件夹

../ :上级目录(当前文件夹的上一层文件夹)

绝对路径和相对路径的加载区别

1 绝对路径相对效率偏低,但是相对安全(路径不会出问题)

2 相对路径相对效率高些,但是容易出错(相对路径会发生改变)

 

函数

函数的基本概念

函数:function,是一种语法结构,将实现某一个功能的代码块(多行代码)封装到一个结构中,从而实现代码的重复利用(复用)。

函数定义语法

函数有几个对应的关键点:function关键字、函数名、参数(形参和实参)、函数体和返回值

基本语法如下:

function 函数名([参数]){

//函数体

//返回值:return 结果;

}

函数是在代码执行阶段,碰到函数名字的时候才会调用,不是在编译阶段。

函数的调用特点:只要系统在内存中能够找到对应的函数,就可以执行(函数的调用可以在函数定义之前)

函数执行的内存分析:

1、读取代码进入到代码段(编译:将代码变成字节码存储到内存)。此时function已经在内存里

2、根据代码逐行执行

以上原因:编译和执行是分开的(先编译后执行)

 

 

 

命名规范:由字母、数字和下划线组成,但是不能以数字开头

函数作为一种常用的结构,一般遵循以下规则:函数通常名字代表着函数的功能,而有些功能会比较复杂,可能一个单词不足以表达,需要多个组合。

1、驼峰法:除了左边第一个单词外,后面所有的单词首字母都大写:showParentInfo()

2、下划线法:单词之间通过下划线连接,单词都是小写:show_parent_info()

函数名字:在一个脚本周期中,不允许出现同名函数(通常在一个系统开发中都不会使用同名函数)

函数的参数分为两种:形参和实参

形参

形参:形式参数,不具有实际意义的参数,是在函数定义时使用的参数

实参

实参:实际参数,具有实际数据意义的参数,是在函数调用时使用的参数

形参是实参的载体:

实参在调用时通常是需要传入到函数内部参与计算(运算),那么需要在函数内部去找到实际数据所在的位置才能找到数据本身:

需要实际调用的时候,将数据以实参的形式传递给形参:给形参赋值,从而使得函数内部可以用到外部数据。

默认值

默认值:default value,指的是形参的默认值,在函数定义的时候,就给形参进行一个初始赋值:如果实际调用传入的参数(实参)没有提供,那么形参就会使用定义时的值来进入函数内部参与运算。

通常默认值是用在一些,一定会有某个数据参与,但是可能通常是某个我们知道的值。

 

引用传递

实参在调用时会将值赋值给形参,那么实际上使用的方式就是一种简单的值传递:将实参(如果是变量或者常量或者其他表达式)的结果(值)取出来赋值给形参:形参与外部实际传入的参数本身没有任何关联关系:只是结果一样。

有的时候,希望在函数内部拿到的外部数据,能够在函数内部改变,那么就需要明确告知函数(定义时),函数才会在调用的时候去主动获取外部数据的内存地址。以上这种定义形式参数的方式叫作引用传值。

基本定义语法:

function 函数名(形参1,&形参2){

//函数体

}

在调用的时候,必须给引用传值的参数位置传入实际参数,而且参数本身必须是变量。(变量才有指向的数据的内存地址)

 

posted @ 2020-09-20 10:41  emdzz  阅读(155)  评论(0)    收藏  举报