Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
2 / 2 / 1
Регистрация: 14.08.2017
Сообщений: 40

Uncaught Error: Call to undefined method Error::loadModel()

23.11.2019, 18:15. Показов 1390. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Проблема такая. Когда я перехожу по несуществующей ссылке например: localhost/url меня перекидывает на страницу которая выводится если страница не найдена. Тут все нормально. Но когда я перехожу по ссылке localhost/error выскакивает ошибка.

Fatal error: Uncaught Error: Call to undefined method Error::loadModel()

Ругается на эту строку $this->controller->loadModel($this->_url[0], $this->modelFolder); 73 строка


PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<?php
 
class Bootstrap 
{
 
    private $_url = null;
    private $controller = null;
 
    private $modelFolder = MODELS_PATH;
    private $controllerFolder = CONTROLLERS_PATH; 
 
    private $errorFile = 'error.php';
    private $indexFile = 'index.php';
 
    public function init()
    {
        $this->getFromUrl();
 
        if (empty($this->_url[0])) 
        {
            $this->loadIndexController();
            return false;
        }
        
        $this->loadExistingController();
        $this->callControllerMethod();
    }
 
    public function setControllerFolder($folder)
    {
        $this->controllerFolder = trim($folder, '/') . '/';
    }
 
    public function setModelFolder($folder)
    {
        $this->modelFolder = trim($folder, '/') . '/';
    }
 
    public function setErrorFile($folder)
    {
        $this->errorFile = trim($folder, '/');
    }
 
    public function setIndexFile($folder)
    {
        $this->indexFile = trim($folder, '/');
    }
 
    private function getFromUrl()
    {
        $url = $_GET['url'] ?? null;
        $url = rtrim($url, '/');
        $url = filter_var($url, FILTER_SANITIZE_URL);
        $this->_url = explode('/', $url);
    }
 
    private function loadIndexController()
    {
        require $this->controllerFolder . $this->indexFile;
        $this->controller = new Index();
        $this->controller->index();
    }
 
    private function loadExistingController()
    {
        $file = $this->controllerFolder . $this->_url[0] . '.php';
 
        if (file_exists($file)) 
        {
            require $file;
 
            $this->controller = new $this->_url[0];
            $this->controller->loadModel($this->_url[0], $this->modelFolder);
        } 
 
        else 
            
        {
            $this->error();
            return false;
        }
    }
 
    private function callControllerMethod()
    {
        $length = count($this->_url);
 
        if ($length > 1) 
        {
            if (!method_exists($this->controller, $this->_url[1])) 
            {
                $this->error();
            }
        }
 
        switch ($length)
        {
            case 5:
 
            $this->controller->{$this->_url[1]}($this->_url[2], $this->_url[3], $this->_url[4]);
            break;
 
            case 4:
 
            $this->controller->{$this->_url[1]}($this->_url[2], $this->_url[3]);
            break;
 
            case 3:
 
            $this->controller->{$this->_url[1]}($this->_url[2]);
            break;
 
            case 2:
 
            $this->controller->{$this->_url[1]}();
            break;
 
            default:
 
            $this->controller->index();
            break;
        }
    }
 
    private function error() 
    {
        require $this->controllerFolder . $this->errorFile;
        $this->controller = new ErrorController();
        $this->controller->error404();
        exit;
    }
 
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.11.2019, 18:15
Ответы с готовыми решениями:

PHP Fatal error: Uncaught Error: Call to undefined function mb_strlen()
У меня в файлах запускаемых кроном используется функция mb_strlen(), когда заметил что скрипт не работает запустил его из консоли, мне...

PHP Fatal error: Uncaught Error: Call to undefined function curl_init()
Всем привет! Знаю, проблема обсосана со всех сторон. Получаю вот это: PHP Fatal error: Uncaught Error: Call to undefined...

Fatal error: Uncaught Error: Call to undefined function get_products()
Осваиваю разработку интернет магазина по видеокурсу, но возникают ошибки, которые никак не могу исправить.Текст ошибки &quot;Fatal error:...

5
 Аватар для sad67man
2604 / 1508 / 689
Регистрация: 23.08.2015
Сообщений: 3,839
23.11.2019, 18:25
iwarhill, Он пытается вызвать несуществующий метод loadModel() у класса Error;
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
23.11.2019, 18:38
PHP
1
2
$this->controller = new $this->_url[0];
            $this->controller->loadModel($this->_url[0], $this->modelFolder);
В $this->_url[0] наверное Error
И получается:
PHP
1
2
$this->controller = new Error();
            $this->controller->loadModel($this->_url[0], $this->modelFolder);
0
2 / 2 / 1
Регистрация: 14.08.2017
Сообщений: 40
23.11.2019, 21:27  [ТС]
$this->controller = new Error();

К сожалению ошибка осталась
0
 Аватар для sad67man
2604 / 1508 / 689
Регистрация: 23.08.2015
Сообщений: 3,839
23.11.2019, 21:51
iwarhill, 1) А что у вас за класс такой Error? Это контроллер или что?
Если вам необходимо дергать метод loadModel некого класса, то вы должны быть уверены что он там есть. Для этого вы можете к примеру написать ControllerInterface, который обяжет все контроллеры иметь этот метод. А перед созданием $this->controller = new $this->_url[0]; вы можете проверять имплементирует ли Класс этот интерфейс, если нет, то выкидываете 404 ошибку.
Из-за того, что вы не поддерживаете стандарт psr4, связь между проверкой файла error.php, и его созданием одноименного класса не очевидна. К примеру файл error.php может существовать, но некий класс Error будет браться другой, не обязательно из этого файла.
0
2 / 2 / 1
Регистрация: 14.08.2017
Сообщений: 40
23.11.2019, 23:25  [ТС]
Переключился в OpenServer на версию php 5.6 ошибки нет, все работает как надо. А при версии 7.1 такая ошибка. Как это можно исправить? Или уже дальше продолжать использовать 5.6?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.11.2019, 23:25
Помогаю со студенческими работами здесь

Fatal error: Uncaught Error: Call to undefined function can_upload()
Собрал конструктор тут не большой ... В БД отлично все уходит но фотки в папку не сохраняются почему то. Пишет неопределенная функция ......

Fatal error: Uncaught Error: Call to undefined function mysql_connect() in C:\xampp\htdocs\shop\db_fns.php:2 Stack trace
Выводит при подключении: &lt;?php $connection = mysql_connect(&quot;localhost&quot;, &quot;veb_service&quot;,&quot;1111&quot;); $db =...

Fatal error: Call to undefined method
что это за ошибка? и как её лечить? Fatal error: Call to undefined method WHMCS\OrderForm::getTemplate() in...

Fatal error: Call to undefined method ::getPath() in
В работе модуля возникла ошибка: Огромная Просьба подсказать решение.

Fatal error: Call to undefined method DataBase
Всем доброй ночи,помогите найти ошибку Fatal error: Call to undefined method DataBase::existstID() in...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru