doulan7166 2010-12-25 07:43
浏览 77
已采纳

像Hiphop for PHP这样的工具如何处理异构数组?

I think HipHop for PHP is an interesting tool. It essentially converts PHP code into C++ code. Cross compiling in this manner seems like a great idea, but I have to wonder, how do they overcome the fundamental differences between the two type systems? One specific example of my general question is heterogeneous data structures. Statically typed languages don't tend to let you put arbitrary types into an array or other container because they need to be able to figure out the types on the other end. If I have a PHP array like this:

$mixedBag = array("cat", 42, 8.5, false);

How can this be represented in C++ code? One option would be to use void pointers (or the superior version, boost::any), but then you need to cast when you take stuff back out of the array... and I'm not at all convinced that the type inferencer can always figure out what to cast to at the other end. A better option, perhaps, would be something more like a union (or boost::variant), but then you need to enumerate all possible types at compile time... maybe possible, but certainly messy since arrays can contain arbitrarily complex entities.

Does anyone know how HipHop and similar tools which go from a dynamic typing discipline to a static discipline handle these types of problems?

  • 写回答

1条回答 默认 最新

  • dsjuimtq920056 2010-12-25 08:26
    关注

    They have generic variable type, that can contain any PHP value and such code would probably use these types when compiled from PHP. That means part of advantage that comes from representing PHP values as C++ types will be lost, but the idea is that code like you showed there is rare.

    PHP doesn't have too many types, so it's not a problem having a structure that unites them all - that's what the actual engine behind PHP, Zend Engine, does.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建