1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Пишу CMS c LK, прошу критики

Тема в разделе "Оффтопик", создана пользователем Vasilisk, 22 сен 2016.

  1. Автор темы
    Vasilisk

    Vasilisk Активный участник Пользователь

    Баллы:
    88
    Имя в Minecraft:
    Vasilisk
    Практикуюсь в PHP. Посмотрите, выскажитесь, предложите поправки и что почитать. Интересная ли вообще идея и если доделать, будет ли спрос.
    П.С. ЛК потом на RCON переведу. Вообще пытаюсь по telnet сделать, но не получается законектится к серверу, авторизацию не проходит.
    Вот пример кода (приму всю критику):
    Снимок.PNG
    Снимок1.PNG
    demo движка (разнообразных проверок пока нет)
    http://178.49.236.138/index.php
    П.С. Форум и сервер "BIO" не тыкайте, данных модулей еще нет.
     
  2. Negezor

    Negezor Активный участник Пользователь

    Баллы:
    78
    Трэш, трэш и ещё раз трэш...
    Что это за контролеры внутри которых модели и вид?
    2k16 на дворе нахрен PDO лучше будет делать свой трэш ибо зачем плейсхолдеры
    PHP:
    $stmt $pdo->prepare('SELECT id,name FROM product_... LIMIT :offset, :limit');
    $stmt->execute([
    'offset' => $to,
    'limit' => $limit
    ])
    $this->view $stmt->fetchAll();
    Да и вообще зачем ты юзаешь Singleton патерн ради такого, Dependency Injection нужен...
    А так же где сеттеры и геттеры? getView, setView
    Нету единой точки входа это вообще отдельная история, пытаешься сделать MVC?
    Так ты уже провалился ибо ибо если судить по коду namespace есть, а use App\...; нету
    Использовать напрямую $_GET,$_POST, $_REQUEST, $_COOKIE зашквар.
    Если используешь их то будь добр фильтруй (filter_input) их и не доверяй cookie их можно заменить.
    Да и вообще PSR-7 не для красивого словца придумали... Подключай composer и папку vendor и устанавливай:
    Код:
    composer install guzzlehttp/psr7
    
    Так же лучше используй название переменных camelCase такого вида $userDataFronted
    Namespace и классы должны начинать с большой буквы пример
    PHP:
    namespace App\Models;

    class 
    Blog {...}

    /* ... */

    user App\Models\Blog as Model;

    $model = new Model($di);
    Условия проверки что за не читаемые?
    PHP:
    /* Bad */
    if(...){

    }

    /* Good */

    if (...) {

    }
    Дели логику своего приложения как надо! Простой пример логики приложения.
    PHP:
    /* App/Models/Blog.php */

    namespace App\Models;

    use 
    Src\Mvc\Model;

    use 
    Src\Orm;

    class 
    Blog extends Model {
      
    /**
       * Получает записи с базы
       *
       * @param integer $id
       *
       * @return array
       */
      
    public function getData ($id) {
        return (new 
    Orm)->find($id)->fetch();
      }

      
    /**
       * Получает записи с базы
       *
       * @param integer $id
       * @param array    $data
       *
       * @return array
       */
      
    public function getData ($id,$data) {
        return (new 
    Orm)->find($id)->save($data);
      }
    }

    /* App/Controllers/Blog.php */

    namespace App\Controllers;

    use 
    App\Models\Blog as Model;

    use 
    Smarty;

    class 
    Blog {
      
    /**
       * Конструктор
       */
      
    public function __construct () {
        
    $this->model = new Model;
      }

      
    /**
       * Основной метод example.loc/blog/index или просто /blog
       */
      
    public function index () {
        
    $view = new Smarty();

        
    $view->dispay('blog/index.tpl');
      }

      
    /**
       * Показывает полную версию поста example.loc/blog/view/{id}
       *
       * @param integer $id
       */
      
    public function view ($id) {
        
    $view = new Smarty();

        
    $posts $this->model->getData($id);

        
    $view->assign('posts',$posts);
        
    $view->dispay('blog/index.tpl');
      }

      
    /**
       * Сохраняет пост example.loc/blog/save/{id}
       *
       * @param integer $id
       */
      
    public function view ($id) {
        
    $view = new Smarty();

        
    $user $this->di->get('Auth.User');

        if (!
    $user->isAdmin()) {
           return 
    $view->display('blog/notAccess.tpl');
        }

        
    $data $this->request->getParsedBody();

        
    $this->model->saveData($id,$data);

        
    $view->dispay('blog/save.tpl');
      }
    }
    upload_2016-9-23_13-25-26.png
     
  3. Автор темы
    Vasilisk

    Vasilisk Активный участник Пользователь

    Баллы:
    88
    Имя в Minecraft:
    Vasilisk
    1) Про PDO принял, почитаю
    2)Единая точка входа есть, я же только 2 файла скинул... use App\...; заменено на new \app\Login;
    3) Переменные фильтруются, но здесь в этом нет необходимости, ведь только проверяется их существование. В общем про filter_input понял, разберусь.
    4) Куки шифруются. Через них в данном случае передается id пользователя на сайте VK. Так наверное не следует делать, но новый запрос id займет много времени... в общем фиг знает...
    5) PSR-7 прочел про него статью, что-то я не понял смысл его использования для GET и POST... Не сильно ли много доп кода для запроса? И что-то не нашел руководства на русском нормального, непонятно (
    6) Про стиль верблюда знаю, но фантазии не хватает такие имена переменным пачками придумывать ( В общем исправлю.
    7) По мне, так наоборот более читаемые, раздражает растягивание текста. Вроде как мелочь же.
    9) Логика такова: Главный класс перенаправляет на классы контроллеры в зависимости от запрашиваемого адреса. Т.е. на каждый модуль свой адрес, свой класс. Классы контроллеры уже подключают необходимые скрипты.
    Снимок.PNG
    10) Меня мой редактор более чем устраивает.
    Если есть время, могу весь код скинуть. Большое спасибо за критику, буду исправляться.
     
  4. Negezor

    Negezor Активный участник Пользователь

    Баллы:
    78
    Код роутера в студию.
    Бесполезное занятие
    Есть смысл, взять один из плюсов единое API например если нужен http клиент guzzle или другие модули которые используют PSR-7...
    Тебя бы тапками закидали сказал бы ты на форуме девелоперов)
    Неверно, как у тебя управляются URL-ы? Вот скажем в моей и многих других реализациях идёт URI через site.loc/controller/action/params1/params2/paramsN и т.д. А так же возможны сами GET параметры.
    Могу многое что высказать стаж большой.
     
  5. Автор темы
    Vasilisk

    Vasilisk Активный участник Пользователь

    Баллы:
    88
    Имя в Minecraft:
    Vasilisk
    Снимок.PNG
     
  6. MrTrojan

    MrTrojan Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    BlackTrojan
  7. Автор темы
    Vasilisk

    Vasilisk Активный участник Пользователь

    Баллы:
    88
    Имя в Minecraft:
    Vasilisk
    А поточнее? Свои функции выполняет на все 100%. А номера страниц и т.д. через GET передается.
    Когда просишь обоснованной критики по коду...
     
  8. Negezor

    Negezor Активный участник Пользователь

    Баллы:
    78
    Вот будет такая ситуация что юзер введёт адрес /App вместо /app и твой роутер даст 404 страницу.
    Уверенность что ты правильно написал URI без ошибки совершенно нету... Регулярные выражения? Пфф идиотский вопрос... А был бы скажем PSR-7 это было бы гораздо удобнее сделать...
    А самое главное то забыл, твоё приложение напрочь отвергает REST API!
    А насчёт SEO будут меньше поисковые боты обращать внимания.
     
  9. Автор темы
    Vasilisk

    Vasilisk Активный участник Пользователь

    Баллы:
    88
    Имя в Minecraft:
    Vasilisk
    1) ммм... mb_strtolower?
    2) мне не нужен REST API
    3) Так лучше?
    Снимок.PNG
     
    Последнее редактирование: 26 сен 2016
  10. Negezor

    Negezor Активный участник Пользователь

    Баллы:
    78
    Угу удачи, понадобится не стандартный URL и тут твоя система в пролёте
    Отговорки что бы не писать нормальный код
    Всё ещё ужасно, зачем эта лишняя вложенность?
    PHP:
    if ($row['login' !== 0]) {
      return 
    $row['login'] = 0;
    }

    return [
       
    'login' => $row['login'],
       
    'money' => $row['money'],
    ];
    Использовать одни статические классы... Просто убиваешь ООП, а дебажить такое так это вообще вершина айсберга.
     
    Последнее редактирование: 27 сен 2016
  11. Автор темы
    Vasilisk

    Vasilisk Активный участник Пользователь

    Баллы:
    88
    Имя в Minecraft:
    Vasilisk
    Авторизация через ВК
    Снимок.PNG
    Проверяет наличие id пользователя ВК в бд сайта, если такой есть, то обновляет данные из ВК и генерирует разовый хэш для авторизации через куки. Если нет, то шифрует id с сайта ВК и передает его в класс регистрации через куки.
     
  12. Negezor

    Negezor Активный участник Пользователь

    Баллы:
    78
    У Ж А С Н О!
    K P A C U B O
    Разве так сложно изучить модели и не путать с контроллерами?
    Ты используешь namespace но чёт этого не видно кроме namespace app; ...
    Снова лишняя вложенность...
    Как ты вообще можешь читать этот код? Я уже чисто от вида отступов охреневаю...
    1 ООП из 10
     

Поделиться этой страницей