Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
 Аватар для Alex_P97
13 / 13 / 6
Регистрация: 13.05.2014
Сообщений: 146

Обработка Fatal error

25.06.2015, 19:25. Показов 2118. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Появляется "Fatal error: Class 'content' not found in %file% on line %line%"
Это происходит так как "устаревшие" но работающие файлы были написаны без применения ооп. А именно, не наследовали класс contentPage.
Мне необходимо "поймать" этот Fatal error и показывать или нет в зависимости от определённой переменной.

Вот примерный код:
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
class page {
    private $pageName;
    
    function __construct() {
        //set_error_handler(array($this, 'onError'));
        //register_shutdown_function('onError'); // ???
        if (isset($_GET['t']) && !empty($_GET['t'])) {
            $tpl = page::getTplPath($_GET['t']);
            if ($tpl === 'NOTPL') {
                $this->pageName = '404';
            } else {
                $this->pageName = $_GET['t'];
            }
        } else {
            $this->pageName = 'main';
        }
    }
    
    public function load() {
        require page::getTplPath($this->getPageName());
        $p = new content; // тут выходит ошибка
        $p->show();
    }
    
    public function getPageName() {
        return $this->pageName;
    }
    
    public static function getTplPath($s) {
        if ((isset($_SESSION['beta']) && $_SESSION['beta'] == true) && (file_exists('./tpl/beta/' . $s . '.php'))) {
            $s = './tpl/beta/' . $s . '.php';
        } elseif ((!empty($s)) && (file_exists('./tpl/main/' . $s . '.php'))) {
            $s = './tpl/main/' . $s . '.php';
        } elseif ((!empty($s)) && (file_exists('./tpl/' . $s . '.php'))) {
            $s = './tpl/' . $s . '.php';
        } else {
            $s = 'NOTPL';
        }
        
        return $s;
    }
    
    public static function onError($errno, $errstr) {
        if (config::getConfig('main', 'isDebug')) // условие вывода ошибки
            echo 'Error[' . $errno . ']: ' . $errstr;
    }
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.06.2015, 19:25
Ответы с готовыми решениями:

Ошибка: FATAL ERROR Uncaught Error: Call to undefined function Test()
Доброго времени суток! Народ на одном из популярных порталов изучал примеры ООП, попробовав на практике пример не запустился, кто может...

Fatal Error: class IMG not found in..
Выдает вот это Фатальная ошибка : 'IMG' Класс не найден. В ооп новый человек, что не так? $img = new img('1.jpg'); // Уменьшит фото...

Fatal error: Uncaught exception. О_о
Есть файл error.php в котором хранятся классы исключений class ArgumentException extends Exception{ function __construct(){ ...

4
 Аватар для Dolphin
814 / 797 / 201
Регистрация: 21.09.2012
Сообщений: 2,656
25.06.2015, 19:29
Fatal error нужно не отлавливать, а исправлять.
и что значит
Цитата Сообщение от Alex_P97 Посмотреть сообщение
"устаревшие" но работающие файлы
0
 Аватар для Alex_P97
13 / 13 / 6
Регистрация: 13.05.2014
Сообщений: 146
25.06.2015, 19:35  [ТС]
Dolphin, допустим в "require page::getTplPath($this->getPageName());" грузится такое:
PHP
1
2
3
4
5
<?php
    header('Content-Type: text/plain');
?>
http://<?php echo $_SERVER['HTTP_HOST'] . config::getConfig('main', 'siteRelativeUrl');?>?beta=0
http://<?php echo $_SERVER['HTTP_HOST'] . config::getConfig('main', 'siteRelativeUrl');?>
и далее выдаётся ошибка из за "$p = new content;"

Добавлено через 1 минуту
можно ли проверить есть ли определённый класс или нет?
0
 Аватар для Dolphin
814 / 797 / 201
Регистрация: 21.09.2012
Сообщений: 2,656
25.06.2015, 19:38
Лучший ответ Сообщение было отмечено Alex_P97 как решение

Решение

Ну так а где сам класс content то?
Цитата Сообщение от Alex_P97 Посмотреть сообщение
можно ли проверить есть ли определённый класс
C++
1
bool class_exists ( string $class_name [, bool $autoload = true ] )
http://php.net/manual/ru/function.class-exists.php
1
 Аватар для Alex_P97
13 / 13 / 6
Регистрация: 13.05.2014
Сообщений: 146
25.06.2015, 19:51  [ТС]
Dolphin, вот.
content class:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class content extends contentPage {
    
    public function getDependency() {
        return array('http://code.jquery.com/jquery-2.1.1.min.js', 'main.css', 'main.js');
    }
    
    public function getTitleAppend() {
        return 'Main Page';
    }
    
    public function getContent() {
        ...
        <div class="container">
            <h2>Hello world</h2>
            <p>text</p>
        </div>
        ...
    }
}
Цитата Сообщение от Dolphin Посмотреть сообщение
http://php.net/manual/ru/function.class-exists.php
Спасибо. Помогло.

PHP
1
2
3
4
5
6
7
8
9
    public function load() {
        require page::getTplPath($this->getPageName());
        if (class_exists('content', false)) {
            $p = new content;
            $p->show();
        } elseif (config::getConfig('main', 'isDebug') && !config::getConfig('main', 'isEnabledOldLoader')) {
            echo 'loaded old or corrupted tpl';
        }
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.06.2015, 19:51
Помогаю со студенческими работами здесь

Fatal error: Constructor __construct() cannot be static
Встретил такую ошибку: class Base { private static function __construct(){ echo 'run'; } } Base::__construct(); ...

Fatal error: Call to a member function on a non-object in
Прошу помощи. Начал учить ООП в php. Не могу додуматься почему не идёт class FFF { function ZZZ() { echo &quot;порядок...

Ошибка - Fatal error: Cannot access empty property
всем привет, уважаемые форумчане! помогите, пожалуйста, правильно написать условие. ошибка Fatal error: Cannot access empty property ...

Fatal error: Call to a member function prepare() on a non-object
Не знаю куда написать, и можно здесь тему, можно и в бд, не пинайте, если написал не туда. Проблема в следующем : выходит ошибка Fatal...

Fatal error: Call to a member function find() on a non-object
Где он теряет свойство объекта? &lt;? include('simple_html_dom.php'); $companies = new simple_html_dom(); ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru