Ideally think I'd prefer it finer grained...
interface A
{
}
class AImpl implements A
{
}
register('A', function() { return new AImpl(); });
register('Foo', function() { return new Bar(); });
$foo = new Foo();
$a = new A();
Would also require functions being values... Which would also be nice.
J
> -----Original Message-----
> From: news [mailto:[EMAIL PROTECTED] On Behalf Of Sebastian Bergmann
> Sent: 02 October 2007 10:33
> To: [email protected]
> Subject: [PHP-DEV] Class Posing
>
> From [1]:
>
> Objective-C permits a class to wholly replace another
> class within a
> program. The replacing class is said to "pose as" the target class.
> All messages sent to the target class are then instead received by
> the posing class.
>
> There are several restrictions on which classes can pose:
>
> * A class may only pose as one of its direct or indirect
> superclasses.
>
> [The other restrictions do not apply to PHP]
>
> Earlier this year, Johannes implemented class posing for PHP
> as follows:
>
> <?php
> class Foo {}
> class Bar extends Foo {}
>
> function new_overload($className)
> {
> if ($className == 'Foo') {
> return new Bar;
> }
>
> // ...
> }
>
> $o = new Foo;
> // $o is an object of Foo.
>
> register_new_overload('new_overload');
>
> $o = new Foo;
> // $o is an object of Bar.
> ?>
>
> We (Johannes, Marcus, Sara, and myself) then discussed where
> to put this functionality. Outside of core, there were two
> places that both make
> sense: pecl/operator and pecl/runkit.
>
> However, to make this a viable mechanism that can be used in
> tools such as PHPUnit (for which I could really use this
> functionality), we agreed that it actually belongs into the core.
>
> Opinions? Needless to say that I would love to see this in
> PHP 5.3 ;-)
>
> --
> [1] http://en.wikipedia.org/wiki/Objective_C#Posing
>
> --
> Sebastian Bergmann
> http://sebastian-bergmann.de/
> GnuPG Key: 0xB85B5D69 / 27A7 2B14 09E4 98CD 6277 0E5B 6867
> C514 B85B 5D69
>
> --
> PHP Internals - PHP Runtime Development Mailing List To
> unsubscribe, visit: http://www.php.net/unsub.php
>
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php