• Конфликт одинаковых функций. Как исправить?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    0) "получается ошибка" - плохое описание проблемы. Как минимум нужно писать текст ошибки и строчку.

    1) Могу в режиме телепата предположить что приведенный Вами файл вызывается в цикле для каждой статьи.
    Соответственно у вас получается 2е определение функции format_by_count.
    Вообще лучше никогда не заниматься определением функции в условном блоке, а определять где то выше.
    Локально проблему можно решить
    if (!function_exists("format_by_count")) {
      function format_by_count($count, $form1, $form2, $form3){
        $count = abs($count) % 100;
        $lcount = $count % 10;
        if ($count >= 11 && $count <= 19) return($form3);
        if ($lcount >= 2 && $lcount <= 4) return($form2);
        if ($lcount == 1) return($form1);
        return $form3;
      }
    }
    но это все равно говнокод.

    2) Писать html верстку и php логику в одном файле - дурной тон. Почитайте про mvc какой нибудь.
    Ответ написан
    Комментировать
  • Для какого кол-во классов имеет смысл писать интерфейс?

    jakulov
    @jakulov
    Это больше зависит от контекста задачи.

    Допустим у вас есть класс логгера, который часто используется в других классах.
    Даже если сейчас у вас один класс логгера в проекте - есть смысл создать для него интерфейс.
    Это разумно в контексте использования логгера - он решает чисто свои задачи, слабо связан с логикой других классов. Интерфейс позволяет вам добиться меньшей связности в проекте. Вам будет легко заменить один логгер на другой (при использования Dependency Injection, например).

    Для файл-менеджера, я думаю, это тоже может быть актуально, т.к. типичный менеджер файлов не должен быть тесно связан с логикой других классов и теоретически должен быть заменяем другим классом.
    Ответ написан
    1 комментарий
  • Наследование в ООП - стоит ли широко применять?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    Наследование действительно следует избегать. Вообще, идеально избегать так, будто наследования нет вовсе, будто это чит-код при использовании которого пролетариат убивает котёнка.

    Почему так? Давай-те представим, что мы всё и вся наследуем. Тогда объект будет... Очень ёмким, ведь он связан непосредственным родством со всеми предками (равно как и предки - со всеми наследниками). И связность будет очень и очень сильной, что очень сильно усложнит архитектуру. Чаще намного целесообразнее просто включать объект в класс (агрегировать). Во-первых, это значительно упростит архитектуру. Во-вторых, цепочка конструкторов может быть очень длинной. И лишний раз создавать объект - не лучшая идея. В-третьих, наследованием мы как бы декларируем, что вот этот класс объектов так же является вот этим классом. Далеко не всегда это верно, что в дальнейшем породит множество костылей и боль. Тогда как ошибившись с агрегацией мы всегда сможем в дальнейшем расширить до наследования несколькими изменениями.
    Ответ написан
    1 комментарий
  • Как организовать работу скрипта через определенный период времени?

    @inkvizitor68sl
    Linux-сисадмин с 8 летним стажем.
    cron как раз для этого создан. Например, по понедельникам в 2:03 ночи:
    3 2 1 * * username php /path/to/file.php 1>/dev/null

    Если есть рутовый доступ - то добавьте это в файл /etc/crontab или /etc/cron.d/whatever.
    Если рутового нет, то запустите команду crontab -e и вставьте эту строку в открывшийся файл (из вима выходить с сохранением :wq, если что, а включить режим редактирования - i. Выключить - escape).
    Ответ написан
    Комментировать