我收到错误:
致命错误:方法名称必须是第15行的C:\ xampp \ htdocs \ index.php中的字符串“
第15行:
$obj = new $url[0]();
CODE:
<?php
error_reporting(E_ALL ^ E_NOTICE);
$url = $_GET['url'];
$url = explode('/', $url);
if (!file_exists('controllers/' . $url[0] . '.php')) {
$url[0] = 'error'; // error kontroleris
}
require 'controllers/' . $url[0] . '.php';
$obj = new $url[0]();
$obj->$url[1]();
顺便说一句:脚本尚未完成。
答案 0 :(得分:2)
实际上,这种语法:
$urls = array('DOMDocument');
$dom = new $urls[0]('');
var_dump( $dom );
...即使在PHP 5.2(proof)中也有效。但是这条线......
$obj->$url[1]();
...非常可能(另一个proof)抛出与您显示的完全相同的错误,因为您不会在代码中的任何位置检查url
数组长度。< / p>
答案 1 :(得分:0)
$_GET['url'] = 'foo/bar'; // temp set $_GET
$url = $_GET['url'];
$url = explode('/', $url);
if (file_exists('controllers/' . $url[0] . '.php')){
require 'controllers/' . $url[0] . '.php';
}else{
$url[0] = 'error';
}
$obj = new URL;
if(method_exists($obj,$url[0])){ // test that method exists
echo $obj->$url[0](); // or whatever your handling may be
}
class URL{
public function error(){
$return = 'this is for the error handling';
return $return;
}
}