@PHPjedi

А это не говнокодерство?

<?php
/**
 * Created by PhpStorm.
 * User: Ember
 * Date: 8/23/2017
 * Time: 2:47 PM
 */

namespace Controller;


use Model\Pageconfig;

class Site extends \Controller
{

    public function __construct(\Base $f3, $params)
    {
        $pageconfig = new Pageconfig();
        $loaded = $pageconfig->load(['route = ?', $params[0]]);

        switch ($f3->get('FALLBACK')) {
            case 'az':
                $this->setTitle($loaded['title_az']);
                $this->setDescription($loaded['description_az']);
                $this->setBackground($loaded['background']);

                break;
            case 'ru':
                $this->setTitle($loaded['title_ru']);
                $this->setDescription($loaded['description_ru']);
                $this->setBackground($loaded['background']);

                break;

            case 'en':
                $this->setTitle($loaded['title_en']);
                $this->setDescription($loaded['description_en']);
                $this->setBackground($loaded['background']);

                break;

            default:
                $this->setTitle($loaded['title_az']);
                $this->setDescription($loaded['description_az']);
                $this->setBackground($loaded['background']);

                break;

        }

        parent::__construct();
    }

    public function home(\Base $f3) {
        
        $this->setContent('empty.html');
    }

    public function about(\Base $f3) {
        $this->setContent('about.html');
    }

    public function employees(\Base $f3) {
        $this->setContent('employees.html');
    }

    public function certificates(\Base $f3) {
        $this->setContent('certificates.html');
    }

    public function projects(\Base $f3) {
        $this->setContent('projects.html');
    }

    public function gallery(\Base $f3) {
        $this->setContent('gallery.html');
    }

    public function contacts(\Base $f3) {
        $this->setContent('contacts.html');
    }

}


Здравствуйте, я хотел написать автоопределитель заголовка, описания и фона страницы по роуту. Все работает, но тут как то говном запахло... Фу!

Как вы считаете, это нормально что я в конструкторе класса написал такое ?

FALLBACK - это язык приложения использованный в данный момент.
PARAMS - это роуты, а [0] - возвращает что то типа /home, /about

Как можно реализовать это аккуратно, и без говнокода, костылей и т.д. ?
Спасибо большое!
  • Вопрос задан
  • 551 просмотр
Решения вопроса 2
Rastishka
@Rastishka
Есть же https://github.com/xfra35/f3-multilang - не смотрели?
Ответ написан
Комментировать
@kmg4e
Незначительно говнокодно.
Если вы точно уверены, что ваш сайт не нужно будет гибко менять потом - вполне годится.
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
index0h
@index0h
PHP, Golang. https://github.com/index0h
Читаем про PSR, так же SOLID, так же Попросили проверить код, на что смотреть нужно?
<?php
/**
 * Created by PhpStorm.
 * User: Ember
 * Date: 8/23/2017
 * Time: 2:47 PM
 */
// ^^^^ Этот коментарий конечно же дофига полезный, но удалите его, он не нужен

namespace Controller;


use Model\Pageconfig; // Use CamelCase Luke!

class Site extends \Controller // Не используйте такие абстрактные названия
{
// \Base - замечательное название, ясно понятно, что оно делает))
// $f3 - а почему не f12?
// $params - юзайте DTO
    public function __construct(\Base $f3, $params)
    {
// Эээ... Это что роутер что ли?
        $pageconfig = new Pageconfig();
// а что будет, если $params = new \Exception() ?
        $loaded = $pageconfig->load(['route = ?', $params[0]]);

// В константы
        switch ($f3->get('FALLBACK')) {
// Вообще говоря для переводов давно придуманы PO файлы, юзайте на здоровье
            case 'az':
// Что будет, если такого ключа нет?
                $this->setTitle($loaded['title_az']);
                $this->setDescription($loaded['description_az']);
                $this->setBackground($loaded['background']);

                break;
//...
        }

        parent::__construct();
    }

    public function home(\Base $f3) {
// setContent по идее вставляет контент, а не название файла, не путайте людей!
        $this->setContent('empty.html');
    }

//...
}
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Зачем вообще switch-case, если у вас все параметры - одинаковые для всех языков?
Строки-то - они в переменных массива)
Ответ написан
mmmaaak
@mmmaaak
Когда будет десятка полтора вариантов в свиче, тода напишите вопрос сюда ещё раз
Ответ написан
Комментировать
@artemmityushov
Для начала стоит правильно спроектировать пути роутов, вынести языки локализации в параметры роутов, тогда избавитесь от проблем и говнокода.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы