【问题标题】:Importing a php.inc file into a PERL program将 php.inc 文件导入 PERL 程序
【发布时间】:2012-07-19 23:26:36
【问题描述】:

我正在尝试为 perl 和 php 使用 1 个包含文件

有没有在 perl 中导入 myphp.inc 文件的好方法?

$ cat myphp.inc
<?php
    $some_var="hello world";
?>

在我的 test.php 中使用上述内容可以正常工作:

include "myphp.inc";

如果我删除

Unterminated <> operator

我看过 perl 模块:PHP::Include,但如果可能的话,我想远离外部模块。

有人对此有想法吗??

【问题讨论】:

    标签: php linux perl


    【解决方案1】:

    不要尝试编写同时使用 PHP 和 Perl 的代码,它们是不同的语言,即使它们有一些共同的祖先。如果要在两者之间共享数据,请使用结构化数据格式。 JSON 是一种流行的口味。 PHP 有parse_json,Perl 有JSON 模块。

    如果可能,我想远离外部模块

    代码重用是一种美德……尽管没有什么能阻止您从头开始重新实现模块。

    【讨论】:

    • 我真的只是想为两者设置一些全局变量,这样我就不必编辑我的 perl.inc 和 php.inc 文件了。
    • 嗯,我不确定我是否买了这个......所以当我有一些全局变量,如 $MAX_ROWS 和 $CUSTOMER_SOMETHING(总共最多 30 个变量)时,我的 php 和 perl progs 都使用,我应该以其他格式对它们进行编码并以(即 JSON?)读取它们……这似乎有点过头了
    • @Douglas,将 $MAX_ROWS 和朋友视为运行时配置参数。以对您的程序和平台有意义的格式存储它们——配置文件(JSON?)、注册表、设置环境变量的包装脚本、Web 服务等等。
    • 即使是像 .ini 这样的文件,只有 key: valuekey=value 行也比这更有意义。它不必是 JSON,它很方便,因为它易于解析。通过这种方式,用户也可以更轻松地编辑这些配置参数。
    【解决方案2】:

    理想情况下,您应该以 PHP 和 Perl 都易于阅读的格式存储共享/配置数据。 XML、JSON 或带有键值对的简单文本文件(如 simbabque 建议的 .ini 文件)会很好用。

    如果您决定在 Perl 中读取 PHP 文件,但又不想使用 PHP::Include 之类的模块,那么您只能编写如下内容:

    use IO::File;
    
    sub require_php {
            my $source_filename = $_[0];
            my $dest_filename = 'temp.inc.pl';
            open my $source, $source_filename or die "Could not open $source_filename: $!";
            open my $destination, '>>'.$dest_filename or die "Cound not open file for writing";
            while(my $line = <$source>) {
                    if(index($line,'<?php')==-1 && index($line,'?>')==-1) {
                            print $destination $line
                    }
            }
            close $destination;
            close $source;
            require $dest_filename;
            unlink $dest_filename;
    }
    
    our $some_var = '';
    require_php('myphp.inc');
    

    将以$some_var 结尾,其值为“hello world”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-17
      • 1970-01-01
      • 1970-01-01
      • 2013-07-06
      • 1970-01-01
      • 2016-02-26
      • 2013-08-08
      • 1970-01-01
      相关资源
      最近更新 更多