ФорумПрограммированиеPHP для идиотов → Взгляд на админку как часть приложения

Взгляд на админку как часть приложения

  • Абырвалг

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 19 июля 2010 г. 14:04

    Как сейчас:

    # index.php
    // префикс BL, который всех нас достал я опускаю
    include_once 'path/to/loader.php';
    $dirs = include 'config/dirs.php';
    $loader = new Loader($dirs);
    $loader ->register();

    $context = Context::instance()->injectLoader($loader);
    $adminPrefix = $context->get('settings.main.admin'); // админка может по-разному адресу быть расположена: /admin/* , /foo-bar/*

    $appType = stripos($adminPrefix, $context->request()->getUri()) === 0 ? App::BACKEND : App:FRONTEND;
    App::run($appType, $context);


    То есть как вы видите, приложение может быть бекендом или фронтендом. Для этих двух типов свои навешивания на события, шаблоны в разных папках, у контроллеров разные префиксы, совершенно разный роутинг, еще какие-то различные вещи.

    Я тут посмотрел на Мадженту и подумал: а зачем вот так разделять приложение? По сути же админка - тот же фронтенд, разве что выглядит иначе + проверка на вход.


    Вопрос: стоит ли делать такое объединение? Если да, то как отделить стиль для админки от стиля сайта (см. Пакеты дизайна)? Нужно ли отделять события админки от событий фроненда? Когда и где проверять залогинен ли пользователь: по событию preExecute, которое выполняется перед вызовом контроллера?
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 19 июля 2010 г. 14:10, спустя 6 минут 31 секунду

    По сути же админка - тот же фронтенд, разве что выглядит иначе + проверка на вход.

    тут ты прав. у меня тоже нет разделения в коде, есть различия в списке автоматически подгружаемых модулей и все. в админку по дефолту входит модуль авторизация, поэтому она просит пароль. все, профит :)
    Сапожник без сапог
  • Абырвалг

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 19 июля 2010 г. 14:14, спустя 3 минуты 18 секунд

    еще вариант разруливать это на основе chained routes
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 19 июля 2010 г. 14:15, спустя 1 минуту 16 секунд

    Абырвалг, хоть через зад :) лишь бы работало
    Сапожник без сапог
  • Абырвалг

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 19 июля 2010 г. 14:27, спустя 11 минут 58 секунд

    нужно что б было чисто и красиво со стороны архитектуры
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 19 июля 2010 г. 14:31, спустя 4 минуты 35 секунд

    Абырвалг, зачем?
    Сапожник без сапог
  • Абырвалг

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 19 июля 2010 г. 14:37, спустя 5 минут 27 секунд

    ну, блин, если так рассуждать, то можно вообще быдлокодить делать 2 таблицы: админы и пользователи, кучу точек входа (news_add.php, page_delete.php).

    Все должно быть логично, везде нужен здравый смысл.
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 19 июля 2010 г. 14:51, спустя 14 минут

    админы и пользователи

    у меня так :)

    не люблю мешать понятия админа и юзера. ну вот просто не люблю и все :)
    Сапожник без сапог
  • soul

    Сообщения: 790 Репутация: N Группа: Кто попало

    Spritz 3 ноября 2010 г. 7:17, спустя 106 дней 16 часов 26 минут

    я не говорил про то, что нужно админ и юзер часть разделять, точнее говорил, но причина другая. я делаю так, потому что названия совпадают. не делать же файлы stat.controller.php и adminstat.controller.php

    как вы вопрос с названиями решаете?
  • Абырвалг

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 3 ноября 2010 г. 7:23, спустя 5 минут 11 секунд

    как в мадженте примерно:

    code/Module/Blog/Controller/Category
    code/Module/Blog/Controller/Admin_Category
  • master

    Сообщения: 3236 Репутация: N Группа: Джедаи

    Spritz 3 ноября 2010 г. 8:53, спустя 1 час 30 минут 7 секунд

     

    interface RegularModule {
     public function edit($arguments);
    }

    interface AdminModule  extends RegularModule {
     public function drop($arguments);
    }

    class Gallery  implements RegularModule {
     public function __call($name, $arguments)  {
       echo "called nonexistent function '$name'\n";
     }

     public function edit($arguments)  {
       echo "edit\n";
     }
    }

    class GalleryAdmin  extends Gallery  implements AdminModule {

     public function drop($arguments) {
       echo "Oh, no! Don't kill me, sir!\n";
     }
    }

    $arguments = Array( 1, 2, "cat", "dog");
    $metods = Array("edit", "cat/etc/passwd", "drop");

    $class = new Gallery(); echo "Check Gallery class\n";

    foreach ($metods as $method) {
     $class -> $method($arguments);
    }

    $class = new GalleryAdmin();

    echo "Check GalleryAdmin class\n";

    foreach  ($metods as $method) {
    $class -> $method($arguments);
    }


    мопед не мой, но тем не менее
    не всё полезно, что в swap полезло
  • kostyl

    Сообщения: 5203 Репутация: N Группа: Джедаи

    Spritz 3 ноября 2010 г. 12:01, спустя 3 часа 7 минут 58 секунд

    Всё зависит от приложения. Если есть явные админы, то удобно отделить админку, а если просто есть небольшие отличия в групповых правах, то не надо ничего отделять…

Пожалуйста, авторизуйтесь, чтобы написать комментарий!