• Как разбить большую функцию на несколько мелких?

    Adamos
    @Adamos
    Архитектура измеряется не длиной функций, а их назначением. Функция, выполняющая ровно одну задачу, обычно и не будет длинной.
    Подойдите к вопросу со стороны тестирования. Вас устроит тест этой функции как единого черного ящика? Или у нее есть конкретные части, которые выполняют полноценные подзадачи, под которые хорошо бы иметь отдельный тест на случай, если в функции будут изменения? Если нет и у вас просто однородная простыня - разбивать незачем. Если есть - почему нет?
    Ну, а если вас смущает накопление никому больше не нужных функций - вспомните, что в РНР есть ООП и все это может быть собрано в класс, а нигде больше не используемые функции - сделаны приватными.
    Ответ написан
    Комментировать
  • Как разбить большую функцию на несколько мелких?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Откройте для себя namespace.

    Никогда не делайте префиксы функций, а то будет вот такое говно `syn_whitelabel_form_whitelabel_partner_node_form_alter()` (это реальный код).

    Освойте ООП в конце концов. Собирайте свои функции внутри одного функционального домена в один класс.
    Если функция внутренняя объявляйте ее приватной и вызывайте через `self::`.

    По поводу проверки параметров - PHP позволяет объявлять типы параметров, например array или классы. Во многих случаев этих вещей достаточно.

    Разбивать большие функции на мелкие нужно тогда, когда действие повторяется хотя бы один раз или может быть использовано другой частью проекта.
    Типичный пример - валидаторы, они могут быть использованы повсеместно.
    Ответ написан
    Комментировать
  • Какой механизм использовать для отмены действия?

    Denormalization
    @Denormalization
    В laravel стоит использовать очереди с отложенным исполнением https://laravel.com/docs/5.3/queues#delayed-dispatching
    Ответ написан
    Комментировать
  • Как сделать переключение версий php?

    @DenisDangerous Автор вопроса
    В общем решил проблему сам

    /etc/apache2/mods-enabled/fastcgi.conf
    <IfModule mod_fastcgi.c>
     AddType application/x-httpd-php5 .php
     Action application/x-httpd-php5 /php-fcgi5
     AddType application/x-httpd-php7 .php
     Action application/x-httpd-php7 /php-fcgi7
    
    
    # PHP5
     Alias /php-fcgi5 /usr/lib/cgi-bin/php5-fcgi
     FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -appConnTimeout 10 -idle-timeout 250 -socket /var/run/php5-fpm.s$
    
    # PHP7
     Alias /php-fcgi7 /usr/lib/cgi-bin/php
     FastCgiExternalServer /usr/lib/cgi-bin/php -appConnTimeout 10 -idle-timeout 250 -socket /run/php/php7.0-fpm.sock $
    
    # Apache 2.4+
     <Directory /usr/lib/cgi-bin>
      Require all granted
     </Directory>
    #
    </IfModule>


    а далее в настройках хоста или в htaccess пишем
    <FilesMatch "\.php">
    SetHandler application/x-httpd-php5
    </FilesMatch>


    или

    <FilesMatch "\.php">
    SetHandler application/x-httpd-php7
    </FilesMatch>
    Ответ написан
    Комментировать
  • Что такое такое rest api?

    @eandr_67
    web-программист (*AMP, Go, JavaScript, вёрстка).
    API социальных сетей - это вполне типичные примеры реализации REST API.

    REST (RESTful) - это общие принципы организации взаимодействия приложения/сайта с сервером посредством протокола HTTP. Особенность REST в том, что сервер не запоминает состояние пользователя между запросами - в каждом запросе передаётся информация, идентифицирующая пользователя (например, token, полученный через OAuth-авторизацию) и все параметры, необходимые для выполнения операции.

    Всё взаимодействие с сервером сводится к 4 операциям (4 - это необходимый и достаточный минимум, в конкретной реализации типов операций может быть больше):
    1. получение данных с сервера (обычно в формате JSON, или XML)
    2. добавление новых данных на сервер
    3. модификация существующих данных на сервере
    4. удаление данных на сервере

    Операция получения данных не может приводить к изменению состояния сервера.

    Для каждого типа операции используется свой метод HTTP-запроса:
    1. получение - GET
    2. добавление - POST
    3. модификация - PUT
    4. удаление - DELETE

    Т.е. :

    GET-запрос /rest/users - получение информации о всех пользователях
    GET-запрос /rest/users/125 - получение информации о пользователе с id=125
    POST-запрос /rest/users - добавление нового пользователя
    PUT-запрос /rest/users/125 - изменение информации о пользователе с id=125
    DELETE-запрос /rest/users/125 - удаление пользователя с id=125
    Ответ написан
    20 комментариев