Pull to refresh
15
0
Владислав Бакин @mixkorshun

Senior Software Engineer / Technical Lead

Send message

Ну какая-то архитектура должна быть, и формально она будет “эталонной”. Я пытался подчеркнуть, что усложнение и попытка решить все известные проблемы - не лучшая идея. Такая архитектура часто устаревает сразу после запуска новой версии.

Всё так и пункт #2 в целом про это.

Причиной должно быть не отсутствие "модных" технологии или решений, а какие-то серьезные проблемы с дальнейшей разработкой продукта: невозможность реализации какого-то важного функционала, или невозможность вообще поддерживать продукт.

Давайте по порядку:
public function actionGetData($object_type) {
    $model_class = 'Wb' . $object_type . 'Model';
    $model = new $model_class();
    return $model;
}

При нормальном построении кода, такой метод должен возвращать объекты с интерфейсом
Wb\Model\ModelInterface. В таком случае вы можете написать phpDoc комментарий, где укажете названия интерфейса.

Если же не использовать функционал Find Usages в IDE, то обычным поиском по тексту можно найти вхождения полного имени класса(Wb\Model\User). Оно встретится либо в секции uses файла, либо непосредственно в месте использования.
Например с помощью функции Find usages в IDE
Но при этом вы пишете:
Первый вопрос, который часто возникает у разработчиков всевозможных консолей для пользователей — автоматическое завершение сеанса в случае отсутствия активности со стороны пользователя. Нет ничего проще, чем сделать это с помощью встроенных возможностей PHP.

function startSession() {
    // Таймаут отсутствия активности пользователя (в секундах)
    $sessionLifetime = 300;

    if ( session_id() ) return true;
    // Если таймаут отсутствия активности пользователя задан, устанавливаем время жизни сессии на сервере
    // Примечание: Для production-сервера рекомендуется предустановить этот параметр в файле php.ini
    if ( $sessionLifetime ) ini_set('session.gc_maxlifetime', $sessionLifetime);
    return session_start();
}

Это может ввести в заблуждение, что контроль отсутствия активности пользователя можно возложить на garbage collector.
Добавлю, что session.gc_maxlifetime создан не для валидации времени жизни сессии! Это значит, что по истечении данного времени, сессия не обязательно будет удалена.
session.gc_maxlifetime задает отсрочку времени в секундах, после которой данные будут рассматриваться как «мусор» и потенциально будут удалены. Сбор мусора может произойти в течение старта сессии (в зависимости от значений session.gc_probability и session.gc_divisor).
«гарантированно не использует сессию с таким идентификатором» эквивалентно «will be seen as 'garbage'»
«она потенциально может быть удалена» тоже, что и «potentially cleaned up»

У меня складывается такое ощущение, что мы с вами говорим об одном и том же, но никак не можем согласиться друг с другом
session_destroy() так не думает.
Этот параметр отвечает за время, после которого приложение гарантированно не использует сессию с таким идентификатором, а значит она потенциально может быть удалена.(см. документацию)
В том и дело, что бага нет.
Но почему-то люди привыкли, что gc_maxlifetime — это время жизни сессии, хотя это далеко не так
Зачем этот плагин? ведь всё что он делает пишется в течении 2 минут.
Столько же времени я потрачу на поиск плагина

Напомнило http://www.doxdesk.com/img/updates/20091116-so-large.gif
Вы можете вычленить нужные классы из ZF, это не сложно делается.
Также можно взять любую стороннюю библиотеку для работы с Imap, ведь статья не завязана на использовании Zend Framework, она показывает принципы работы GMail.
Хостеру Zend устанавливать не обязательно. Это просто набор PHP скриптов, вы запросто можете скопировать их к себе в проект.
Да и как сказано ниже, никто не мешает использовать только определенные классы ( просто подключив их через include )
Такой таймаут в формате не описан, по этому браузеры отрисовывают его как хотят, а при повторной загрузке изображение берется из кэша

Information

Rating
Does not participate
Date of birth
Registered
Activity

Specialization

Fullstack Developer
Lead
Python
Django
TypeScript
React
GraphQL
Building a team
Agile
Scrum