@Pete just FYI, PSR-1 excludes that such a logic should exist in a loaded
file:

https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-1-basic-coding-standard.md#23-side-effects

Not sure if you are interested in following the FIG on these ideas, but the
guideline makes actually sense.


Marco Pivetta

http://twitter.com/Ocramius

http://ocramius.github.com/


On 22 January 2013 16:39, <nat...@starin.biz> wrote:

> I am actually going to +1 this idea I thought about discussing it, but
> opted out of it because classes are most often in their own file and if you
> need to do some static binding you can do it at the end of the file after
> the class definition. However, I do believe this idea would make it easier
> to extend classes and make the code look much cleaner.
>
> @Johannes In your example I'd say it would be ADBCE because I would say it
> should work like as if you had each one in it's own file autoloading them.
> (also I believe the function would be static)
>
> One of the potential problems I can see is the visibility
> (public/private/protected) of the function as it'd likely need to be public
> because it could never be auto-executed if anything else.
>
> Software Developer
> Nathan Bruer
>
> -----Original Message-----
> From: Johannes Schlüter [mailto:johan...@php.net]
> Sent: Tuesday, January 22, 2013 7:04 AM
> To: Pete Boere
> Cc: internals@lists.php.net
> Subject: Re: [PHP-DEV] __init magic method
>
> Hi,
>
> On Tue, 2013-01-22 at 12:29 +0000, Pete Boere wrote:
> > Has there ever been any discussion on an __init magic method for
> > bootstraping static properties on class load?
>
> Adding an __init method as you wish will just add complexity and gain very
> little. What complexity am I talking about? Well look at this single file:
>
>    <?php
>    class A {
>        public function __init() { echo __CLASS__; }
>    }
>    class B extends D {
>        public function __init() { echo __CLASS__; }
>    }
>    class C {
>        public function __init() { echo __CLASS__; }
>    }
>    class D {
>        public function __init() { echo __CLASS__; }
>    }
>    class E {
>        public function __init() { echo __CLASS__; }
>    }
>    ?>
>
> What should this print? ABCDE? Then the derived class B is initialized
> before the base class D, which might have strange effects and make
> debugging hard. So maybe it is ACDEB? This makes the resolution quite
> complicated.
>
> On the other hand: You are showing a goos solution, which is clear and
> works well. PHP has the global scope, we don't force everything into
> classes and then create Java-style static{}-madness.
>
> johannes
>
>
>
> --
> 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
>
>

Reply via email to