Php 一次使用include_时受影响的变量范围
在events.php文件中Php 一次使用include_时受影响的变量范围,php,scope,Php,Scope,在events.php文件中 spl_autoload_register("auto"); function auto($class_name){ include_once($class_name.'.php'); } $url=new clean_url($_SERVER["REQUEST_URI"]); $c=1; //echo $url->segment(2); if(!$url->segment($c)){
spl_autoload_register("auto");
function auto($class_name){
include_once($class_name.'.php');
}
$url=new clean_url($_SERVER["REQUEST_URI"]);
$c=1;
//echo $url->segment(2);
if(!$url->segment($c)){
//include homepage
}
else{
switch($url->segment($c)){
case 'events':
include_once($_SERVER['DOCUMENT_ROOT'].'/events.php');
break;
default:
include_once('404.php');
break;
}
}
?>
造成这种差异的原因是什么?我如何使它在bigrock服务器上工作?我不知道为什么这段代码在XAMPP中工作,但bigrock服务器报告的致命错误是正确的。您的代码中有错误,因为无法从包含的文件访问
$url
,因为此变量和包含的文件在不同的范围内。所有include指令都仅限于其本地范围。现在有一些帮助:您可以通过多种方式在包含变量之前手动导入变量,例如使用函数。您是否尝试过print\r($url)
?spl\u autoload\u register()
在无法注册autoload\u函数时应引发异常。在执行这些代码块之前,您是否绝对肯定没有在其他地方包含events.php?正如@KrishR提到的,spl\u autoload\u register
应该在开关
语句之前就已经抛出了一个错误。在localhost上,它使用print\r:clean\u url对象([path:clean\u url:private]=>/events)给出了它的提示但在服务器上没有输出coming@Bez:上面的代码在index.php文件中,我使用的地址是sitename.com/events/
<?php
if($url->segment($c+1)){
$e=$url->segment($c+1);
switch ($e) {
case 'ecstasy':
include_once($_SERVER['DOCUMENT_ROOT'].'temps/ecstasy.php');
break;
default:
# code...
break;
}
}
Fatal error: Call to a member function segment() on a non-object in /home/public_html/events.php on line 2