Re: Re: Enforce a constant in a class.

From: Date: Mon, 25 Jan 2010 10:36:52 +0000
Subject: Re: Re: Enforce a constant in a class.
References: 1 2 3  Groups: php.general 
Request: Send a blank email to php-general+get-301406@lists.php.net to get a copy of this message
Richard Quadling wrote:
2010/1/22 Pete Ford <pete@justcroft.com>:
IMHO, a constant is not the correct beastie in this case - if you want it to be different depending on the implementation then it ain't a constant! You should probably have protected static variables in the interface, and use the implementation's constructor to set the implementation-specific value (or override the default) interface SetKillSwitch {
       protected static $isSet = TRUE;
       protected static $notes;
       protected static $date = '2010-01-22T11:23:32+0000';
} class KilledClass implements SetKillSwitch {
       public function __construct()
       {
               self::$isSet = FALSE;
               self::$date = '2010-01-21T09:30:00+0000';
               self::$notes = "Test";
       }
} Cheers Pete Ford
And of course, "Fatal error: Interfaces may not include member variables".
Ooops, sorry :) I tend to end up using abstract base classes rather than interfaces for that sort of reason...

« previous php.general (#301406) next »