Изучаю все что связано с Web и it технологиями с 16 лет
Контакты

Наибольший вклад в теги

Все теги (8)

Лучшие ответы пользователя

Все ответы (11)
  • Где можно фрилансить без лишних затрат?

    anton_slim
    @anton_slim
    web разработчик
    Здравствуйте, всем PHP программистам предлагаю сотрудничество без всяких фриланс бирж с непонятными заказчиками, а простое и понятное сотрудничество. У меня полно заказчиков и полно задач на php, html, js, css разного вида сложности, от джуниоров до профи.
    Я сам являюсь преподавателем в школе программирования, и обучаю джуниоров для последующей стажировки на свои проекты. К сожалению из 200 студентов до конца доходят десятки, поэтому отбор жесткий и беру в свою команду я не всех.
    Гарантирую высокую оплату и колоссальный опыт тому, с кем мы сработаемся. Если интересно, обращайтесь.
    Ответ написан
    1 комментарий
  • Ошибка при запуске MariaDB после переноса datadir с HDD на SSD. В чём может быть дело?

    anton_slim
    @anton_slim
    web разработчик
    Примонтируй ssd в другую директорию НЕ /home, у mysql сервиса стоит защита на запуск в /home.
    Либо можно прибиндить директорию и не трогать конфиги:
    mount --bind /home/ssd/mysql /var/lib/mysql

    У меня была такая же проблема, яндекс выдал тему в stack overflow которая мне помогла
    Ответ написан
    1 комментарий
  • Проектирование веб-программы, правильно ли я сделал?

    anton_slim
    @anton_slim
    web разработчик
    В абстрактном классе обязательно должен быть объявлен хотя бы один абстрактный метод и возможно какие то общие методы для всех потомков (любой области видимости public, protected, private). У интерфейса могут быть объявлены только публичные методы.
    Соответственно судя из вашей логики абстрактного класса, вам нужно все методы сделать
    abstract public function без тела и сам класс объявить как abstract class AbstractTasksManager

    Соответственно ваш код примет примерно такой вид:
    <?php
    
    interface TasksManagerInterface 
    {
    	public function find(TaskInterface $task);
    	public function create(TaskInterface $task);
    	public function update(TaskInterface $task);
    	public function delete(TaskInterface $task);
    }
    
    interface TaskInterface 
    {
        public function find(TaskInterface $task);
        public function create(TaskInterface $task);
        public function update(TaskInterface $task);
        public function delete(TaskInterface $task);
    }
    
    
    abstract class AbstractTask implements TaskInterface
    {
        protected function _commonTask() {
            // какой то общий метод для всех потомков AbstractTask
        }
    
        abstract public function find(TaskInterface $task);
    
        abstract public function create(TaskInterface $task);
    
        abstract public function update(TaskInterface $task);
    
        abstract public function delete(TaskInterface $task);
    }
    
    abstract class AbstractTasksManager implements TasksManagerInterface
    {
        protected function _commonTasksManager() {
            // какой то общий код для всех потомков AbstractTasksManager
        }
    
        abstract public function find(TaskInterface $task);
    
        abstract public function create(TaskInterface $task);
    
        abstract public function update(TaskInterface $task);
    
        abstract public function delete(TaskInterface $task);
    }
    
    
    
    class Task extends AbstractTask implements TaskInterface
    {
        public function find(TaskInterface $task)
        {
            /** Внедрить метод find в TasksManager правильно?
             * Или он должен быть в отдельном классе?
             * Метод find использует скоупы Yii2
             */
    
            // можно вызывать
            $this->_commonTask();
        }
    
        public function create(TaskInterface $task)
        {
            /** Содержимое метода */
        }
    
        public function update(TaskInterface $task)
        {
            /** Содержимое метода */
        }
    
        public function delete(TaskInterface $task)
        {
            /** Содержимое метода */
        }
    }
    
    class TasksManager extends AbstractTasksManager implements TasksManagerInterface
    {
        public function find(TaskInterface $task)
        {
            /** Внедрить метод find в TasksManager правильно?
             * Или он должен быть в отдельном классе?
             * Метод find использует скоупы Yii2
             */
    
            // можно вызывать
            $this->_commonTasksManager();
        }
    
        public function create(TaskInterface $task)
        {
            /** Содержимое метода */
        }
    
        public function update(TaskInterface $task)
        {
            /** Содержимое метода */
        }
    
        public function delete(TaskInterface $task)
        {
            /** Содержимое метода */
        }
    }
    $task = new Task();
    $taskManager = new TasksManager();
    Ответ написан
    3 комментария
  • Как правильно получать данные из БД в стиле MVC?

    anton_slim
    @anton_slim
    web разработчик
    По мне, лучше использовать отдельные модели независимые ни от ActiveRedord ни от mysql и чего-либо другого.
    Это позволит внедрить свой определенный формат запроса к модели независимо от того какая БД используется.

    К примеру решил ты перейти на другую базу, например redis, тогда тебе придется переписывать все контроллеры.
    А так тебе достаточно будет переделать модель usersModel под новую БД и вуаля все будет работать.
    Твои контроллеры не должны знать как и откуда модель получает данные, но контроллеры должны знать четко в каком формате передавать в модель параметры.
    Ответ написан
    Комментировать
  • Как далеким от программирования основателям найти ведущего разработчика в стартап?

    anton_slim
    @anton_slim
    web разработчик
    Как далеким от программирования основателям найти ведущего разработчика в стартап?

    Я думаю, что основной критерий должен быть в совместимости на уровне общения и знаний, берете человека на испытательный срок, и через 2 недели вам станет все ясно и понятно, сможете ли вы сработаться, сможет ли этот чел поднять ваш проект с колен, заодно увидите амбиции и ответственность, а угадать с первого раза того, кого вы ищите это очень маловероятно, даже тем кто в программировании шарит.
    Все познается на практике, начните практиковаться, ищите и нанимайте лучших из того кто вам подошел...
    Ответ написан
    1 комментарий