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