调用此代码时出现上述错误:
<?
class Test1 extends Core {
function home(){
?>
This is the INDEX of test1
<?
}
function test2(){
echo $this->uri->get_segment(1); //this is where the error comes from
?>
This is the test2 of test1 testing URI
<?
}
}
?>
我在注释的地方得到错误。
这个类扩展了这个类:
<?php
class Core {
public function start()
{
require("funk/funks/libraries/uri.php");
$this->uri = new uri();
require("funk/core/loader.php");
$this->load = new loader();
if($this->uri->get_segment(1) != "" and file_exists("funk/pages/".$this->uri->get_segment(1).".php")){
include("funk/pages/". $this->uri->get_segment(1).".php");
$var = $this->uri->get_segment(2);
if ($var != ""){
$home= $this->uri->get_segment(1);
$Index= new $home();
$Index->$var();
}else{
$home= $this->uri->get_segment(1);
$Index = new $home();
$Index->home();
}
}elseif($this->uri->get_segment(1) and ! file_exists("funk/pages/".$this->uri->get_segment(1).".php")){
echo "404 Error";
}else{
include("funk/pages/index.php");
$Index = new Index();
$Index->home();
//$this->Index->index();
echo "<!--This page was created with FunkyPHP!-->";
}
}
}
?>
这是 uri.php 的内容:
<?php
class uri
{
private $server_path_info = '';
private $segment = array();
private $segments = 0;
public function __construct()
{
$segment_temp = array();
$this->server_path_info = preg_replace("/\?/", "", $_SERVER["PATH_INFO"]);
$segment_temp = explode("/", $this->server_path_info);
foreach ($segment_temp as $key => $seg)
{
if (!preg_match("/([a-zA-Z0-9\.\_\-]+)/", $seg) || empty($seg)) unset($segment_temp[$key]);
}
foreach ($segment_temp as $k => $value)
{
$this->segment[] = $value;
}
unset($segment_temp);
$this->segments = count($this->segment);
}
public function segment_exists($id = 0)
{
$id = (int)$id;
if (isset($this->segment[$id])) return true;
else return false;
}
public function get_segment($id = 0)
{
$id--;
$id = (int)$id;
if ($this->segment_exists($id) === true) return $this->segment[$id];
else return false;
}
}
?>
我之前问过类似的问题,但答案不适用于这里。
我已经将我的代码重写了 3 次以 KILL 和 Delimb 这个被上帝遗忘的错误!但是不...
编辑:我已更改核心类以添加 __construct:
<?php
class Core {
function __construct(){
require("funk/funks/libraries/uri.php");
$this->uri = new uri();
require("funk/core/loader.php");
$this->load = new loader();
}
public function start()
{
if($this->uri->get_segment(1) != "" and file_exists("funk/pages/".$this->uri->get_segment(1).".php")){
include("funk/pages/". $this->uri->get_segment(1).".php");
$var = $this->uri->get_segment(2);
if ($var != ""){
$home= $this->uri->get_segment(1);
$Index= new $home();
$Index->$var();
}else{
$home= $this->uri->get_segment(1);
$Index = new $home();
$Index->home();
}
}elseif($this->uri->get_segment(1) and ! file_exists("funk/pages/".$this->uri->get_segment(1).".php")){
echo "404 Error";
}else{
include("funk/pages/index.php");
$Index = new Index();
$Index->home();
//$this->Index->index();
echo "<!--This page was created with FunkyPHP!-->";
}
}
}
?>
但现在它说:无法在第 3 行的 /home/afsadad/public_html/private/funkyphp/funk/funks/libraries/uri.php 中重新声明类 uri