1.9PHP语言的表达式(Expression)

在 PHP 语言中,几乎所写的任何东西都是表达式。

1.declare语言结构

declare 语言结构用来为一段代码块设定执行指令(directive)。

目前只支持三个指令(directive):ticks 指令、encoding 指令、strict_types 指令。

代码块中的语句(statement)将被怎样执行以及执行中有什么副作用取决于设定的指令(directive)。

//只影响花括号内的代码。
declare (directive) {
    //statement;
}

//影响跟在declare语句后的所有代码。
declare (directive);
//statement;

1.1ticks指令

一个 tick 是一个在 declare 代码块中语法分析器每执行 N 条可计时(tickable)的低级语句时就会发生的事件。N 的值是在 directive 部分用 ticks=N 来指定的。

在每个 tick 中出现的事件是由 register_tick_function() 来指定的。每个 tick 中可以出现多个事件。

declare(ticks=1);
statement;
//示例
declare(ticks=1);

//每次tick事件都会调用该函数
function tick_handler()
{
    echo "tick_handler() called\n";
}

//引起tick事件
register_tick_function('tick_handler'); 

//引起tick事件
$a = 1; 

if ($a > 0) {
    //引起tick事件
    $a += 2;
    //引起tick事件
    print($a);
}

1.2encoding指令

可以使用 encoding 指令来对每段脚本指定其编码方式。

declare(encoding='ISO-8859-1');
//statement;

1.3strict_types指令

具体见严格类型模式。

declare(strict_types=1);

2.require表达式

require 与 include 的区别在于:require 在出错时会产生 E_COMPILE_ERROR 级别的错误,并中止脚本的执行。而 include 在出错时只产生 E_WARNING 级别的错误,脚本会继续执行。

3.include表达式

include 表达式用于引入被调用文件到调用文件。

include 表达式查找被调用的文件,首先会按照给出的绝对或相对文件路径查找。如果没有给出目录(只有文件名),则按照 include_path 中指定的目录查找。如果在 include_path 中指定的目录下没有找到被调用文件,则会在调用文件所在的目录和当前工作目录下查找。如果最后仍未找到被调用文件,则会抛出 E_WARNING

如果按照给出的绝对或相对文件路径查找到了被调用文件,则会停止到 include_path 中指定的目录下查找,以此类推。

被调用文件中所包含的所有代码将表现得如同它们就是在该调用文件内部定义的一样,被调用文件所包含的代码将继承发生 include 语句的行的变量作用域。但是,被调用文件中定义的所有的类和函数在调用文件中都具有全局作用域。

include 表达式如果引入被调用文件失败,则返回 false 并抛出 E_WARNING。如果引入被调用文件成功,则返回 1,但如果在被调用文件中另外 return 给出了返回值,则会覆盖 1。对于引入远程服务器的被调用文件,除非有有效的 <?php 和 ?> 标记,否则不可另外返回值。

因为 include 是语言结构而不是函数,其后没有必要用圆括号将表达式括起来,也不推荐这样用。

//引入本地文件
//绝对或相对文件路径
include './home/vars.php';
//只有文件名
include 'vars.php';
//引入远程服务器文件
include 'http://www.example.com/file.php?foo=1&bar=2';
//示例
//vars.php文件
<?php

$color = 'green';
$fruit = 'apple';

?>

//test.php文件
<?php

echo "A $color $fruit";  //输出:A

include 'vars.php';

echo "A $color $fruit";  //输出:A green apple

?>

4.require_once表达式

require_oncerequire 的区别参考 include_onceinclude 的区别。

5.include_once表达式

include_onceinclude 的区别在于:如果调用文件中的 include_once 引入被调用文件中的代码已经被引入过,则不会再次被引入,从而避免函数重定义,变量重新赋值等问题,且 include_once 引入被调用文件成功时会返回 true

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/php/phplang/28879.html

(0)
上一篇 2023年6月8日
下一篇 2023年6月10日

相关推荐

  • 1.7PHP语言的常量(Constant)

    1.常量声明 1.1define()函数声明方式 使用 define() 函数声明常量,值可以为任意表达式。 1.2const关键字声明方式 使用 const 关键字声明常量,值只可以为 标量类型(int, float, bool, string)表达式 或者 包含元素只为标量类型(int, flo…

    PHP语言教程 2023年6月7日
    0250
  • 2.5PHP类型之接口(Interface)

    1.接口声明 接口体中可以包含静态方法、实例方法、构造函数(不推荐)、析构函数(不推荐)、魔术方法、类常量。 接口中的所有方法只可以定义方法签名,不可以定义方法的具体实现。 接口可以继承,但不可以实例化。 注意:接口中的所有方法与抽象方法的语法不同,接口中的所有方法不可以添加 abstract 关键字。 注意:接口中的…

    PHP语言教程 2023年7月5日
    0240
  • 2.10PHP语言的特性(Attribute)类

    1.特性(Attribute)类声明 声明一个特性类,首先从全局命名空间 use 导入 #[Attribute] 特性,然后在普通类声明上添加 #[Attribute] 特性以表示此类为特性类。 特性目标 描述 Attribute::TARGET_ALL 不限制用于具体哪一个。 Attribute::TARGET_CL…

    PHP语言教程 2023年7月10日
    0210

发表回复

登录后才能评论