PHP -浏览器不会在"require_once"后面显示echo'ed值命令,为什么


PHP - the browser doesn't display echo'ed values after "require_once" command, why?

我是PHP的新手,我一直在遵循一个教程,我在PHP中使用OOP构建用户注册系统。我一直在很好地消化代码并快速学习,但遇到了一个小问题(但令人沮丧)。

如果echo命令跟随require_once命令,我的web浏览器不希望显示echo'ed值,除非我在想要回显的值之前添加额外的echo '<br'>。它看起来是这样的:

<?php
require_once 'core/init.php';
echo Config::get('mysql/host');

上面的代码不会在浏览器中回显最后一行。

<?php
require_once 'core/init.php';
echo '<br>';
echo Config::get('mysql/host');

上面的代码将在浏览器中回显最后一行。

为什么需要添加echo '<br>'显示?

我将非常感谢你的建议。

最好的,卢卡斯

core/init.php中的代码如下:

<?php
session_start();
$GLOBALS['config'] = array(
    'mysql' => array(
        'host' => '127.0.0.1',
        'username' => 'root',
        'password' => '',
        'db' => 'lr'    
),
    'remember' => array(
        'cookie_name' => 'hash',
        'cookie_expiry' => 604800   
),
    'session' => array(
        'session_name' => 'user'    
)
);

spl_autoload_register(function ($class) {
require_once 'classes/' .$class . '.php';
});
require_once '/../functions/sanitize.php';

echo $config['mysql']['host'];

我已经测试了代码,一切正常。顺便说一下,您应该考虑不要在代码中使用$GLOBALS

在完整的工作代码下面:

index . php

<?php
require_once 'core/init.php';
echo Config::get('mysql/host');
核心/init.php

<?php
session_start();
$GLOBALS['config'] = array(
    'mysql' => array(
        'host' => '127.0.0.1',
        'username' => 'root',
        'password' => '',
        'db' => 'lr'    
),
    'remember' => array(
        'cookie_name' => 'hash',
        'cookie_expiry' => 604800   
),
    'session' => array(
        'session_name' => 'user'    
)
);

spl_autoload_register(function ($class) {
require_once 'classes/' .$class . '.php';
});
require_once '/../functions/sanitize.php';

echo $config['mysql']['host'];

函数/sanitize.php

<?php 
function escape ($string) 
{ 
    return htmlentities($string, END_QUOTES, 'UTF-8'); 
}

/config . php类

<?php
class Config {
    static function get($what) {
        $what  = explode ('/', $what);
        echo $GLOBALS['config'][$what[0]][$what[1]];           
    }
}

浏览器启动index.php文件的结果为:

127.0.0.1127.0.0.1

与预期一致(127.0.0.1显示了2次,中间没有空格)