これは私のブートストラップファイルです:
class Bootstrap {
function __construct()
{
$url = $_GET['url'];
//удаляем слеш с конца, чтобы избежать ошибки метода
$url = rtrim($url,'/');
//делим по слешу
$url = explode('/',$url);
//print_r($url);
$file = 'controllers/' . $url[0] . '.php';
if(file_exists($file))
{
require 'controllers/' . $url[0] . '.php';
$controller = new $url[0];
}
else
{
require '/../controllers/error.php';
$error = new error();
$error->classError();
return false;
}
if
(isset($url[2])){
$controller->{$url[1]}($url[2]);
}
else
{
if(isset($url[1])){
if(method_exists($url[0],$url[1])) {
$controller->{$url[1]}();
}
else {
$error->methodError();
}
}
}
}
}
ご覧のとおり、ここでオブジェクトを作成し、classError 関数を呼び出しました。
else
{
require '/../controllers/error.php';
$error = new error();
$error->classError();
return false;
}
次に、別の場所で別のメソッドを呼び出したい:
else {
$error->methodError();
}
致命的なエラー: 39 行目の Z:\home\localhost\www\oop\mvc\mvc\libs\bootstrap.php の非オブジェクトでメンバー関数 methodError() を呼び出します。
methodError メソッドの他のオブジェクトを作成すると、機能します。問題は、その下に既にオブジェクトを作成しているのに、なぜ別のオブジェクトを作成する必要があるのですか?