在 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_once
与 require
的区别参考 include_once
与 include
的区别。
5.include_once表达式
include_once
与 include
的区别在于:如果调用文件中的 include_once
引入被调用文件中的代码已经被引入过,则不会再次被引入,从而避免函数重定义,变量重新赋值等问题,且 include_once
引入被调用文件成功时会返回 true
。
原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/php/phplang/28879.html