php基本语法实现的原理

前言

了解基本语法前,需要先了解下php代码的编译与执行,可以来我这篇文章看下、
https://blog.csdn.net/onlymayao/article/details/104875885

break语法

对于下面一段代码

while(1) {
    break;
}

得到AST
break抽象语法树
得到栈、符号表和常量
break 栈、符号表和常量
得到指令集
break指令集

include语法

对于下面一段代码

include '1.php';
echo 2;

得到AST
include抽象语法树
得到栈、符号表和常量
include的栈、符号表和常量
得到指令集
include指令集

条件判断语法

对于下面一段php代码

$a = "php7";
if($a == "php5") {
    echo "PHP5 is good"."\n";
} elseif($a == "php7") {
    echo "PHP7 is better"."\n";
} else {
    echo "Hoho PHP is the best language!"."\n";
}

得到AST
条件判断抽象语法树
得到栈、符号表和常量
条件判断语法的栈、符号表和常量
得到指令集
条件判断语法指令集
在这里插入图片描述

foreach语法

对于下面一段php代码

$a = [1, 2];
foreach($a as $k=>$v) {
    echo $v;
}

得到AST
在这里插入图片描述
得到栈、符号表和常量
在这里插入图片描述
得到指令集
在这里插入图片描述

异常处理

对于下面一段php代码

try {
    undefine();
}catch(Error $e) {
    echo 1;
}

得到AST
在这里插入图片描述
得到栈、符号表和常量
在这里插入图片描述
得到指令集
在这里插入图片描述

涉及到的面试题

1:php都有哪些文件包含的方式
答:include、include_once、require、require_once

2:include和require的区别

  1. 加载失败的处理方式不同include在引入不存文件时产生一个警告且脚本还会继续执行,require则会导致一个致命性错误且脚本停止执行。
  2. include()是有条件包含函数,而 require()则是无条件包含函数
   if(FALSE){
   include 'file.php'; //file.php不会被引入
   }
   if(FALSE){
   require 'file.php'; //file.php将会被引入
  1. 文件引用方式,include有返回值,而require没有
	$retVal= include(’file.php’);
	if(!empty($retVal)){
	echo "文件包含成功";
	}else{
	echo "文件包含失败";
	}
  1. include()执行时需要引用的文件每次都要进行读取和评估,require()执行时需要引用的文件只处理一次(实际上执行时需要引用的文件内容替换了require()语句)
  2. require通常使用方法,这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。
  3. include通常使用方法,这个函数一般是放在流程控制的处理部分中。PHP 程序网页在读到 include 的文件时,才将它读进来。这种方式,可以把程序执行时的流程简单化
  4. 可以看出若有包含这些指令之一的代码和可能执行多次的代码,则使用require()效率比较高,若每次执行代码时相读取不同的文件或者有通过一组文件叠代的循环,就使用include(),

3:include和include_once以及require和require_once的区别
答:include_once (require_once)语句在脚本执行期间包含并运行指定文件。此行为和 include (require)语句类似,区别是如果该文件中的代码已经被包含了,则不会再次包含,只会包含一次。include_once(require_once)需要查询一遍已加载的文件列表, 确认是否存在, 然后再加载。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值