gpt4 book ai didi

php - Hiphop for PHP 等工具如何处理异构数组?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:36:52 24 4
gpt4 key购买 nike

我认为 HipHop for PHP 是一个有趣的工具。它本质上是将 PHP 代码转换为 C++ 代码。以这种方式进行交叉编译似乎是个好主意,但我想知道,它们如何克服两种类型系统之间的根本差异?我的一般问题的一个具体示例是异构数据结构。静态类型语言不允许您将任意类型放入数组或其他容器中,因为它们需要能够在另一端找出类型。如果我有这样的 PHP 数组:

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

这如何用 C++ 代码表示?一种选择是使用 void 指针(或高级版本,boost::any),但是当你从数组中取回东西时你需要进行转换......而且我根本不相信类型推断器总能弄清楚在另一端转换什么。一个更好的选择,也许是更像 union (或 boost::variant)的东西,但是你需要在编译时枚举所有可能的类型……也许是可能的,但肯定是困惑的,因为数组可以包含任意复杂的实体。

有谁知道 HipHop 和从动态类型规则到静态规则的类似工具如何处理这些类型的问题?

最佳答案

它们具有通用变量类型,可以包含任何 PHP 值,并且此类代码在从 PHP 编译时可能会使用这些类型。这意味着将失去将 PHP 值表示为 C++ 类型的部分优势,但想法是像你在那里展示的代码很少见。

PHP 没有太多的类型,所以拥有一个将它们统一起来的结构不是问题 - 这就是 PHP 背后的实际引擎 Zend Engine 所做的。

关于php - Hiphop for PHP 等工具如何处理异构数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4529638/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com