Diyelim ki farklı medya türlerini temsil edebilir Medium
adında bir sınıf var diyelim. Örneğin:
- Yüklenen Video
- gömülü video
- yüklenen görüntü
- gömülü görüntü
Ben bu gibi CONTANTS ile bu tür temsil:
class MediumAbstract
{
const UPLOAD = 0x0001;
const EMBED = 0x0010;
const VIDEO = 0x0100;
const IMAGE = 0x1000;
const VIDEO_UPLOAD = 0x0101; // for convenience
const VIDEO_EMBED = 0x0110; // for convenience
const IMAGE_UPLOAD = 0x1001; // for convenience
const IMAGE_EMBED = 0x1010; // for convenience
const ALL = 0x1111; // for convenience
}
Benim gibi bir şey ile, bir (soyut) depo onlara bir birleşik arama yapmak için Böylece, bu kolaydır:
{
public function findAllByType( $type )
{
...
}
}
$media = $repo->findAllByType( MediumAbstract::VIDEO | MediumAbstract::IMAGE_UPLOAD );
// or
$media = $repo->findAllByType( MediumAbstract::ALL );
// etc..
Nasıl bir veritabanı gibi somut bir depoda bu sabit değerlerini kullanarak hakkında ne düşünüyorsunuz? Tamam mı? Yoksa veritabanında anlamlı verilerle bunları değiştirmesi gerekir.
Table medium:
| id | type | location | etc..
-------------------------------------------------
| 1 | use constants here? | /some/path | etc..
(Tabii ki, sadece anlamlı sabitleri kullanarak olacak: VIDEO_UPLOAD, VIDEO_EMBED, IMAGE_UPLOAD ve IMAGE_EMBED)