如何打破「;“主类”;PHP导出的结构?

如何打破「;“主类”;PHP导出的结构?,php,haxe,Php,Haxe,这是我当前的project.hxml: -cp Source -main Login -php Export/Server -v 这样做的目的是将其中一个类(Login.hx)用作整个PHP服务器的主类。 不过,这对PHP不是很有用,因为PHP并不真正支持“main”类的概念,相反,对于要从web上调用服务器的每个函数,您都需要一个.PHP脚本,它们基本上彼此独立地工作 这里最大的问题显然是“main”类,因为haxe将所有内容输出到指定的文件夹中,但将Login.hx重命名为index.ph

这是我当前的project.hxml:

-cp Source
-main Login
-php Export/Server
-v
这样做的目的是将其中一个类(Login.hx)用作整个PHP服务器的主类。
不过,这对PHP不是很有用,因为PHP并不真正支持“main”类的概念,相反,对于要从web上调用服务器的每个函数,您都需要一个.PHP脚本,它们基本上彼此独立地工作

这里最大的问题显然是“main”类,因为haxe将所有内容输出到指定的文件夹中,但将Login.hx重命名为index.php。
但是,我不希望它变成index.php。
我想要的是login.php、logout.php、morestuff.php,基本上我所有的haxe类都变成可调用的php脚本,能够像这样调用它们:

/appname/login  
/appname/logout
/appname/morestuff  
etc.
我现在能想到的实现这一点的唯一方法不是很好的变通办法

  • 创建一个更大的project.hxml文件,使用--next将每个类输出到自己的文件夹中(例如Export/Server/Login、Export/Server/Logout等)。这会起作用,但也会放大大小,因为所有的.php文件haxe输出(Std等)都会在这些文件夹中重复
  • 有一个实际的主类,它使用参数将不同的调用“转发”到实际的类。因此,基本上这些调用将变成/appname/Main?function=login、/appname/Main?function=logout等 这会更容易接受,但仍然感觉有点麻烦
  • 我不是PHP专家,但可能有一种方法可以在PHP内部进行一些配置。我宁愿不要

  • 当然,一定有更好的办法吗?

    我和你们讨论过同样的问题,这是我能做的最好的了。 您可以使用以下命令更改hxml文件或命令行选项中php输入脚本的文件名:

    --php-front newfilename.php     
    
    您可能还发现更改lib目录的位置很有用:

    --php-lib ../lib
    
    因此,hxml文件中的完整设置(用于生成多个php入口点)可能如下所示:

    -cp src
    -main Main
    --php-front joomlahaxe.php
    -php bin/com_joomlahaxe/site
    -debug
    
    --next
    -cp src
    -main JoomlahaxeViewJoomlahaxe
    --php-front view.html.php   
    --php-lib ../../lib
    -php bin/com_joomlahaxe/site/views/joomlahaxe
    

    好的,基本上就像我的第一个解决方法,但是使用更好的hxml魔法。听起来不太糟糕,只是太糟糕了,在一个脚本中,下一步会让自动完成变得如此糟糕。谢天谢地,我也知道解决方法;)如果在几天内没有出现类似解决方法的答案,我会接受这一点。我发现了一个重大问题:每个--下一个目标将覆盖上一个目标的“lib”文件夹。例如,如果目标B没有使用前一个脚本a使用的函数,它将不会出现在生成的lib文件夹中,从而破坏脚本a。因此,这确实需要每个php类使用每个所需的lib函数的奇怪解决方法,否则该函数将在最终结果中消失。啊!基本上,如果目标B的两个输出都输出到同一个文件夹,则目标B的死代码消除(可能)会破坏目标A。