Hey NikiC, On Mon, Jun 14, 2021, 16:35 Nikita Popov <nikita....@gmail.com> wrote:
> Hi internals, > > With the introduction of enums, it's now possible for constants to hold > objects. However, this works only when using the `const X = Y` syntax, not > when using `define('X', Y)`, which still excludes objects. > > I've submitted https://github.com/php/php-src/pull/7149 to relax the > restriction. This means that define() would accept everything apart from > recursive arrays. > > An alternative here would be to allow define() to only accept enum objects > in particular, but not other objects. I would prefer not to do that, as > such a restriction would be rather arbitrary, now that the technical work > to support objects has been done. (PS: Please keep the difference between > mutability and interior mutability in mind.) > I rarely encounter any code using `define()` for anything more than extremely minimal environment details these days, and even then, it usually leads to loading an immutable `Environment` object that is then passed through dependency injection (container or not) to runtime services. What are the possible use-cases for this, besides enumeration types? >