2014-08-30 37 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()函數