我有两个文件 - test.php 和 demo.php。
test.php 的内容:
<?php
// fails if allow_url_include = 0 (which it generally is by default)
if (!defined('INIT_NAMESPACES')) {
define('INIT_NAMESPACES', true);
$str = substr_replace(file_get_contents(__FILE__), ' namespace phpseclib;', 5, 0);
include('data://text/plain;base64,' . base64_encode($str));
return;
}
class test {
function zz() { echo 'aaa'; }
}
echo "THIS FAR";
?>
demo.php的内容:
<?php
ini_set('display_errors', 'on');
error_reporting(E_ALL);
include('test.php');
echo "ALL DONE";
?>
运行 demo.php 会产生 THIS FAR 正在输出,但不是 ALL DONE。关于为什么的任何想法?
至于我想要做什么......虽然我认为这并不相关,但这是一个测试脚本,用于测试使用命名空间但在 PHP4 上没有它们也可以工作的代码的可行性。但是,我们不要让这分散我们对这个问题的注意力。我要问的问题不是关于命名空间或 PHP4 或类似的东西——而是关于为什么 ALL DONE 没有被显示。
谢谢..