include
语句包含并运行指定文件。
- 在文件被包含时,其中所包含的代码继承了include所在行的变量范围
- 调用文件在该行处可用的任意变量在被调用文件中也都可以使用
- 被包含文件先按参数给出的路径寻找,如果没有给出目录(只有文件名)时则按照 include_path 指定的目录寻找。
//__FILE__ 获取本文件路径
//dirname() 获取文件路径的目录
<?php
$a = $b =5;
include dirname(__FILE__)."\\5.php";;
a();
?>
<?php
function a(){
echo "good";
}
$c = $a +$b;
echo $c;//10
?>
<?php
$a = $b =5;
include dirname(__FILE__)."\\5.php";
include dirname(__FILE__)."\\5.php";//报错,然后后面的都没有执行
a();
?>
include_once
在脚本执行期间包含并运行指定文件
与include类似,唯一区别是如果该文件中已经被包含过,则不会再次包含。
<?php
$a = $b =5;
include_once dirname(__FILE__)."\\5.php";
include_once dirname(__FILE__)."\\5.php";//不会运行
a();
?>
require
require与include几乎完全一样,但处理失败时不同
- require会产生致命错误,阻止代码继续执行
- include只产生警告,代码会继续执行
<?php
$a = $b =5;
require dirname(__FILE__)."\\5.php";
require dirname(__FILE__)."\\5.php";//报错,然后后面的都没有执行
a();
?>
require_once
require_once与require完全相同,唯一区别是PHP会检查该文件是否已经被包含过,若包含则不会再次包含
<?php
$a = $b =5;
require_once dirname(__FILE__)."\\5.php";
require_once dirname(__FILE__)."\\5.php";
a();
?>
goto
goto 操作符可以用来跳转到程序中的另一位置。该目标位置可以用目标名称加上冒号来标记,而跳转指令是 goto 之后接上目标位置的标记。
- PHP 中的 goto 有一定限制,目标位置只能位于同一个文件和作用域,也就是说无法跳出一个函数或类方法,也无法跳入到另一个函数。也无法跳入到任何循环或者 switch 结构中。
- 可以跳出循环或者 switch,通常的用法是用 goto 代替多层的 break。
declare
declare 结构用来设定一段代码的执行指令。
局部作用域的declare:
<?php
declare(ticks=1) {
//需要执行的脚本
}
?>
全局declare:
<?php
declare(ticks=1);
//需要执行的脚本
?>
register_tick_function()
注册一个函数以在每个刻度上执行
declare(ticks=1) 和 register_tick_function() 通常配合使用,可以实现控制某段代码执行时间
register_tick_function ( callable $function ,[ mixed $arg], [ mixed $... ] ) : bool
$function —— 函数名称为字符串或由对象和方法组成的数组。
成功时返回 true, 或者在失败时返回 false。
register_tick_function('函数名', 函数的参数·····);
unregister_tick_function()
取消注册要在每个刻度上执行的功能
unregister_tick_function ( string $function_name ) : void
function_name —— 函数名称,以字符串形式。
取消注册以function_name命名的函数,以便在调用滴答时不再执行。
使用
-
Tick(时钟周期)是一个在 declare 代码段中解释器每执行 N 条可计时的低级语句就会发生的事件。N 的值是在 declare 中的 directive 部分用 ticks=N 来指定的。
-
在每个 tick 中出现的事件是由 register_tick_function() 来指定的。
Zend引擎每执行1条低级语句就去执行一次 register_tick_function() 注册的函数。
可以粗略的理解为每执行一句php代码(例如:$num=1;)就去执行下已经注册的tick函数。
<?php
declare(ticks=1){
//获取函数开始的时间
$startTime = time();
function well($startTime){
//函数执行的时间
$curTime = time();
//若执行时间从开始到现在,大于5秒节执行if语句
$times = $curTime - $startTime;
if(($times) > 5)
{
// die阻止php运行,因此结束运行
echo 'game over<br>';
die("{$times}<br>{$curTime}");
}
}
//使用 register_tick_function()注册函数,传递参数函数 —— 开始时间$startTime
register_tick_function('well',$startTime);
//while死循环
while (true) {
//每次执行,都会延迟一秒
sleep(1);
//获取当前时间
$now_time = time();
//输出当前时间
echo "{$now_time}<br>";
}
};
?>
运行结果:
1587217881
1587217882
1587217883
1587217884
1587217885
game over
6
1587217886
从结果可以看出,当执行一次简单的语句就会触发 register_tick_function()注册函数
while循环每次输出,都经历了一秒,当经历5秒,执行die结束php脚本的执行
结束语
这些基础,已经可以写出一些优秀的作品,还是 类与对象 的一大块,需要继续的探索,这些都是个人学习记录的笔记,虽然可能不是很全面,希望对在读的你有所帮助!!!
网友评论