Это моя структура, подход хороший?


Индексный файл:

<?php
require_once 'app/run.php';

$_action = (isset($_GET['cmd']) && ctype_alnum($_GET['cmd'])) ? $_GET['cmd'] : 'index';

switch ($_action) {

    case 'index':
    case 'default':
    case 'home':
        include $con_dir . '/index.php';
    break;
    default:
        include $con_dir . '/404.php';

}

В run.php файл:

<?php
session_start();

require_once 'config.php';

$app_dir = realpath(dirname(__FILE__));
$lib_dir = $app_dir . '/lib';
$con_dir = $app_dir . '/controllers';

require_once($app_dir . '/lib.php'); //Include libraries

//Database Connection
try {
  # MySQL with PDO_MYSQL
  $db = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
}
catch(PDOException $e) {
    echo $e->getMessage();
}
unset($password);

//Smarty
$tpl = new Smarty();
$tpl->template_dir = $app_dir . '/Smarty/templates/';
$tpl->compile_dir  = $app_dir . '/Smarty/templates_c/';
$tpl->config_dir   = $app_dir . '/Smarty/configs/';
$tpl->cache_dir    = $app_dir . '/Smarty/cache/';

В lib.php файл

<?php
require_once($lib_dir . '/Smarty/Smarty.class.php');

В config.php файл

<?php
$hostname = 'localhost';
$username = 'root';
$password = '';
$database = 'engine';

Я думаю, я могу улучшить это, выполнив переключатель() более динамичный, скажем так, можно ли еще что ?КМД=именем будет уместно, как бы я это сделал? И как мне это сделать безопасно?

То, что вы думаете о моей основной структуры, как это исправить? Что бы вы хотели изменить и т. д.



266
2
задан 12 ноября 2011 в 05:11 Источник Поделиться
Комментарии
1 ответ

Вы код выглядит нормально. Одна незначительная проблема: в улов(исключение pdoexception $E)в филиале может быть, вы хотите


  • журнал ошибок (на глобальном уровне),

  • показать необычные статическая ошибка страницы для пользователя ("это не твоя вина, мы вошли ошибке и мы работаем над этим." или что-то вроде этого.),

  • и/или позвонить умереть().


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

$pages['index'] = 'index.php';
$pages['default'] = 'default.php';
$pages['home'] = 'home.php';
$page = '/404.php'
if (isset($pages[$action])) {
$page = $pages[$action];
}

include $con_dir . '/' . $page;

3
ответ дан 12 ноября 2011 в 08:11 Источник Поделиться