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

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

Все теги (7)

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

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

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

    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();
    Ответ написан
  • Как правильно получать данные из БД в стиле MVC?

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

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

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

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

    anton_slim
    @anton_slim
    web разработчик
    Попробуйте воспользоваться вместо функции mail, напрямую на sendmail через сокеты :
    $headers="To: $to\nFrom: $from\nSubject: $subject\n$headers";
        $fp = fsockopen($server, 25, &$errno, &$errstr, 30);
        if (!$fp)
           die("Server $server. Connection failed: $errno, $errstr");
        fputs($fp,"HELO $server\n");
        fputs($fp,"MAIL FROM: $from\n");
        fputs($fp,"RCPT TO: $to\n");
        fputs($fp,"DATA\n");
        fputs($fp,$headers."\n");
        fputs($fp,$this->mime);
        fputs($fp,"\n.\nQUIT\n");
        while(!feof($fp))
          $resp.=fgets($fp,1024);
        fclose($fp);

    в качетсве сервера используйте localhost или 127.0.0.1, если конечно на хостинге настроен sendmail.
    Почитайте на phpclub, там подробно все описано.
    Ответ написан