note 70224 added to language.oop5
| From: | osculabond at gmail dot com | Date: | Sat, 07 Oct 2006 06:20:16 +0000 |
| Subject: | note 70224 added to language.oop5 | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-118180@lists.php.net to get a copy of this message | ||
A better way to simulate an enum in php5:
<?php
final class Days {
const Sunday = 0x00000001;
const Monday = 0x00000010;
const Tuesday = 0x00000100;
const Wednesday = 0x00001000;
const Thursday = 0x00010000;
const Friday = 0x00100000;
const Saturday = 0x01000000;
const Unknown = 0x00000000;
// ensures that this class acts like an enum
// and that it cannot be instantiated
private function __construct(){}
}
?>
This will allow you to do things like:
<?php
$day_to_email = Days::Thursday;
if($day_to_email == Days::Wednesday) echo "Wednesday<br />";
if($day_to_email == Days::Thursday) echo "Thursday<br />";
if($day_to_email == Days::Friday) echo "Friday<br />";
?>
Which would output:
Thursday
Or if you wanted to get a little fancier you could also do the following:
<?php
$days_to_email = Days::Monday | Days::Wednesday | Days::Friday;
if($days_to_email & Days::Monday) echo "Monday<br />";
if($days_to_email & Days::Tuesday) echo "Tuesday<br />";
if($days_to_email & Days::Wednesday) echo "Wednesday<br />";
if($days_to_email & Days::Thursday) echo "Thursday<br />";
if($days_to_email & Days::Friday) echo "Friday<br />";
?>
Which would output:
Monday
Wednesday
Friday
----
Server IP: 216.194.113.175
Probable Submitter: 24.16.194.153
----
Manual Page -- http://www.php.net/manual/en/language.oop5.php
Edit -- https://master.php.net/note/edit/70224
Del: integrated -- https://master.php.net/note/delete/70224/integrated
Del: useless -- https://master.php.net/note/delete/70224/useless
Del: bad code -- https://master.php.net/note/delete/70224/bad+code
Del: spam -- https://master.php.net/note/delete/70224/spam
Del: non-english -- https://master.php.net/note/delete/70224/non-english
Del: in docs -- https://master.php.net/note/delete/70224/in+docs
Del: other reasons-- https://master.php.net/note/delete/70224
Reject -- https://master.php.net/note/reject/70224
Search -- https://master.php.net/manage/user-notes.php