Zend projemde para birimi dönüştürmeleriyle ilgili bazı işlevlerim var. Denetleyicilerin yanı sıra Modellerde de işlevselliği kullanmak istiyorum. Bu kodu nereye koyacağınız için en iyi uygulama var mı? Ya da işlevselliğin her iki yerde de kullanılması, belki de projenin yapısını yeniden düşünmem gerektiğini, dolayısıyla her iki yerde de gerekmediğini gösteren bir göstergedir.Yeniden kullanılabilir kodu denetleyiciler ve modeller için erişilebilir duruma getirme
cevap
Denetleyiciler, kodunuzda denetleyici kodunuzda para birimi dönüştürmeleri yapıyorsanız, muhtemelen yanlış bir şey yapıyorsunuz demektir, çünkü orada herhangi bir iş mantığı olmamalıdır. Bununla birlikte, bazen pratik düşünceler saf kaygılardan daha ağır basmaktadır. Bunun böyle bir durum olduğunu varsayalım. :-)
Para birimi sınıfınız oldukça basit bir yardımcı program sınıfıysa, "utils" adlı "application" altında yeni bir dizin oluşturmaya ve ardından bu dizini uygulamadaki kaynak yükleyiciye eklemeyi tercih ederim. önyükleme:
protected function _initResourceLoader()
{
$this->_resourceLoader->addResourceType('utility', 'utils', 'Utility');
}
Sonra bu dizinde Currency.php
adlı dosyada saklanır Application_Utility_Currency
adında bir sınıf oluşturmak ve bu şekilde statik yöntemleri çağırabilir:
Application_Utilility_Currency::convert($from_currency, $to_currency, $amount);
Bu yaklaşım yo özellikle yararlı olacaktır Ayrıca bir ev arayan diğer yardımcı sınıflar vardı.
Ancak, para biriminiz daha zengin işlevsellik içeriyorsa (döviz kuru verilerini elde etmek için dış hizmetlere bağlanmak gibi), IMO, bunu bir "Hizmet Programı" yerine "Hizmet" olarak ele almak daha iyi olur ". "Model" tanımım oldukça gevşek ve veriler, uygulama veritabanında ya da başka bir yerde bulunup bulunmadığıyla ilgili tüm veri hizmetlerini içeriyor, bu yüzden eğer sınıf daha karmaşık bir çeşitliliğe sahipse, o zaman bunu diğer tarafa yapıştıracağım. modelleri.
Çok teşekkürler. Bahsettiğiniz gibi, bir dış hizmete bağlanma ve yeni oranları alma mantığı da var, bu yüzden belki de bir Model en iyisidir. Yardımcı Program işlevselliği hakkında bilmek iyi olduğu gibi başka bir yerde yararlıdır. – user1140535