我有两个文件 - 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但不会全部完成。关于为什么的任何想法?
至于我正在尝试做什么...虽然我不认为这是相关的,但这是一个测试脚本来测试使用命名空间的代码的可行性,但也可以在PHP4上没有它们。但是,让我们不要让这个问题分散我们的注意力。我问的问题不是名称空间或PHP4或类似的东西 - 它是关于为什么没有显示所有完成的。
谢谢..
答案 0 :(得分:1)
实际上,代码有效。我是一个完整的白痴,并调用test.php而不是demo.php lol:O
答案 1 :(得分:0)
在test.php
将$str = ...
行替换为:
$handle = fopen(__FILE__, 'r');
$str = fread($handle, filesize(__FILE__));
fclose($handle);
$str = substr_replace($str, ' namespace phpseclib;', 5, 0);