我是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次,中间没有空格)