Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP Constant Conventions

Greetings StackOverflow

I'm doing some house cleaning and thought I would ask for some suggested practices in PHP as I re-factor my classes. In particular, I have some class constants which fall into categories and I would like to know some good ways to group the ones which share a common purpose.

An Example:

class MySquare {
  // Colors
  const COLOR_GREEN = "green";
  const COLOR_RED = "red";

  // Widths
  const WIDTH_SMALL = 100;
  const WIDTH_MEDIUM = 500;
  const WIDTH_BIG = 1000;

  // Heights
  const HEIGHT_SMALL = 100;
  const HEIGHT_MEDIUM = 300;
  const HEIGHT_BIG = 500;
}

Obviously this works, but it seems like there are probably plenty of options when it comes to grouping related constants, and I bet this is inferior to most. How would you do it?

like image 583
slifty Avatar asked Feb 25 '23 04:02

slifty


1 Answers

There are many PHP Conventions, and all of them contradict. But I do use a similar notation, although I like to group the constants per class, so I would have a class Height (or MySquare_Height) which has the constants. This way, I can use it as a kind of Enum like you got in other languages. Especially when you use an editor with highlighting.

<?
abstract class MySquare_Color
{
  const GREEN = 'Green';
  const RED = 'Red';
}

abstract class MySquare_Height 
{
  const SMALL = 100;
  const MEDIUM = 300;
  const BIG = 500;
}

If you'r using PHP 5.3, you can just name the classes Color and Height and put them in a MySquare namespace:

<?php
// Namespace MySquare with subnamespace Width containing the constants.
namespace MySquare\Width
{
    const SMALL = 100;
    const MEDIUM = 300;
}

namespace
{
  // Refer to it fromout another namespace
  echo MySquare\Width\SMALL;
}


?>
like image 174
GolezTrol Avatar answered Feb 26 '23 21:02

GolezTrol