App это разновидность Error
что за класс AppException?
class AppException extends Error{} // всё, это весь класс
public function __construct($message = "", $code = 0, Throwable $previous = null)
{
parent::__construct($message, $code, $previous);
}
Тяжелые, потому что так говорят?
установил бы какой-либо из популярных фреймворков
class App extends Error
// та-тах
throw new App('Вы не ввели или неправильно ввели данные');
// та-тах
try {
// сюда метод с выбросом
} catch (App $app) {
echo $app->getMessage();
}
где выполнение нескольких подготовленных запросов?
<?php
namespace core;
use Error;
class App extends Error
{
public static $debug;
public static $routes = [];
public static $db = [];
public static $name = 'Название';
public static $title = 'Описание';
public static function run($true_false)
{
if (is_bool($true_false)) {
session_start();
self::$debug = $true_false ? false : true;
Debug::run();
self::$routes = require_once 'config/routes.php';
self::$db = require_once 'config/db.php';
Router::run();
} else {
die('Ошибка запуска!');
}
}
}
<?php
use core\App;
chdir(dirname(__DIR__));
spl_autoload_register(function ($class) {
$file = str_replace('\\', '/', $class) . '.php';
if (is_file($file)) {
require_once $file;
}
});
App::run(false); // false - dev, true - prod
Какие еще "константы"? Для чего? Что ты собрался с ними делать?
function debug($expression)
{
var_dump($expression);
die();
}
function convertMemory($size)
{
$unit = array('b', 'kb', 'mb', 'gb', 'tb', 'pb');
return round($size / pow(1024, ($i = floor(log($size, 1024)))), 2) . ' ' . $unit[$i];
}
function numericDeclension($num, $titles = [])
{
$cases = [2, 0, 1, 1, 1, 2];
return $num . ' ' . $titles[($num % 100 > 4 && $num % 100 < 20) ? 2 : $cases[min($num % 10, 5)]];
}
function generateRandomString($col)
{
return substr(str_shuffle('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'), 0, $col);
}
<?php
namespace core;
use PDO;
class Db
{
public static $count_instances = 0;
public static $count_sql = 0;
public static $queries = [];
private static $instance;
private function __construct()
{
// $db = require_once 'config/db.php'; избавляемся от инклуда в этом месте
self::$instance = new PDO(App::$db['dsn'], App::$db['username'], App::$db['passwd'], App::$db['options']);
}
public static function pdo($sql, $params = [], $class = 'stdClass')
{
return self::exec($sql, $params)->fetchAll(PDO::FETCH_CLASS, $class);
}
public static function exec($sql, $params = [])
{
self::$count_sql++;
self::$queries[] = $sql;
$stmt = self::getInstance()->prepare($sql);
$stmt->execute($params);
return $stmt;
}
private static function getInstance()
{
if (!self::$instance) {
self::$count_instances++;
new self();
}
return self::$instance;
}
public static function getLastInsertId()
{
return self::getInstance()->lastInsertId();
}
public static function getServerVersion()
{
return self::getInstance()->getAttribute(PDO::ATTR_SERVER_VERSION);
}
}
Ctrl + Alt + L