Req #62860 [Com]: Moar magic methods! __constructStatic(), __getStatic(), __setStatic(), __get

From: Date: Wed, 05 Sep 2012 15:06:06 +0000
Subject: Req #62860 [Com]: Moar magic methods! __constructStatic(), __getStatic(), __setStatic(), __get
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-173196@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=62860&edit=1

 ID:                 62860
 Comment by:         matthew dot bonner at gmail dot com
 Reported by:        michaelduff2 at yahoo dot com
 Summary:            Moar magic methods! __constructStatic(),
                     __getStatic(), __setStatic(), __get
 Status:             Open
 Type:               Feature/Change Request
 Package:            *General Issues
 PHP Version:        Irrelevant
 Block user comment: N
 Private report:     N

 New Comment:

The additional magic methods with static support have been requested over and over for well over 5
years now. Is PHP a dying language because the developers don't have the time to provide
essential functionality?

There are so many hacks going about now to try and provide essential functionality and there is so
much messy code all over the place to support what should be part of PHP 5 as standard.

Sorry for my raving and ranting but the reputation of PHP is being severely damaged by not providing
the essentials.

.NET has static accessor and mutator support, Java does too. All the big languages do apart from
PHP.

class PLEASE_SUPPORT_AT_A_MINIMUM {
  public static function __construct () {}
  public static function __set ($propertyName, $propertyValue) {}
  public static function __get ($propertyName) {}

  public function setConstDynamically () {
    const Foo = 'foo';
    echo self::Foo;
  }
}

Otherwise I will fork PHP and provide this essential functionality myself which will ultimately
result in the death of the original PHP.


Previous Comments:
------------------------------------------------------------------------
[2012-08-18 20:03:22] michaelduff2 at yahoo dot com

Description:
------------
__constructStatic() - executed automatically on class definition

__getStatic() - executed when ClassName::$inaccessible_property is fetched

__setStatic() - executed when ClassName::$inaccessible_property is modified


The particular use case I have for this is self-loading configuration registry singletons:

<?php7

namespace Company;

class Config
{
    protected static $settings;

    function __constructStatic($property)
    {
        static::$settings = parse_ini_file('config.ini');
    }

    function __getStatic($property)
    {
        return static::$settings[$property];
    }
}

echo Config::$DB_USER;

?>

Currently, I accomplish this with __callStatic() which needs the extra open-close parenthesis. 
Ideally, we could get rid of the '$' too, but that would need some __getConst() magic,
which is just madness.



------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=62860&edit=1


Thread (11 messages)

« previous php.bugs (#173196) next »