【问题标题】:Access Haxe / PHP variables from regular PHP file从常规 PHP 文件访问 Haxe / PHP 变量
【发布时间】:2013-06-30 15:06:04
【问题描述】:

我已经使用 Haxe 构建了一个 web 服务,并针对 PHP。输出数据的主要方式是通过图像汇总查询结果。

但是,我需要将一些变量集成到一个普通的 PHP 文件中,并通过 php 生成的文件和用户编码的 php 文件之间的某种通信使它们可以访问。

我考虑过在 Haxe/PHP 文件中声明一个函数,该函数返回一个包含我想要的所有数据的关联数组,但是我没有足够的 Haxe 环境知识来实现​​它并从 php 文件中访问它.我不确定我应该在 php 端包含什么。

我的问题是:

  • 我的方法是否相关?如果是这样,实现它的最佳方式是什么?
  • 如果不是,您有什么建议?

欢迎提供任何线索!谢谢。

【问题讨论】:

    标签: php haxe


    【解决方案1】:

    我不再使用 PHP 目标,但我认为 Haxe 中的所有内容都暴露给 PHP,因此您应该能够导入所需的类。

    导入 Haxe 环境

    看看生成的index.php

    <?php
    
    if(version_compare(PHP_VERSION, '5.1.0', '<')) {
        exit('Your current PHP version is: ' . PHP_VERSION . '. Haxe/PHP generates code for version 5.1.0 or later');
    }
    ;
    require_once dirname(__FILE__).'/php/php/Boot.class.php';
    
    server_Server::main();
    
    ?>
    

    最后一行“server_Server::main()”可以替换为您想要执行的任何函数调用或操作。默认情况下,它正在执行您指定为“-main”的任何类的“main”方法,在我的例子中是“server.Server.main()”

    静态函数调用:

    假设我有一个带有公共静态函数的类。在 Haxe 中,我会调用:

      var testPassword = ufront.auth.model.User.generatePasswordHash("test", "test");
    

    在 PHP 中,等效代码如下:

      $testPassword = ufront_auth_model_User::generatePasswordHash("test", "test");
    

    对象创建:

    如果您有想要创建的对象:

      var u = new ufront.auth.model.User();
    

    在 PHP 中是这样的:

      $u = new ufront_auth_model_User();
    

    一般想法

    返回关联数组或类似简单的 PHP 数据结构中的类型可能是一个好主意,以使其尽可能易于阅读,而不必担心将 Haxe 概念/数据结构转换为 PHP 数据结构。

    如果有疑问,请查看 PHP 代码 - 它的可读性很强,自 Haxe 3 起更是如此。(如果您启用了 -debug,您将在函数中获得相当多的额外代码来帮助堆栈痕迹等,如果你把它关掉它可能更容易阅读)。

    如果你想弄清楚你需要用什么 PHP 语法来做一些你知道如何在 Haxe 中做的事情,用 Haxe 编写它,然后查看生成的 PHP 代码。复制/粘贴/修改到您心中的内容。

    祝你好运;)

    【讨论】:

    • 感谢您的详细回答,它包含了我想知道的一切!之前查看过haxe生成的php文件,但是太乱了,很快就灰心了继续看下去。
    【解决方案2】:

    您可能需要桥接的基本数据结构之间存在一些差异,如果需要,可以使用php.Lib 来完成。

    除了 Haxe 和 PHP 之间的差异之外,您应该考虑到 Haxe 生成的类只有公共成员。除此之外,它们完全可以在 PHP 中使用。

    如果您先进行相应的外部声明,您也可以从 Haxe 实例化 PHP 类。

    【讨论】:

    • 我认为 hashmap 会自动转换为关联数组,但感谢您为我节省了时间和麻烦! :)
    猜你喜欢
    • 2020-02-09
    • 2012-06-29
    • 1970-01-01
    • 2018-08-30
    • 2015-10-31
    • 1970-01-01
    • 1970-01-01
    • 2010-12-23
    • 2021-12-23
    相关资源
    最近更新 更多