TGViewer
Bitrix24 Apps & BITRIX24-PHP-SDK Bitrix24 Apps & BITRIX24-PHP-SDK @bitrix24phpsdk · 153 subscribers
Post #47 304

Forwarded from Сергей Предводителев

🌿 Про статические анализаторы и входящие данные в библиотеках

Использование статических анализаторов существенно повышает качество кода, но при использовании их в библиотеках нужно учитывать один важный нюанс — нельзя доверять типу входящих данных.

В приложении мы можем использовать расширенную типизацию (в случае PHP и Psalm — с помощью аннотаций) для параметров функций, методов, конструкторов классов и быть уверенными, что параметры будут ожидаемых типов (конечно же если не забываем запускать статический анализ, а ещё лучше настроили его в CI).

Например, у нас есть класс, который в конструкторе ожидает массив из объектов и мы указываем это в аннотации:

final class Test {
/**
* @param object[] $objects
*/
public function __construct(array $objects) {
// ...
}
}

При попытке создать объект с аргументами, которые соответствуют типизации языка, но не соответствуют расширенной типизации (например, new Test([1, 2]);), анализатор выдаст ошибку.

Но если тот же самый класс мы решим вынести в библиотеку, то у нас сразу исчезает уверенность, что параметр $objects будет именно массивом объектов. Разработчики, использующие нашу библиотеку:

• могут не использовать статические анализаторы,
• могут использовать другой анализатор.

А это значит, что ошибка будет обнаружена, возможно, не сразу и совсем в другом месте, так как код библиотеки будет работать неожиданным образом.

❗️В библиотеках все входящие параметры нужно проверять и не полагаться на статический анализ.
  • 🔥 1
  • 🤯 1
More from @bitrix24phpsdk
  1. Apr 20, 2026Первый, кто поставит звезду на репозиторий https://github.com/bitrix24/b24phpsdk и пришлет…
  2. Apr 20, 2026🧭 Разбираем современный PHP вместе с Podlodka PHP Crew PHP-стек может устаревать незаметн…
  3. Apr 13, 2026bitrix24-php-lib v0.5.0 🚀 Набор сущностей для разработки приложений Added - Journal bound…
  4. Mar 4, 20260.4.0 🚀 Added - ContactPersons support (main feature of 0.4.0) - Added ApplicationInstall…
  5. Mar 1, 20263.0.0 🚀 Added API v3 support: Tasks & EventLog 🎉 - Added support for Bitrix24 API v3 - A…
  6. Feb 25, 20261.10.1 🚀 Fixed Extend Scope and PortalLicenseFamily enums with new options https://github…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →