给力星

Web Developer

重温PHP手册 – 流程控制

美团点评 2018 届校招内推开始啦!
参与内推 = 简历免筛选 + 多一次笔试 + 提前面试/提前拿 Offer
多一次机会,多一份把握,千万不要错过~
内推申请地址:https://wenjuan.meituan.com/survey/68332

break

break 可以接受一个可选的数字参数来决定跳出几重循环,默认为1。

$i = 0;
while (++$i) {
    switch ($i) {
    case 5:
        echo "At 5<br />\n";
        break 1;  /* 只退出 switch. */
    case 10:
        echo "At 10; quitting<br />\n";
        break 2;  /* 退出 switch 和 while 循环 */
    default:
        break;
    }
}

类似的,continue 接受一个可选的数字参数来决定跳过几重循环到循环结尾,默认为1。

declare

declare 结构用来设定一段代码的执行指令,目前只认识两个指令:ticks、encoding。

Tick(时钟周期)是一个在 declare 代码段中解释器每执行 N 条( ticks=N )可计时的低级语句就会发生的事件。在每个 tick 中出现的事件是由 register_tick_function() 来指定的。注意每个 tick 中可以出现多个事件。

/* 每一个 ticks 就执行一次 tick_handler */
declare(ticks=1);

// A function called on each tick event
function tick_handler()
{
    echo "tick_handler() called\n";
}

register_tick_function('tick_handler');

$a = 1;

if ($a > 0) {
    $a += 2;
    print($a);
}

return

如果在全局范围中调用,则当前脚本文件中止运行。如果当前脚本文件是被 include 的或者 require 的,则控制交回调用文件。

此外,如果当前脚本是被 include 的,则 return 的值会被当作 include 调用的返回值。

require 和 include

  • require 在出错时产生 E_COMPILE_ERROR 级别的错误,将导致脚本中止。
  • include 只产生警告(E_WARNING),脚本会继续运行。
  • require_once 语句和 require 语句完全相同,但require_once会检查该文件是否已经被包含过,如果是则不会再次包含。
  • include_once 也是只包含一次。

$_SERVER['DOCUMENT_ROOT'] 输出 Web 根目录

include $_SERVER['DOCUMENT_ROOT']."/lib/sample.lib.php";

getcwd() 获取当前工作目录,可用于临时切换工作目录

$wd_was = getcwd(); 
chdir("/path/to/included/app"); 
include("mainfile.php"); 
chdir($wd_was); 

代码中应避免直接赋予绝对地址,可动态计算绝对地址。dirname(__FILE__) 返回文件所在的目录。

define('__ROOT__', dirname(dirname(__FILE__))); 
require_once(__ROOT__.'/config.php'); 

发表评论

电子邮件地址不会被公开。