Re: bikeshed: Typed Aliases

From: 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 [email protected] to get a copy of this message
> On Sep 7, 2024, at 9:28 AM, Rob Landers <[email protected]> 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 <[email protected]> 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 <[email protected]> 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


Thread (25 messages)

« previous php.internals (#125470) next »