<?php
namespace DeepCopy;
use function function_exists;
if (false === function_exists('DeepCopy\deep_copy')) {
/**
* Deep copies the given value.
*
* @param mixed $value
* @param bool $useCloneMethod
*
* @return mixed
*/
function deep_copy($value, $useCloneMethod = false)
{
return (new DeepCopy($useCloneMethod))->copy($value);
}
}
今天看到這段程式碼後,一開始不知道為什麼function_exists
傳的是DeepCopy\deep_copy
,不太理解就看PHP文件吧,function_exists文件.在文件的User Contributed Notes
找到了答案It should be noted that the function_exists check is not relative to the root namespace. This means that the namespace should be appended to the check:
namespace test;
if (!function_exists(__NAMESPACE__ . '\example'))
{
function example()
{
}
}
?>
然後自己寫一個進行測試
<?php
namespace test;
function index()
{
var_dump(function_exists('test'));//false
var_dump(function_exists(__NAMESPACE__ . '\test'));//true
}
function test(){}
index();
一個false
,一個true
,這是因為有名稱空間時,這是函式是歸屬在當前名稱空間下的,所以需要加上名稱空間才能獲取到
本作品採用《CC 協議》,轉載必須註明作者和本文連結