PHP类只包含常量

Anp*_*pan 17 php oop coding-style

首先:我试图谷歌它,但我大多只发现有关如何在常量和其他无关信息中定义数组的讨论.

我有一个问题,一个解决方案,使我的代码更可读(和漂亮),只是发生在我身上.基本上我有大多数函数返回一个状态代码,表示成功,或者,如果出现问题,返回错误代码.为此,我创建了一个名为"StatusCode"的类,它只包含常量,如下所示:

<?php
class StatusCode {
  const success = 0;
  const badArgument = -1;
  const badQuery = -2;
  const outOfMana = -3; //Really just for demonstration purposes
  ...
}
Run Code Online (Sandbox Code Playgroud)

目的是让魔术数字从我的代码中消失,并清楚地说明出了什么问题而不必在某处寻找解释:

if (mana > 10) {
  //Do some magic
  return StatusCode::success;
}
else {
  //Oh god this is not good!
  return StatusCode::outOfMana;
}
Run Code Online (Sandbox Code Playgroud)

它还应该消除意外使用重复错误代码的可能性.我很确定这会给我的应用程序增加一些小的开销,但是让我的代码更易于理解.是否有一些惊天动地的理由不这样做?也许更好的办法呢?

(我已经避免使用这种define(CONSTANT, "value")方法,因为它看起来不那么漂亮,而且在我的德语键盘上写一个麻烦:))

Ora*_*ill 21

在Java和其他语言中,这是命名空间常量的常用方法,以避免命名冲突.看到这里 ;

我实现这样一个类的方式是这样的"

// make this final so no one can extend it
final class Errors{
    const SUCCESS = 0;
    const BAD_ARGUMENT = -1;
    const BAD_QUERY = -2;
    const OUT_OF_MANA = -3;

    // make this private so noone can make one
    private function __construct(){
        // throw an exception if someone can get in here (I'm paranoid)
        throw new Exception("Can't get an instance of Errors");
    }
}
Run Code Online (Sandbox Code Playgroud)