Örneğin, aşağıdaki aramalar ile uzaktan API var:
getGroupCapacity(group)
setGroupCapacity(group, quantity)
getNumberOfItemsInGroup(group)
addItemToGroup(group, item)
deleteItemFromGroup(group, item)
The task is to add some item to some group. Groups have capacity. So first we should check if group is not full. If it is, increase capacity, then add item. Something like this (for example API is exposed with SOAP):
function add_item($group, $item) {
$soap = new SoapClient(...);
$capacity = $soap->getGroupCapacity($group);
$itemsInGroup = $soap->getNumberOfItemsInGroup($group);
if ($itemsInGroup == $capacity) {
$soap->setGroupCapacity($group, $capacity + 1);
}
$soap->addItemToGroup($group, $item);
}
Şimdi ne (madde kötü oldu) addItemToGroup başarısız olursa? Biz grubun kapasitesini geri almak gerekir.
Tek bir işlemle ve tüm bu - Şimdi gruba 10 öğeler eklemek zorunda ve daha sonra kurulum bazı özelliklere sahip öğeler ekledi düşünün. Yani ortada bir yerde başarısız eğer önceki durumuna şeyi geri alma gerektiği anlamına gelir.
Bu IF adlı ve spagetti kod demet olmadan mümkün mü? (PHP) gibi işlemleri basitleştirmek olacak herhangi bir kitaplık, çerçeve, desen veya mimarlık karar?
UPD: SABUN sadece bir örnektir. Çözüm, hatta ham TCP herhangi bir hizmeti uygun olmalıdır. Sorunun ana noktası yatan işlemsel olmayan API ile işlem davranışlarını düzenlemek için nasıl.
UPD2: Ben bu sorun, tüm programlama dilleri oldukça aynıdır sanırım. Yani herhangi bir cevap, PHP değil, sadece bekliyoruz.
Şimdiden teşekkürler!