Ben başka bir mesaj geçen bir PHP5 nesne var ve her bir mesajın bir tür eklemek istiyorum. Örneğin, MSG_HOT
, MSG_WARM
ve MSG_COLD
. PHP5 bir enum türü olsaydı, muhtemelen mesaj türlerini tanımlamak için kullanabilirsiniz, ama (ben yanılmıyorsam) böyle bir hayvan yoktur. Ben birkaç seçenek baktım:
Ben kaçınılmaz 'MSG_WRAM'
ve şeyler kıracak gibi bir şey yazarsınız, çünkü Strings ('MSG_HOT'
, 'MSG_WARM'
, ve 'MSG_COLD'
) kötü. Sayılar aynı sorunu muzdarip ve aynı zamanda daha az açıktır.
Iş tanımlar:
define('MSG_HOT', 1);
define('MSG_WARM', 2);
define('MSG_COLD', 3);
ancak küresel ad kirleten ve böylece teklik sağlamak için daha ayrıntılı isimleri gerektirir. Benim kod APPLICATIONNAME_MESSAGES_TYPE_HOT
gibi şeyler ile çevrili olmasını tercih ederim.
Son olarak, ben bu yüzden gibi tiplerini ayırt etmek için sınıf adları kullanabilirsiniz:
class MessageHot extends Message {}
class MessageWarm extends Message {}
class MessageCold extends Message {}
class Message
{
public function Type()
{
return get_class($this);
}
public function Data()
{
return $this->data;
}
public function __construct($data)
{
$this->data = $data;
}
private $data;
}
Bu iyi, ben düşünüyorum, ama aynı zamanda basit bir kavram olması gerektiğini gibi göründüğü için bir sürü iş olduğunu.
Ben daha iyi bir alternatif eksik?