Bằng cách thêm các bản hack trợ giúp được đề cập dưới đây, bạn có thể nhập mọi thứ từ không gian tên Hamcrest vào không gian tên hiện tại bằng cách gọi:
import_namespace['Hamcrest', __NAMESPACE__];
Dưới đây là các hack, function_alias hoạt động như //www.php.net/manual/en/function. class-alias.php trừ khi hoạt động trên các chức năng:
function function_alias [$original, $alias] {
$args = func_get_args[];
assert['count[$args] == 2', 'function_alias[]: requires exactly two arguments'];
assert['is_string[$original] && is_string[$alias]', 'function_alias[]: requires string arguments'];
// valid function name - //php.net/manual/en/functions.user-defined.php
assert['preg_match[\'/^[a-zA-Z_\x7f-\xff][\\\\\\\\a-zA-Z0-9_\x7f-\xff]*$/\', $original] > 0',
"function_alias[]: '$original' is not a valid function name"];
assert['preg_match[\'/^[a-zA-Z_\x7f-\xff][\\\\\\\\a-zA-Z0-9_\x7f-\xff]*$/\', $alias] > 0',
"function_alias[]: '$alias' is not a valid function name"];
$aliasNamespace = substr[$alias, 0, strrpos[$alias, '\\'] !== false ? strrpos[$alias, '\\'] : 0];
$aliasName = substr[$alias, strrpos[$alias, '\\'] !== false ? strrpos[$alias, '\\'] + 1 : 0];
$serializedOriginal = var_export[$original, true];
eval["
namespace $aliasNamespace {
function $aliasName [] {
return call_user_func_array[$serializedOriginal, func_get_args[]];
}
}
"];
}
Kết hợp với nhà nhập khẩu không gian tên:
function import_namespace [$source, $destination] {
$args = func_get_args[];
assert['count[$args] == 2', 'import_namespace[]: requires exactly two arguments'];
assert['is_string[$source] && is_string[$destination]', 'import_namespace[]: requires string arguments'];
// valid function name - //php.net/manual/en/functions.user-defined.php
assert['preg_match[\'/^[[a-zA-Z_\x7f-\xff][\\\\\\\\a-zA-Z0-9_\x7f-\xff]*]?$/\', $source] > 0',
"import_namespace[]: '$destination' is not a valid namespace name"];
assert['preg_match[\'/^[[a-zA-Z_\x7f-\xff][\\\\\\\\a-zA-Z0-9_\x7f-\xff]*]?$/\', $destination] > 0',
"import_namespace[]: '$source' is not a valid namespace name"];
foreach[get_declared_classes[] as $class]
if [strpos[$class, $source . '\\'] === 0]
class_alias[$class, $destination . [$destination ? '\\' : ''] . substr[$class, strlen[$source . '\\']]];
$functions = get_defined_functions[];
foreach[array_merge[$functions['internal'], $functions['user']] as $function]
if [strpos[$function, $source . '\\'] === 0]
function_alias[$function, $destination . [$destination ? '\\' : ''] . substr[$function, strlen[$source . '\\']]];
}
11 năm trước
[Php 5> = 5.3.0, Php 7, Php 8]
- Trước khi thảo luận về việc sử dụng các không gian tên, điều quan trọng là phải hiểu làm thế nào PHP biết phần tử tên nào được yêu cầu. Một sự tương tự đơn giản có thể được thực hiện giữa các không gian tên PHP và hệ thống tập tin. Có ba cách để truy cập một tệp trong hệ thống tệp:
- Tên tệp tương đối như
foo.txt
. Điều này giải quyết chocurrentdirectory/foo.txt
trong đó hiện tại là thư mục hiện đang bị chiếm. Vì vậy, nếu thư mục hiện tại là/home/foo
, tên được giải quyết thành/home/foo/foo.txt
. - Tên đường dẫn tương đối như
subdirectory/foo.txt
. Điều này giải quyết đếncurrentdirectory/subdirectory/foo.txt
.
Tên đường dẫn tuyệt đối như /main/foo.txt
. Điều này giải quyết đến /main/foo.txt
.
- Nguyên tắc tương tự có thể được áp dụng cho các yếu tố đặt tên trong PHP. Ví dụ, một tên lớp có thể được đề cập theo ba cách: One caveat: unqualified names for functions and constants will resolve to global functions and constants if the namespaced function or constant is not defined. See Using namespaces: fallback to global function/constant for details.
- Tên không đủ tiêu chuẩn, hoặc một tên lớp không bị hủy bỏ như
1 hoặcfunction function_alias [$original, $alias] { $args = func_get_args[]; assert['count[$args] == 2', 'function_alias[]: requires exactly two arguments']; assert['is_string[$original] && is_string[$alias]', 'function_alias[]: requires string arguments']; // valid function name - //php.net/manual/en/functions.user-defined.php assert['preg_match[\'/^[a-zA-Z_\x7f-\xff][\\\\\\\\a-zA-Z0-9_\x7f-\xff]*$/\', $original] > 0', "function_alias[]: '$original' is not a valid function name"]; assert['preg_match[\'/^[a-zA-Z_\x7f-\xff][\\\\\\\\a-zA-Z0-9_\x7f-\xff]*$/\', $alias] > 0', "function_alias[]: '$alias' is not a valid function name"]; $aliasNamespace = substr[$alias, 0, strrpos[$alias, '\\'] !== false ? strrpos[$alias, '\\'] : 0]; $aliasName = substr[$alias, strrpos[$alias, '\\'] !== false ? strrpos[$alias, '\\'] + 1 : 0]; $serializedOriginal = var_export[$original, true]; eval[" namespace $aliasNamespace { function $aliasName [] { return call_user_func_array[$serializedOriginal, func_get_args[]]; } } "]; }
2. Nếu không gian tên hiện tại làfunction function_alias [$original, $alias] { $args = func_get_args[]; assert['count[$args] == 2', 'function_alias[]: requires exactly two arguments']; assert['is_string[$original] && is_string[$alias]', 'function_alias[]: requires string arguments']; // valid function name - //php.net/manual/en/functions.user-defined.php assert['preg_match[\'/^[a-zA-Z_\x7f-\xff][\\\\\\\\a-zA-Z0-9_\x7f-\xff]*$/\', $original] > 0', "function_alias[]: '$original' is not a valid function name"]; assert['preg_match[\'/^[a-zA-Z_\x7f-\xff][\\\\\\\\a-zA-Z0-9_\x7f-\xff]*$/\', $alias] > 0', "function_alias[]: '$alias' is not a valid function name"]; $aliasNamespace = substr[$alias, 0, strrpos[$alias, '\\'] !== false ? strrpos[$alias, '\\'] : 0]; $aliasName = substr[$alias, strrpos[$alias, '\\'] !== false ? strrpos[$alias, '\\'] + 1 : 0]; $serializedOriginal = var_export[$original, true]; eval[" namespace $aliasNamespace { function $aliasName [] { return call_user_func_array[$serializedOriginal, func_get_args[]]; } } "]; }
3, điều này sẽ giải quyết thànhfunction function_alias [$original, $alias] { $args = func_get_args[]; assert['count[$args] == 2', 'function_alias[]: requires exactly two arguments']; assert['is_string[$original] && is_string[$alias]', 'function_alias[]: requires string arguments']; // valid function name - //php.net/manual/en/functions.user-defined.php assert['preg_match[\'/^[a-zA-Z_\x7f-\xff][\\\\\\\\a-zA-Z0-9_\x7f-\xff]*$/\', $original] > 0', "function_alias[]: '$original' is not a valid function name"]; assert['preg_match[\'/^[a-zA-Z_\x7f-\xff][\\\\\\\\a-zA-Z0-9_\x7f-\xff]*$/\', $alias] > 0', "function_alias[]: '$alias' is not a valid function name"]; $aliasNamespace = substr[$alias, 0, strrpos[$alias, '\\'] !== false ? strrpos[$alias, '\\'] : 0]; $aliasName = substr[$alias, strrpos[$alias, '\\'] !== false ? strrpos[$alias, '\\'] + 1 : 0]; $serializedOriginal = var_export[$original, true]; eval[" namespace $aliasNamespace { function $aliasName [] { return call_user_func_array[$serializedOriginal, func_get_args[]]; } } "]; }
4. Nếu mã là mã toàn cầu, không được ký tên, thì điều này sẽ giải quyết thànhfunction function_alias [$original, $alias] { $args = func_get_args[]; assert['count[$args] == 2', 'function_alias[]: requires exactly two arguments']; assert['is_string[$original] && is_string[$alias]', 'function_alias[]: requires string arguments']; // valid function name - //php.net/manual/en/functions.user-defined.php assert['preg_match[\'/^[a-zA-Z_\x7f-\xff][\\\\\\\\a-zA-Z0-9_\x7f-\xff]*$/\', $original] > 0', "function_alias[]: '$original' is not a valid function name"]; assert['preg_match[\'/^[a-zA-Z_\x7f-\xff][\\\\\\\\a-zA-Z0-9_\x7f-\xff]*$/\', $alias] > 0', "function_alias[]: '$alias' is not a valid function name"]; $aliasNamespace = substr[$alias, 0, strrpos[$alias, '\\'] !== false ? strrpos[$alias, '\\'] : 0]; $aliasName = substr[$alias, strrpos[$alias, '\\'] !== false ? strrpos[$alias, '\\'] + 1 : 0]; $serializedOriginal = var_export[$original, true]; eval[" namespace $aliasNamespace { function $aliasName [] { return call_user_func_array[$serializedOriginal, func_get_args[]]; } } "]; }
5. Một cảnh báo: Tên không đủ tiêu chuẩn cho các hàm và hằng số sẽ giải quyết cho các chức năng và hằng số toàn cầu nếu hàm tên hoặc hằng số không được xác định. Xem bằng cách sử dụng không gian tên: dự phòng vào chức năng/hằng số toàn cầu để biết chi tiết.function function_alias [$original, $alias] { $args = func_get_args[]; assert['count[$args] == 2', 'function_alias[]: requires exactly two arguments']; assert['is_string[$original] && is_string[$alias]', 'function_alias[]: requires string arguments']; // valid function name - //php.net/manual/en/functions.user-defined.php assert['preg_match[\'/^[a-zA-Z_\x7f-\xff][\\\\\\\\a-zA-Z0-9_\x7f-\xff]*$/\', $original] > 0', "function_alias[]: '$original' is not a valid function name"]; assert['preg_match[\'/^[a-zA-Z_\x7f-\xff][\\\\\\\\a-zA-Z0-9_\x7f-\xff]*$/\', $alias] > 0', "function_alias[]: '$alias' is not a valid function name"]; $aliasNamespace = substr[$alias, 0, strrpos[$alias, '\\'] !== false ? strrpos[$alias, '\\'] : 0]; $aliasName = substr[$alias, strrpos[$alias, '\\'] !== false ? strrpos[$alias, '\\'] + 1 : 0]; $serializedOriginal = var_export[$original, true]; eval[" namespace $aliasNamespace { function $aliasName [] { return call_user_func_array[$serializedOriginal, func_get_args[]]; } } "]; }
- Tên đủ điều kiện hoặc tên lớp có tiền tố như
6 hoặcfunction function_alias [$original, $alias] { $args = func_get_args[]; assert['count[$args] == 2', 'function_alias[]: requires exactly two arguments']; assert['is_string[$original] && is_string[$alias]', 'function_alias[]: requires string arguments']; // valid function name - //php.net/manual/en/functions.user-defined.php assert['preg_match[\'/^[a-zA-Z_\x7f-\xff][\\\\\\\\a-zA-Z0-9_\x7f-\xff]*$/\', $original] > 0', "function_alias[]: '$original' is not a valid function name"]; assert['preg_match[\'/^[a-zA-Z_\x7f-\xff][\\\\\\\\a-zA-Z0-9_\x7f-\xff]*$/\', $alias] > 0', "function_alias[]: '$alias' is not a valid function name"]; $aliasNamespace = substr[$alias, 0, strrpos[$alias, '\\'] !== false ? strrpos[$alias, '\\'] : 0]; $aliasName = substr[$alias, strrpos[$alias, '\\'] !== false ? strrpos[$alias, '\\'] + 1 : 0]; $serializedOriginal = var_export[$original, true]; eval[" namespace $aliasNamespace { function $aliasName [] { return call_user_func_array[$serializedOriginal, func_get_args[]]; } } "]; }
7. Nếu không gian tên hiện tại làfunction function_alias [$original, $alias] { $args = func_get_args[]; assert['count[$args] == 2', 'function_alias[]: requires exactly two arguments']; assert['is_string[$original] && is_string[$alias]', 'function_alias[]: requires string arguments']; // valid function name - //php.net/manual/en/functions.user-defined.php assert['preg_match[\'/^[a-zA-Z_\x7f-\xff][\\\\\\\\a-zA-Z0-9_\x7f-\xff]*$/\', $original] > 0', "function_alias[]: '$original' is not a valid function name"]; assert['preg_match[\'/^[a-zA-Z_\x7f-\xff][\\\\\\\\a-zA-Z0-9_\x7f-\xff]*$/\', $alias] > 0', "function_alias[]: '$alias' is not a valid function name"]; $aliasNamespace = substr[$alias, 0, strrpos[$alias, '\\'] !== false ? strrpos[$alias, '\\'] : 0]; $aliasName = substr[$alias, strrpos[$alias, '\\'] !== false ? strrpos[$alias, '\\'] + 1 : 0]; $serializedOriginal = var_export[$original, true]; eval[" namespace $aliasNamespace { function $aliasName [] { return call_user_func_array[$serializedOriginal, func_get_args[]]; } } "]; }
3, điều này sẽ giải quyết thànhfunction function_alias [$original, $alias] { $args = func_get_args[]; assert['count[$args] == 2', 'function_alias[]: requires exactly two arguments']; assert['is_string[$original] && is_string[$alias]', 'function_alias[]: requires string arguments']; // valid function name - //php.net/manual/en/functions.user-defined.php assert['preg_match[\'/^[a-zA-Z_\x7f-\xff][\\\\\\\\a-zA-Z0-9_\x7f-\xff]*$/\', $original] > 0', "function_alias[]: '$original' is not a valid function name"]; assert['preg_match[\'/^[a-zA-Z_\x7f-\xff][\\\\\\\\a-zA-Z0-9_\x7f-\xff]*$/\', $alias] > 0', "function_alias[]: '$alias' is not a valid function name"]; $aliasNamespace = substr[$alias, 0, strrpos[$alias, '\\'] !== false ? strrpos[$alias, '\\'] : 0]; $aliasName = substr[$alias, strrpos[$alias, '\\'] !== false ? strrpos[$alias, '\\'] + 1 : 0]; $serializedOriginal = var_export[$original, true]; eval[" namespace $aliasNamespace { function $aliasName [] { return call_user_func_array[$serializedOriginal, func_get_args[]]; } } "]; }
9. Nếu mã là mã toàn cầu, không được ký tên, thì điều này sẽ giải quyết thànhfunction function_alias [$original, $alias] { $args = func_get_args[]; assert['count[$args] == 2', 'function_alias[]: requires exactly two arguments']; assert['is_string[$original] && is_string[$alias]', 'function_alias[]: requires string arguments']; // valid function name - //php.net/manual/en/functions.user-defined.php assert['preg_match[\'/^[a-zA-Z_\x7f-\xff][\\\\\\\\a-zA-Z0-9_\x7f-\xff]*$/\', $original] > 0', "function_alias[]: '$original' is not a valid function name"]; assert['preg_match[\'/^[a-zA-Z_\x7f-\xff][\\\\\\\\a-zA-Z0-9_\x7f-\xff]*$/\', $alias] > 0', "function_alias[]: '$alias' is not a valid function name"]; $aliasNamespace = substr[$alias, 0, strrpos[$alias, '\\'] !== false ? strrpos[$alias, '\\'] : 0]; $aliasName = substr[$alias, strrpos[$alias, '\\'] !== false ? strrpos[$alias, '\\'] + 1 : 0]; $serializedOriginal = var_export[$original, true]; eval[" namespace $aliasNamespace { function $aliasName [] { return call_user_func_array[$serializedOriginal, func_get_args[]]; } } "]; }
0.function import_namespace [$source, $destination] { $args = func_get_args[]; assert['count[$args] == 2', 'import_namespace[]: requires exactly two arguments']; assert['is_string[$source] && is_string[$destination]', 'import_namespace[]: requires string arguments']; // valid function name - //php.net/manual/en/functions.user-defined.php assert['preg_match[\'/^[[a-zA-Z_\x7f-\xff][\\\\\\\\a-zA-Z0-9_\x7f-\xff]*]?$/\', $source] > 0', "import_namespace[]: '$destination' is not a valid namespace name"]; assert['preg_match[\'/^[[a-zA-Z_\x7f-\xff][\\\\\\\\a-zA-Z0-9_\x7f-\xff]*]?$/\', $destination] > 0', "import_namespace[]: '$source' is not a valid namespace name"]; foreach[get_declared_classes[] as $class] if [strpos[$class, $source . '\\'] === 0] class_alias[$class, $destination . [$destination ? '\\' : ''] . substr[$class, strlen[$source . '\\']]]; $functions = get_defined_functions[]; foreach[array_merge[$functions['internal'], $functions['user']] as $function] if [strpos[$function, $source . '\\'] === 0] function_alias[$function, $destination . [$destination ? '\\' : ''] . substr[$function, strlen[$source . '\\']]]; }
Tên đủ điều kiện hoặc tên tiền tố với toán tử tiền tố toàn cầu như
function import_namespace [$source, $destination] {
$args = func_get_args[];
assert['count[$args] == 2', 'import_namespace[]: requires exactly two arguments'];
assert['is_string[$source] && is_string[$destination]', 'import_namespace[]: requires string arguments'];
// valid function name - //php.net/manual/en/functions.user-defined.php
assert['preg_match[\'/^[[a-zA-Z_\x7f-\xff][\\\\\\\\a-zA-Z0-9_\x7f-\xff]*]?$/\', $source] > 0',
"import_namespace[]: '$destination' is not a valid namespace name"];
assert['preg_match[\'/^[[a-zA-Z_\x7f-\xff][\\\\\\\\a-zA-Z0-9_\x7f-\xff]*]?$/\', $destination] > 0',
"import_namespace[]: '$source' is not a valid namespace name"];
foreach[get_declared_classes[] as $class]
if [strpos[$class, $source . '\\'] === 0]
class_alias[$class, $destination . [$destination ? '\\' : ''] . substr[$class, strlen[$source . '\\']]];
$functions = get_defined_functions[];
foreach[array_merge[$functions['internal'], $functions['user']] as $function]
if [strpos[$function, $source . '\\'] === 0]
function_alias[$function, $destination . [$destination ? '\\' : ''] . substr[$function, strlen[$source . '\\']]];
}
1 hoặc function import_namespace [$source, $destination] {
$args = func_get_args[];
assert['count[$args] == 2', 'import_namespace[]: requires exactly two arguments'];
assert['is_string[$source] && is_string[$destination]', 'import_namespace[]: requires string arguments'];
// valid function name - //php.net/manual/en/functions.user-defined.php
assert['preg_match[\'/^[[a-zA-Z_\x7f-\xff][\\\\\\\\a-zA-Z0-9_\x7f-\xff]*]?$/\', $source] > 0',
"import_namespace[]: '$destination' is not a valid namespace name"];
assert['preg_match[\'/^[[a-zA-Z_\x7f-\xff][\\\\\\\\a-zA-Z0-9_\x7f-\xff]*]?$/\', $destination] > 0',
"import_namespace[]: '$source' is not a valid namespace name"];
foreach[get_declared_classes[] as $class]
if [strpos[$class, $source . '\\'] === 0]
class_alias[$class, $destination . [$destination ? '\\' : ''] . substr[$class, strlen[$source . '\\']]];
$functions = get_defined_functions[];
foreach[array_merge[$functions['internal'], $functions['user']] as $function]
if [strpos[$function, $source . '\\'] === 0]
function_alias[$function, $destination . [$destination ? '\\' : ''] . substr[$function, strlen[$source . '\\']]];
}
2. Điều này luôn giải quyết cho tên theo nghĩa đen được chỉ định trong mã, function function_alias [$original, $alias] {
$args = func_get_args[];
assert['count[$args] == 2', 'function_alias[]: requires exactly two arguments'];
assert['is_string[$original] && is_string[$alias]', 'function_alias[]: requires string arguments'];
// valid function name - //php.net/manual/en/functions.user-defined.php
assert['preg_match[\'/^[a-zA-Z_\x7f-\xff][\\\\\\\\a-zA-Z0-9_\x7f-\xff]*$/\', $original] > 0',
"function_alias[]: '$original' is not a valid function name"];
assert['preg_match[\'/^[a-zA-Z_\x7f-\xff][\\\\\\\\a-zA-Z0-9_\x7f-\xff]*$/\', $alias] > 0',
"function_alias[]: '$alias' is not a valid function name"];
$aliasNamespace = substr[$alias, 0, strrpos[$alias, '\\'] !== false ? strrpos[$alias, '\\'] : 0];
$aliasName = substr[$alias, strrpos[$alias, '\\'] !== false ? strrpos[$alias, '\\'] + 1 : 0];
$serializedOriginal = var_export[$original, true];
eval["
namespace $aliasNamespace {
function $aliasName [] {
return call_user_func_array[$serializedOriginal, func_get_args[]];
}
}
"];
}
4.
file1.php
function import_namespace [$source, $destination] {
$args = func_get_args[];
assert['count[$args] == 2', 'import_namespace[]: requires exactly two arguments'];
assert['is_string[$source] && is_string[$destination]', 'import_namespace[]: requires string arguments'];
// valid function name - //php.net/manual/en/functions.user-defined.php
assert['preg_match[\'/^[[a-zA-Z_\x7f-\xff][\\\\\\\\a-zA-Z0-9_\x7f-\xff]*]?$/\', $source] > 0',
"import_namespace[]: '$destination' is not a valid namespace name"];
assert['preg_match[\'/^[[a-zA-Z_\x7f-\xff][\\\\\\\\a-zA-Z0-9_\x7f-\xff]*]?$/\', $destination] > 0',
"import_namespace[]: '$source' is not a valid namespace name"];
foreach[get_declared_classes[] as $class]
if [strpos[$class, $source . '\\'] === 0]
class_alias[$class, $destination . [$destination ? '\\' : ''] . substr[$class, strlen[$source . '\\']]];
$functions = get_defined_functions[];
foreach[array_merge[$functions['internal'], $functions['user']] as $function]
if [strpos[$function, $source . '\\'] === 0]
function_alias[$function, $destination . [$destination ? '\\' : ''] . substr[$function, strlen[$source . '\\']]];
}
4function import_namespace [$source, $destination] {
$args = func_get_args[];
assert['count[$args] == 2', 'import_namespace[]: requires exactly two arguments'];
assert['is_string[$source] && is_string[$destination]', 'import_namespace[]: requires string arguments'];
// valid function name - //php.net/manual/en/functions.user-defined.php
assert['preg_match[\'/^[[a-zA-Z_\x7f-\xff][\\\\\\\\a-zA-Z0-9_\x7f-\xff]*]?$/\', $source] > 0',
"import_namespace[]: '$destination' is not a valid namespace name"];
assert['preg_match[\'/^[[a-zA-Z_\x7f-\xff][\\\\\\\\a-zA-Z0-9_\x7f-\xff]*]?$/\', $destination] > 0',
"import_namespace[]: '$source' is not a valid namespace name"];
foreach[get_declared_classes[] as $class]
if [strpos[$class, $source . '\\'] === 0]
class_alias[$class, $destination . [$destination ? '\\' : ''] . substr[$class, strlen[$source . '\\']]];
$functions = get_defined_functions[];
foreach[array_merge[$functions['internal'], $functions['user']] as $function]
if [strpos[$function, $source . '\\'] === 0]
function_alias[$function, $destination . [$destination ? '\\' : ''] . substr[$function, strlen[$source . '\\']]];
}
5function import_namespace [$source, $destination] {
$args = func_get_args[];
assert['count[$args] == 2', 'import_namespace[]: requires exactly two arguments'];
assert['is_string[$source] && is_string[$destination]', 'import_namespace[]: requires string arguments'];
// valid function name - //php.net/manual/en/functions.user-defined.php
assert['preg_match[\'/^[[a-zA-Z_\x7f-\xff][\\\\\\\\a-zA-Z0-9_\x7f-\xff]*]?$/\', $source] > 0',
"import_namespace[]: '$destination' is not a valid namespace name"];
assert['preg_match[\'/^[[a-zA-Z_\x7f-\xff][\\\\\\\\a-zA-Z0-9_\x7f-\xff]*]?$/\', $destination] > 0',
"import_namespace[]: '$source' is not a valid namespace name"];
foreach[get_declared_classes[] as $class]
if [strpos[$class, $source . '\\'] === 0]
class_alias[$class, $destination . [$destination ? '\\' : ''] . substr[$class, strlen[$source . '\\']]];
$functions = get_defined_functions[];
foreach[array_merge[$functions['internal'], $functions['user']] as $function]
if [strpos[$function, $source . '\\'] === 0]
function_alias[$function, $destination . [$destination ? '\\' : ''] . substr[$function, strlen[$source . '\\']]];
}
6file2.php
function import_namespace [$source, $destination] {
$args = func_get_args[];
assert['count[$args] == 2', 'import_namespace[]: requires exactly two arguments'];
assert['is_string[$source] && is_string[$destination]', 'import_namespace[]: requires string arguments'];
// valid function name - //php.net/manual/en/functions.user-defined.php
assert['preg_match[\'/^[[a-zA-Z_\x7f-\xff][\\\\\\\\a-zA-Z0-9_\x7f-\xff]*]?$/\', $source] > 0',
"import_namespace[]: '$destination' is not a valid namespace name"];
assert['preg_match[\'/^[[a-zA-Z_\x7f-\xff][\\\\\\\\a-zA-Z0-9_\x7f-\xff]*]?$/\', $destination] > 0',
"import_namespace[]: '$source' is not a valid namespace name"];
foreach[get_declared_classes[] as $class]
if [strpos[$class, $source . '\\'] === 0]
class_alias[$class, $destination . [$destination ? '\\' : ''] . substr[$class, strlen[$source . '\\']]];
$functions = get_defined_functions[];
foreach[array_merge[$functions['internal'], $functions['user']] as $function]
if [strpos[$function, $source . '\\'] === 0]
function_alias[$function, $destination . [$destination ? '\\' : ''] . substr[$function, strlen[$source . '\\']]];
}
7function import_namespace [$source, $destination] {
$args = func_get_args[];
assert['count[$args] == 2', 'import_namespace[]: requires exactly two arguments'];
assert['is_string[$source] && is_string[$destination]', 'import_namespace[]: requires string arguments'];
// valid function name - //php.net/manual/en/functions.user-defined.php
assert['preg_match[\'/^[[a-zA-Z_\x7f-\xff][\\\\\\\\a-zA-Z0-9_\x7f-\xff]*]?$/\', $source] > 0',
"import_namespace[]: '$destination' is not a valid namespace name"];
assert['preg_match[\'/^[[a-zA-Z_\x7f-\xff][\\\\\\\\a-zA-Z0-9_\x7f-\xff]*]?$/\', $destination] > 0',
"import_namespace[]: '$source' is not a valid namespace name"];
foreach[get_declared_classes[] as $class]
if [strpos[$class, $source . '\\'] === 0]
class_alias[$class, $destination . [$destination ? '\\' : ''] . substr[$class, strlen[$source . '\\']]];
$functions = get_defined_functions[];
foreach[array_merge[$functions['internal'], $functions['user']] as $function]
if [strpos[$function, $source . '\\'] === 0]
function_alias[$function, $destination . [$destination ? '\\' : ''] . substr[$function, strlen[$source . '\\']]];
}
5function import_namespace [$source, $destination] {
$args = func_get_args[];
assert['count[$args] == 2', 'import_namespace[]: requires exactly two arguments'];
assert['is_string[$source] && is_string[$destination]', 'import_namespace[]: requires string arguments'];
// valid function name - //php.net/manual/en/functions.user-defined.php
assert['preg_match[\'/^[[a-zA-Z_\x7f-\xff][\\\\\\\\a-zA-Z0-9_\x7f-\xff]*]?$/\', $source] > 0',
"import_namespace[]: '$destination' is not a valid namespace name"];
assert['preg_match[\'/^[[a-zA-Z_\x7f-\xff][\\\\\\\\a-zA-Z0-9_\x7f-\xff]*]?$/\', $destination] > 0',
"import_namespace[]: '$source' is not a valid namespace name"];
foreach[get_declared_classes[] as $class]
if [strpos[$class, $source . '\\'] === 0]
class_alias[$class, $destination . [$destination ? '\\' : ''] . substr[$class, strlen[$source . '\\']]];
$functions = get_defined_functions[];
foreach[array_merge[$functions['internal'], $functions['user']] as $function]
if [strpos[$function, $source . '\\'] === 0]
function_alias[$function, $destination . [$destination ? '\\' : ''] . substr[$function, strlen[$source . '\\']]];
}
9Lưu ý rằng để truy cập bất kỳ lớp toàn cầu, hàm hoặc hằng số, có thể sử dụng tên đủ điều kiện, chẳng hạn như \ strlen [] hoặc \ Exception hoặc foo.txt
0.\strlen[] or \Exception or foo.txt
0.
Ví dụ #1 truy cập các lớp, chức năng và hằng số toàn cầu từ trong không gian tên
foo.txt
1
foo.txt
2
foo.txt
3Richard tại Richard-sumilang dot com ¶
14 năm trước
foo.txt
4
foo.txt
5
foo.txt
6
foo.txt
7
foo.txt
8Ẩn danh ¶ ¶
8 năm trước
foo.txt
9
currentdirectory/foo.txt
0
currentdirectory/foo.txt
1Lukas Z ¶
10 năm trước
currentdirectory/foo.txt
2
currentdirectory/foo.txt
3
currentdirectory/foo.txt
4Tom tại Tomwardrop Dot Com ¶ ¶
10 năm trước
currentdirectory/foo.txt
5
currentdirectory/foo.txt
6
currentdirectory/foo.txt
7
currentdirectory/foo.txt
8Tom tại Tomwardrop Dot Com ¶ ¶
Philip Dot Preisser tại Arcor Dot de ¶
currentdirectory/foo.txt
9
/home/foo
0
/home/foo
1
/home/foo
2