Re: [RFC:generics]
| From: | Larry Garfield | Date: | Wed, 20 Apr 2016 15:12:31 +0000 |
| Subject: | Re: [RFC:generics] | ||
| References: | 1 2 3 4 5 6 7 8 9 10 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-92548@lists.php.net to get a copy of this message | ||
On 4/20/16 10:01 AM, Rowan Collins wrote:
guilhermeblanco@gmail.com wrote on 20/04/2016 03:54:I'm not an expert in generics by any means, but how is that different than just public function __construct(Boxable $t) {} I thought the point of generics was for cases like "these two variables must be the same type, but they can be any same type." -- --Larry Garfield1- Even though mentioned, I'd still use "extends" or "implements" instead of "is" (which would be a new pseudo-reserved keyword) to enforce data type consistency and prevent developers to potentially referring to one thing while consider another.Perhaps "instanceof" would make more sense here? "class FileProcessor<T extends FileHandle>" seems to exclude instantiating FileProcessor<FileHandle>, because "FileHandle extends FileHandle" doesn't make any sense. You could read "class Box<T instanceof Boxable>" as an assertion that the class passes the constraint, as in "public function __construct(T $t) { assert($t instanceof Boxable); }" Regards,