Re: [RFC] [Vote] Type Guards for Classes
| From: | Casper Langemeijer | Date: | Fri, 17 May 2024 08:34:42 +0000 |
| Subject: | Re: [RFC] [Vote] Type Guards for Classes | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-123329@lists.php.net to get a copy of this message | ||
On Thu, May 16, 2024, at 22:31, Patrik Václavek wrote:
> This feature aims to simplify and standardize the process of verifying that a variable is an
> instance of a specific class, enhancing code readability and reducing boilerplate code.
>
> Currently, in PHP, to ensure that a variable is an instance of a specific class, developers
> need to use the
instanceof operator and manually throw an exception
> if the check fails. This results in repetitive boilerplate code scattered throughout the codebase. A
> new syntax, (ClassName) $variable, is proposed to streamline this
> process by performing an instanceof check and throwing a TypeError
> if the variable is not an instance of the specified class.
I view variables changing types to be an anti-pattern.
Instead if adding type guards, I would rather see this problem solved by having typed local
variables. This ensures that a variable always holds a specific type, avoiding the need of
repetitive scattered type guards. Working with variables would then be the same as working with
class properties. They could be typed or untyped.
Also, I see the need for type guards as a symptom of bad composition. Mostly methods that are too
large would benefit. If a method is decomposed into smaller methods the use of parameter and return
type checks it's unlikely there is need for additional type guards.