Bir PHP Enum kurulumu hakkında bazı düşünce

2 Cevap php

Verileri değişti olmayacak çünkü bir proje için çalışıyorum ben bir veritabanında depolamak ve gereksiz isteği ile db-sunucu egzoz yaramaz enumaration sınıf çeşit olması gerekir. Yani ilgili bazı mesajları okuduktan sonra SO ben şu çalıştı:

class Model_MaintenanceTerminology
{
  const SetDefault = array("id" => 1, "title" => "set 1", "levels" => array("OLM", "ILM", "DLM"));
  const SetABC     = array("id" => 2, "title" => "A, B, C", "levels" => array("A", "B", "C"));
  const SetLevel   = array("id" => 3, "title" => "Level 1, Level 2, Level 3, Level 4", "levels" => array(1, 2, 3, 4);
}

Sorun dinamik bir form oluşturmak için var ve kullanılan seviye miktarı ülkenin başına (bazı proje ile ilgili bilgi) farklı olmasıdır. Yani benim ihtiyaçları için yukarıda mükemmel uyum olacak gibi bir enum sınıf düşündüm.

Şimdi sorun ben sabitleri olarak diziler ilan edemez görünüyor. Daha farklı, daha yaklaşımı konusunda herkes bazı düşünceler?

2 Cevap

Aynı sonucu almak farklı bir yaklaşım yazım hatası Ben düşünce için kendi yazı okuduktan sonra, boşver. Benim çalışma çözüm belki bir gün birisi için kullanışlı geliyor, aşağıda :)

Benim çalışma çözümü:

class Model_MaintenanceTerminology
{
  const SetDefault = 1; 
  const SetABC     = 2; 
  const SetLevel   = 3; 


  public function getSetById(Integer $id)
  {
    switch($id->value)
    {
      case 2 : return array("id" => 2, "title" => "A, B, C", "levels" => array("A", "B", "C")); break;
      case 3 : return array("id" => 3, "title" => "Level 1, Level 2, Level 3, Level 4", "levels" => array(1, 2, 3, 4); break;
      default : return array("id" => 1, "title" => "set 1", "levels" => array("OLM", "ILM", "DLM"));
    }
  }
}

Birçok farklı değerler yoksa, sadece statik accessor yöntemleri kullanabilirsiniz:

class Enum
{
    static function getFirstArray()
    {
        return array(/* ... */);
    }

    static function getSecondArray()
    {
        return array(/* ... */);
    }
}