以下PHP脚本的执行流程是啥? [复制]

Posted

技术标签:

【中文标题】以下PHP脚本的执行流程是啥? [复制]【英文标题】:What's the execution flow of below PHP scripts? [duplicate]以下PHP脚本的执行流程是什么? [复制] 【发布时间】:2014-10-24 07:15:23 【问题描述】:

我有一个 test.php

<?php

include "MyString.php";

print ",";
print strlen("Hello world!");  

还有一个 MyString.php:

<?php

namespace MyFramework\String;

function strlen($str)

    return \strlen($str)*2; // return double the string length

print strlen("Hello world!");

test.php 的输出是 24,12,但是输出是怎么产生的呢? test.php的执行流程是什么?

还有一个反斜杠:

namespace MyFramework\String;

function strlen($str)

    return \strlen($str)*2; // return double the string length

这个'\'是否意味着使用命名空间?

【问题讨论】:

我不知道为什么有人给这个问题一个减号,但这是一个关于 PHP 命名空间的问题,这是 PHP 5.3 之后的一个新特性。如果你觉得这个问题很无聊或者没用,请告诉我你的观点 我没有投反对票,但仅供参考,PHP5.3 已经过时并且已经过时了。 【参考方案1】:

test.php 的执行包括MyString.php 并在MyString.php 中执行主级代码

MyString.php 打印 strlen 在其自己的命名空间中 的结果(即从全局命名空间调用 MyFramework\String\strlen() 而不是标准的 PHP strlen() 函数)输出24 (12*2).... 然后MyString.php 终止并将控制权返回给test.php

test.php 接下来打印一个逗号,然后打印使用标准 PHP strlen 的 strlen() 的结果,因为它不再在 MyFramework\String 命名空间中执行,因此输出为 12

MyString.php 中命名空间 strlen() 函数中 strlen 之前的 \ 表示使用标准(根命名空间级别)strlen() 函数

【讨论】:

以上是关于以下PHP脚本的执行流程是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

考虑执行流程时,异常的反面是啥?

E-BIZ并发程序XML文件的执行流程是啥?

Jmeter执行流程分析

PHP流程控制语句

批量更新执行流程如何工作

PHP 异常处理