是否可以在 运行 php 脚本之前通过命令行参数要求 .php 文件?

Is it possible to require a .php file via command line parameter before running a php script?

情况

我 运行 linux bash 4 兼容 shell。

我有两个文件:

A.class.php:

<?php

class A{

    public static function foo(){
        echo "foo\n";
    }
}

A.php:

<?php

A:foo();

问题

是否可以在不编辑文件的情况下从命令行在 运行 A.php 之前要求 A.class.php?

类似于:

php --require "A.class.php" A.php 

我尝试过的东西

我尝试将 <?php require 'A.class.php' ?> 与文件 A.php 的内容连接起来,然后将其通过管道传输到 php,例如:

echo "<?php require 'A.class.php'?>$(<A.php)" | php

效果很好,但有点老套,要写的东西很多。也许有一些更简单的方法来做到这一点?

您要查找的可能是 -f 开关。

php -f phpFileToParseAndRunFirst.php

您始终可以先创建一个简短的 PHP 文件到 运行 来满足您的要求:

<?php
require ('pathToRequiredPhpFile1.php');
require ('pathToRequiredPhpFile2.php');

// Or even use the include to bring a .php file into the currently running script file as if it were a part of the script.

From the PHP website

这是一个更好的例子。在您拥有 A.class.php 的同一目录中,使用以下代码创建一个简单的 php 初始化文件 (init.php):

<?php
include "A.class.php";
$x = new A;
$x->foo();

现在从命令行运行这样:

php -f init.php

输出:

foo

查看 php 的 include 语句以及 require() 和 require_once() 函数的文档,因为这些都可以一起使用来完成我认为你是正在努力。

您可以使用 -d directive=value 来设置 auto_prepend_file 指令。

php -d auto_prepend_file=A.class.php -f A.php

或者不传递脚本文件名,您可以传递 php 直接将脚本作为参数加载的代码:

php -r "require 'A.class.php'; require 'A.php';"

作为另一种选择,总是有 Unix 方式:

 cat first.php second.php | php -C

通过 PHP.

在 运行 之前将脚本连接在一起
  • auto_prepend_file= 不同,这也适用于两个以上的系列脚本。 (并且不妨碍中央预加载脚本。个人已经将其用于兼容性代码。)

  • 但是,它取决于适当的<?php ... ?>脚本附件——打开 在每个脚本中关闭标签(经典PHP编码风格,而不是noob/PSR-x stinted)。

  • (出于此类目的,可以使用 phptags -w -c *.php 修复现有的 PHP 文件。)