Re: bikeshed: Typed Aliases
| From: | Mike Schinkel | Date: | Sat, 07 Sep 2024 14:49:47 +0000 |
| Subject: | Re: bikeshed: Typed Aliases | ||
| References: | 1 2 3 4 5 6 7 8 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-125470@lists.php.net to get a copy of this message | ||
> On Sep 7, 2024, at 9:28 AM, Rob Landers <rob@bottled.codes> wrote:
> Keep in mind there is already single-class aliasing with well-known behavior for both local and
> project-wide aliases. Local aliases are done through 'use' statements, and project-wide
> aliases can be created by using the
class_alias() function.
Good point.
While I'd prefer to be able to use a typedef/typealias syntax, I certainly would not bikeshed
over it.
> On Sep 7, 2024, at 9:21 AM, Larry Garfield <larry@garfieldtech.com> wrote:
>> There is definite utility for this, to create a local alias in a
>> namespace that can be used throughout the namespace rather than having
>> to refer to the external namespace in many different places.
>
> Because it quickly can produce nonsensical syntax.
>
> class A {}
> class B {}
>
> typealias AB: A|B;
>
> // This is logically nonsensical.
> class C extends AB {}
Gotcha. That issue had not occurred to me as my use of type aliases is in other languages that do
not have union types. So I was more concerned with this:
namespace A\Really\Long\Namespace {
class A {}
}
namespace My\Current\Namespace {
typedef A: \A\Really\Long\Namespace\A {}
class B extends A {}
}
However, as Rob pointed out there are already ways to accomplish this that I was not thinking of, so
my concern for extends and implements is effectively moot.
> On Sep 7, 2024, at 9:28 AM, Larry Garfield <larry@garfieldtech.com> wrote:
> Methods on typedefs was the sort of "other stuff classes do" that I was trying to
> avoid getting into right now. :-) Mainly because I can totally see how it's tempting, but also
> have no idea what it would mean from a type-theoretic perspective. It would only make sense if
> we're talking type DEFs, not type ALIASes.
That latter sentence is spot-on.
-Mike