Sounds to me like aspect-oriented programming, applied to object construction.
Take a look at: https://github.com/AOP-PHP/AOP


2012/9/18 Rasmus Schultz <ras...@mindplay.dk>:
> Hey,
>
> I'm going to make this brief, because I suspect a lot of people are going
> to jump at the opportunity to cry bloody murder when I suggest this.
>
> I wonder if it would make sense to have a way to globally hook into
> __construct() - sort of like how you can hook into the autoloaders with
> spl_autoload_register() ...
>
> This could be useful for things like dependency injection and debugging.
>
> Lithium (for one) uses a unified constructor to accomplish something like
> this:
>
> http://lithify.me/docs/manual/lithium-basics/architecture.wiki
>
> That's bad for various reasons I won't delve into.
>
> Various DI containers use a replacement for the "new" keyword, e.g.
> DI::create('MyClass') which is bad (worse) for other reasons...
>
> So basically, what if you could solve these design patterns by hooking into
> constructors directly instead - something like:
>
> <?php
>> constructor_hook_register(function($object) {
>>   echo 'an object of type '.get_class($object).' was constructed!';
>> });
>> $test = new Foo();
>
>
> would print:
>
> an object of type Foo was constructed!
>
>
> One other area where this could help, is in event-driven systems, where
> this sort of thing could be used for "co-construction".
>
> Of course, you could accomplish the same thing in a more controlled
> fashion, by simply establishing conventions - for example, DI::inject(new
> My Class()) would work just as well, it's just inconvenient to type; on the
> other hand, it's explicit about what's happening.
>
> So I'm not at all demanding this feature - I'm merely posting this for
> debate.
>
> Thanks,
>   Rasmus Schultz

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to