3

PHP で enum または const をメソッド引数として許可する方法はありますか。Qt/C++ ではこのように使用できますが、もちろん C++ はそれをサポートしています (言語依存)。

Qt/C++/SslSocket

enum PeerVerifyMode {
    VerifyNone,
    QueryPeer,
    VerifyPeer,
    AutoVerifyPeer
};

void setPeerVerifyMode(QSslSocket::PeerVerifyMode mode);

私はこれを試しました:

初め:

class Controller_My
{
  const MENU_FRONT   = 0;
  const MENU_SESSION = 1;

  public function render($menu_model)
  {
    $menu_model = intval($menu_model);

    if( $menu_model === 0 )
      $menu = new Model_Menu_Front();

    if( $menu_model === 1 )
      $menu = new Model_Menu_Session();
  }
}

私はこの投稿も読みました クラスからの定数をPHP関数の引数定義として使用する方法? . ただし、 http: //sourcemaking.com/refactoring/replace-conditional-with-polymorphism インターフェイス/実装ソリューションを使用しても、パラノインされている場合は、switch/if ステートメントを使用します。このような:

class EmployeeType...
  int payAmount(Employee emp) {
    switch (getTypeCode()) {
        case ENGINEER:
           return emp.getMonthlySalary();
        case SALESMAN:
           return emp.getMonthlySalary() + emp.getCommission();
        case MANAGER:
           return emp.getMonthlySalary() + emp.getBonus();
        default:
           throw new RuntimeException("Incorrect Employee");
    }
}
4

1 に答える 1

2

例としてSplEnumとユーザー ノートを見てください。

于 2012-05-14T12:01:10.983 に答える