小编Qwe*_*rty的帖子

从XSD生成PHP类?

是否存在JavaBeans或JAXB for PHP的世界类似物?是否可以从XML模式生成PHP类?

将API作为XSD架构发布是很常见的做法.Java和C#人可以通过直接从XSD生成类来获得优势.PHP有相同的工具吗?

php xml schema xsd code-generation

22
推荐指数
2
解决办法
4万
查看次数

设计/架构问题:使用远程服务进行回滚

例如,有以下调用的远程API:

getGroupCapacity(group)
setGroupCapacity(group, quantity)
getNumberOfItemsInGroup(group)
addItemToGroup(group, item)
deleteItemFromGroup(group, item)
Run Code Online (Sandbox Code Playgroud)

任务是向某个组添加一些项目.团体有能力.首先,我们应该检查组是否已满.如果是,请增加容量,然后添加项目.像这样的东西(例如API用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);
}
Run Code Online (Sandbox Code Playgroud)

现在如果addItemToGroup失败(项目不好)怎么办?我们需要回滚集团的能力.

现在想象一下,您必须添加10个项目进行分组,然后设置添加了一些属性的项目 - 所有这些都在一个事务中.这意味着如果它在中间某处失败,你必须将所有内容回滚到之前的状态.

没有一堆IF和意大利面条代码可能吗?任何将简化此类操作的库,框架,模式或体系结构决策(在PHP中)?

UPD: SOAP就是一个例子.解决方案应该适合任何服务,甚至是原始TCP.问题的关键是如何使用基础非事务API组织事务行为.

UPD2:我想这个问题在所有编程语言中都是一样的.所以任何答案都受到欢迎,不仅仅是PHP.

提前致谢!

php service design-patterns transactions

5
推荐指数
1
解决办法
342
查看次数

NodeJS:http.ClientRequest在特定方案中两次触发错误事件

考虑遵循nodejs中执行的javascript代码:

// create ClientRequest
// port 55555 is not opened
var req = require('http').request('http://localhost:55555', function() {
  console.log('should be never reached');
});

function cb() {
  throw new Error();
}

req.on('error', function(e) {
 console.log(e);
 cb();
});

// exceptions handler
process.on('uncaughtException', function() {
 console.log('exception caught. doing some async clean-up before exit...');
 setTimeout(function() {
   console.log('exiting');
   process.exit(1);
 }, 2000);
});

// send request
req.end();
Run Code Online (Sandbox Code Playgroud)

预期产量:

{ Error: connect ECONNREFUSED 127.0.0.1:55555
    at Object.exports._errnoException (util.js:1026:11)
    at exports._exceptionWithHostPort (util.js:1049:20)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1081:14)
  code: 'ECONNREFUSED',
  errno: 'ECONNREFUSED', …
Run Code Online (Sandbox Code Playgroud)

error-handling exception http node.js

5
推荐指数
1
解决办法
1322
查看次数