2009-09-23 146 views
16

我有一个PHP脚本,其中包含一个或两个其他库,它依赖于使用'include'语句。为了使它更容易移植,我想以某种方式将脚本和“库”编译成一个PHP脚本(与ack在一个文件中包含所有Perl依赖关系的方式相同)。有一种简单的方法可以在PHP中执行此操作吗?将多个PHP脚本合并到一个文件中

澄清:编译到一个Windows可执行文件可以(部分)的可接受的解决方案,但剧本还需要在* nix,它最好是有PHP源代码“#!/usr/bin/env php”运行在顶部。

我希望能够在任何操作系统的某处将单个文件放到$ PATH中,并且无需安装额外的PHP库即可工作。

回答

11

较新版本的PHP支持类似在Java JAR文件的概念。看看phar。您可以将所有应用程序文件打包到一个归档文件中并运行该文件。

+0

Phar看起来很有希望... – 2009-09-23 02:48:56

+7

'PHAR'的发音就像我们在阿拉伯语中说'Mouse'一样。这很有趣:D – 2013-11-13 14:00:18

4

有没有内置的方式来做到这一点。我建议将你的代码打包到一个目录中并以这种方式进行分发。我用PHP来做这件事,我把代码放到一个目录“something.module”中,然后遍历一个modules目录,包括每个.module目录下的主文件。但对于一些更简单的,你可以只是有这样的结构:

my_package/ 
    my_package.php 
    include1.php 
    include2.php 

my_package.phpinclude(realpath(dirname(__FILE__).'/inclue1.php'))。所有其他scrits只需要include('my_packahe/my_package.php')

+0

到目前为止,至少有四个文件,其中三个只是库。如果用户将它们全部放在'/ usr/bin /'中,还是需要解决它们的include_path设置,并将这三个库放在其中一个文件夹中?我不希望用户必须做出选择。我只想要一个文件。 – 2009-09-23 00:18:05

+0

这将是你最好的选择,没有工具可以做你想做的事。糟糕的是没有。 – MitMaro 2009-09-23 00:30:52

+0

除非你做什么jcinacio说,你不能有一个单一的文件。但是没有理由担心/ usr/bin和include_path。只需将所有必需的文件,二进制文件等放在一个目录下,并且该目录中的所有内容都包含相对于__FILE__(表示当前文件路径的魔术常量) – Josh 2009-09-23 00:37:06

3

手动,您只需删除include/require的所有引用,并将这些文件“连接”在一起。 你应该在连接之前去除开放和结束标签('<?php',“?>”),并将它们添加到最终文件中。

一个或两个小的图书馆,它应该 - 希望 - “只是工作” ...

+0

我有一个脚本,它沿着这些行做了一些事情,但它会得到有点多毛的命名空间。 – 2009-09-23 02:06:34

+0

如果有人这样做,请记住检查是否有任何包含的文件需要返回 - 如果您依次执行这些文件,那么这将起作用,但如果它们都在一个大文件中,则不会。 – amurrell 2014-04-18 23:06:54

1

你可以写打开的所有文件,删除开始和结束标记自定义脚本,并将它们连接在一起并保存为一个文件。应该很容易做到。

或者你可以使用一个php编译器。它会比你想要的要多一点,但如果你只想要一个文件,你可以通过其中一个来运行你的开发项目。

您可能还可以使用内置的PHP字节码编译器编译一切成字节码,贴在一个文件中。

2

phc允许这样做。只需使用--include标志运行它,它会将您的所有代码(以及includerequire等的所有参数)合并到一个PHP文件中。

如果你喜欢,它也可以编译它,但并不需要将它们合并到一个文件中。

+0

截至2015年,PHC似乎被放弃(最后一次提交2年前,2013年7月)。 – bishop 2015-09-10 13:44:22

+0

'phc'肯定被放弃了。 – 2015-09-10 18:13:52

相关问题