Re: RFC: Custom Factories (SPL)
| From: | Eloy Bote Falcon | Date: | Wed, 18 Nov 2009 17:41:28 +0000 |
| Subject: | Re: RFC: Custom Factories (SPL) | ||
| References: | 1 2 3 4 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-46087@lists.php.net to get a copy of this message | ||
2009/11/18 Mathieu Suen <mathieu.suen@easyflirt.com>
> Etienne Kneuss a écrit :
>
> Hello,
>>
>> On Wed, Nov 18, 2009 at 5:54 PM, Mathieu Suen <mathieu.suen@easyflirt.com
>> >wrote:
>>
>> Robert Lemke a écrit :
>>>
>>> Hi folks,
>>>
>>>> after discussing the idea with various PHP developers I now felt safe
>>>> enough that it's not a completely stupid idea to post an RFC for it. The
>>>> idea is to add support the registration of custom factories which are
>>>> responsible for instantiating certain classes.
>>>>
>>>> Here is the first draft of my RFC:
>>>> http://wiki.php.net/rfc/customfactories
>>>>
>>>> I suggest that we first discuss the implications and usefulness of this
>>>> feature. In a second step I'd need to find some skilled internals wizard
>>>> who
>>>> can implement it, because not being a C developer myself, all I can
>>>> offer is
>>>> making suggestions and fine coffee.
>>>>
>>>> Looking forward to hearing your comments!
>>>> Robert
>>>>
>>>>
>>>> An other way maybe to allow this:
>>>
>>> $email = new $emailClassName();
>>>
>>>
>>>
>>> This is already allowed.
>>
>> Best,
>>
>>
>
> Right!!
> I get confused with:
> $classNamme::getInstance();
>
> So you can easily inject dependency:
>
> class Foo {
>
> protected $emailer;
>
> public function __construct($emailClass) {
> $this->emailer= $emailClass;
> }
>
> public function bar() {
> // $email = new $this->emailer(); Of course not allowed
> $emailer = $this->emailer;
> $email = $emailer();
> // ...
>
> }
> }
>
> -- Mathieu Suen
>
Well, $email = new $this->emailer(); it's allowed too, and behaves as
expected since FOO::emailer it's a string.
Reagards,
Eloy Bote.