2014-08-30 52 views
-2

我有一个test.php的:以下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 
} 

这是 '\' 是指使用命名空间?

+0

我不知道为什么有人给这个问题一个减号,但这是一个关于PHP命名空间的问题,它是PHP 5.3之后的一个新功能。如果你认为这个问题很无聊或没用,请让我知道你的观点 – lamplanp 2014-08-30 12:56:40

+0

我没有倒下,但FYI,PHP5.3是旧消息,已经过时。 – 2014-08-30 12:59:42

回答

1

test.php执行包括MyString.phpMyString.php

MyString.php打印执行的主要级别的代码在自己的命名空间中的strlen 的结果(即调用MyFramework\String\strlen()而不是从全局命名空间标准的PHP strlen()功能)其输出24(12 * 2)....然后MyString.php终止并且控制返回到test.php

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

\strlen的命名空间strlen()函数内之前在MyString.php装置使用标准(根名称空间级别)strlen()函数