On Sat, May 18, 2024, at 11:06 AM, Andreas Heigl wrote:
> Hey all.
>
> Am 18.05.24 um 16:00 schrieb Robert Landers:
>> Hello internals,
>> 
>> I've been thinking about having an "internal" attribute that will emit
>> a warning if called from outside it's left-most namespace.
>> 
>> It might look something like this:
>> 
>> namespace MyCompany\PackageA {
>>    #[\Internal] function doStuff() {}
>> }

*snip*

I think an important question to answer here is what we want to have as our 
definition of "package".

1. Should the package be defined by the namespace? If so, anyone can put code 
into any namespace; it's not even hard to add to someone else's namespace.
2. Should the package be implicit, or explicit?  If it's a namespace, is it 
auto-implicit or an "empty" package?
3. Should package be defined/implied by the file system, like many languages?  
Then we'd need a way to define/declare a package on the file system.  (I have 
some thoughts there.)  But that may run into performance issues, though they 
could be solved by opcache.  This could also make it harder to inject code into 
someone else's namespace.  (Whether that's good or bad is a matter of opinion.)

The proposed attribute would be going with point 2, implicitly.  That may be a 
useful approach, I don't know, but it's not something we should do 
"implicitly", lest it cause issues for us in the future.

--Larry Garfield

Reply via email to