empty is as widely used as dangerous. Per the php.net manual and our coding conventions, empty should only be used when the target may be unset, to suppress errors. Otherwise, a simple boolean cast is enough.
Given how hard is to determine whether a variable is set, this should be implemented within phan. I opened an upstream task for it, https://github.com/phan/phan/issues/3167. If an upstream rule is added, we must make sure to enable it in our config.