• Идет ли какое то нарушение идеологии фреймворка когда у контроллера несколько моделей?

    galk_in
    @galk_in
    Backend Developer
    Мы в своей работе используем следующий элементы:
    Модель
    Репозиторий
    Сервис
    Контролер

    В данном случае я бы использовал Сервис, который работает с репозиториями или моделями.

    PS Вьюшек мы не используем ибо фронтенд сам их строит.
    Ответ написан
    Комментировать
  • Статический или не статический метод?

    AmdY
    @AmdY
    PHP и прочие вебштучки
    Уже 100500 раз писалось, что в laravel статика ненастоящая это фасад построенный на магическом __callStatic, который создаёт объект или дёргает его из IoC. Просто этакий синтаксический сахар. Потому laravel так легко тестировать и эта псевдосостатика ещё и помогает.
    Ответ написан
    Комментировать
  • Какова роль интерфейсов в ООП?

    Приведу пример на коленке. Хотим, например, написать абстрактную файловую систему. Для начала, определим интерфейс, для ФС:

    interface FileSystemInterface {
      public function write($file, $data);
      public function read($file);
    }


    Затем, хочу реализацию интерфейса ФС для работы с файликами:

    class OSFileSystem implements FileSystemInterface {
      public function write($file, $data) {
         // открываем файлик, пишем данные
      }
    
      public function read($file) {
        // открываем файлик, возвращаем данные
      }
    }


    Вдруг, кому-то захотелось файловую систему в облаке. Окей, не проблема, реализуем это:
    class CloudFileSystem implements FileSystemInterface {
      public function write($file, $data) {
         // открываем соединение с облаком, пишем данные
      }
    
      public function read($file) {
        // открываем соединение с облаком, возвращаем данные
      }
    }

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

    class FileStorage {
      protected $Fs;
      
      public function __construct(FileSystemInterface $Fs) {
        $this->Fs = $Fs;
      }  
    
      public function saveFile() {
        $this->Fs->write('file.txt', 'file data');
      }
    
      public function getFile() {
        return $this->Fs->read('file.txt', 'file data');
      }
    }


    Отлично! Теперь мы можем хранилищу файлов отдать любой объект с реализованным интерфейсом FileSystemInterface. Пример:

    // Хранилище файлов работает с файловой системой ОС:
    $FS = new OSFileSystem();
    $FileStorage = new FileStorage($Fs);
    $FileStorage->getFile();
    
    // Хранилище файлов работает с файловой системой в облаке:
    $FS = new CloudFileSystem();
    $FileStorage = new FileStorage($Fs);
    $FileStorage->getFile();


    Использование интерфейса, в данном случае. позволяет нам писать только реализацию работы файловой системы, а бизнес-логика, работающая с файловой системой никак не меняется, она знает, что в любом случае файловая система реализует интерфейс FileSystemInterface и может без опаски использовать методы этого интерфейса.
    Ответ написан
    14 комментариев
  • Почему стали популярны less, sass, ruby on rails, bower, grunt? И зачем они нужны?

    viktorvsk
    @viktorvsk
    Какой ужас. Что в вопросе, что в ответах. С одной стороны, и удалять такие вопросы не нужно. С другой стороны нет никакого механизма здесь, что бы дать понять, где начинается бред.

    Хотел написать много, цитирую как вопрос так и ответы, но передумал.
    Коротко:

    Мои навыки и мои знания позволяют делать красивые и функциональные проекты.

    Совсем не понимаю, оно же ведь неплохо получается и без всяких дополнительных вещей?


    Задумайтесь, делаете ли вы проекты или сайты-визитки, корпоративные сайты, интернет-магазины от $100 за пять рабочих дней ?

    Ознакомиться нужно сначала с:
    www.phptherightway.com
    https://github.com/dypsilon/frontend-dev-bookmarks

    Руби, пхп, питон или ноджс в подавляющем большинстве - неважно. Но вот я отвечал на подобный вопрос про руби и постарался ответить объективно на вопрос о различиях с пхп: PHP+Symfony или Ruby+RoR?

    Если еще короче: раз вы сейчас задаете такие вопросы, значит, не приходилось сталкиваться с задачами, где без этого всего никак. А пока не столкнетесь сами, никто вас "не убедит", что это все необходимо
    Ответ написан
    5 комментариев
  • Аналог TotalCommander'a. Определённый. Платный. Ностальгия?

    iiil
    @iiil
    Инженер и вэб-дизайнер, рисую.
    Это просто как совет, просто в рамках данного вопрос наверное будет актуален: использую дома и на работе clover ( ejie.me ).
    Он просто преобразует родной вид проводника, используя вкладки. Поддерживает многие хоткеи, как в chrome (например, ctrl+shift+t - открытие последней закрытой вкладки), соответственно управление вкладками и так далее. Можно добавлять ярлыки-закладки на панель сверху. Я сейчас использую версию 3.0.286.0, в сети версия есть свежее, но я где-то читал, что она лагает. Та, что использую я, работает отлично, перехватывает все события проводника и открывает во вкладках.
    Реально очень удобно, двойной клик по свободному месту - возврат на уровень выше. Короче, советую попробовать. Систему не грузит.
    Ответ написан
    2 комментария
  • Что быстрее — глобальная переменная или инициализация класса в другом классе?

    @egorinsk
    > Работаю сейчас над проектом который будет работать при высокой нагрузке.
    > Что быстрее — глобальная переменная или инициализация класса в другом классе?

    Боюсь, что вы даже не представляете себе, что такое «высокие нагрузки». Кстати, не думали двойные кавычки заменить на одинарные и сократить имена переменных до 4 букв (чтобы они помещались в 1 регистр процессора)?
    Ответ написан
    Комментировать