ortegas

Рейтинг
195
Регистрация
29.05.2008

Метод ошибки выглядит так:

//Вивід критичної помилки
static function displayCritical(array $flags = ['code' => 'UNKNOWN', 'name' => false, 'description' => false, 'status' => 503]) {
//Перевіряємо вхідні параметри
if (!isset($flags['code']))
$flags['code'] = 'UNKNOWN';
if (!isset($flags['status']))
$flags['status'] = 503;
if (!isset($flags['name']))
$flags['name'] = false;
if (!isset($flags['description']))
$flags['description'] = false;

//Завантажуємо мовні константи опису помилок
if (!defined('LANG_ERROR_DEFINED')) {
if (!defined('DIR_LANG'))
Processor_::getLanguage();

File_::parseJson([ 'file' => DIR_LANG.'error.json',
'prefix' => 'LANG_ERROR',
'error_reporting' => 1
]);

//Також завантажуємо родові константи
if (DIR_ROOT !== '')
File_::parseJson([ 'file' => DIR_ROOT.DIR_LANG.'error.json',
'prefix' => 'LANG_ERROR',
'error_reporting' => 1
]);
}

//Встановлюємо статус код HTTP
if ($flags['status'] !== 200)
Processor_::setHttpStatus(['code' => $flags['status']]);

//Перериваємо роботу скрипту та виводимо помилку
$render = new Render_();

die($render->display([ 'page' => 'error',
'title' => ((defined('LANG_ERROR_'.$flags['code'].'_TITLE')) ? constant('LANG_ERROR_'.$flags['code'].'_TITLE') : LANG_ERROR_TITLE),
'css' => ['error'],
'js' => false,
'error' => [ 'code' => $flags['code'],
'type' => 'ERROR',
'name' => $flags['name'],
'description' => $flags['description']
]
]));
}

А вот фатальная ошибка вызывается уже процедурой, ибо в этом случае, может быть ошибка связанная и с подключением класса Error.

function throw_fatal_error($code = 'UNKNOWN', $name = false) {

//Встановлюємо заголовки
header('HTTP/1.1 503 Service Temporarily Unavailable');
header('Status: 503 Service Temporarily Unavailable');
header('Retry-After: 20160');
header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
header('Pragma: no-cache');
header('Connection: close');

//Робимо код придатним до читання людиною
if (strpos($code, '_'))
$code = str_replace('_', ' ', $code);

$code = convert_case($code, 'MB_FIRST_WORD', 'utf-8');

//Виводимо сторінку
echo '<!DOCTYPE html>',
'<html id="error">',
'<head>',
'<meta charset="',((defined('CONF_CHARSET')) ? CONF_CHARSET : 'utf-8'),'">',
'<title>',
'Fatal Error!',
'</title>',
//@ Регулярно оновлювати альтернативний CSS
((defined('DIR_TEMPLATE') and defined('CONF_CSS')) ? '<link rel="stylesheet" href="'.DIR_TEMPLATE.DIR_CSS.'error.css">' : '<style>*{margin:0;padding:0;border:none;outline:none}header,nav,section,aside,article,footer,mark{display:block}body{font:15px Tahoma;width:80%;margin:15px auto 10px}h1{font:400 22px Georgia,\'Times New Roman\';color:#B00}p{margin:5px 0}</style>'),
'</head>',
'<body id="fatal">',
'<h1>',
'Fatal error! ',$code,
'</h1>',
(($name !== false) ? '<p>'.$name.'</p>' : ''),
'</body>',
'</html>';
die;
}

Будет еще контроль по группам и связь с автодебагером. Пока что похоже на ООП ради ООП. Могли бы вы хотя бы описать как бы лично реализовали данный участок кода?

Я то сам легко могу править свой код и думаю как раз об общей производительности, а не о производительности разработки, да вот только, не планирую работать всегда над данным проектом сам и хотелось бы логичнее. :( В команде не работал, поэтому, не знаю как писать универсальный код.

<? echo "$login"; ?>

Просто <? echo $login; ?>, без кавычек.

revered, переменные в URL не интерпретируются скриптом. Нужно строить сразу статическую ссылку.

Покажите как строится ссылка. Наверное, используете одинарные кавычки.

_vb_:
Проблемами рационального использования памяти занимаются конкретные языки/среды исполнения/фреймворки.

Да проблема как раз в том, что с каждым днем это стает похожим на фреймворк.

Может кто-то может посмотреть участки кода, и дать хотя бы пару поверхностных советов по архитектуре. Хочется использовать ООП, но что-то вместо этого выходит не легкий и читабельный код, а комбайн-фреймворк.

revered, это eval, это не безопасно. Лучше используйте шаблоны.

siv1987, этот код говорит об ошибке на стороне клиента.

Если страница удалена, нужно отдавать 410. Я так делаю, так советует спецификация. Если веб мастера будут использовать только 4 кода (200, 301, 404, 503), тогда половину функционала HTTP вообще не будет развиваться и вскоре вымрут. А как по мне, все коды очень полезные, и нужно пользоваться всеми, если в этом есть надобность.

Всего: 3009