情况
我使用bash4兼容的shell运行linux。
我有两个文件:
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
它运行得很好,但有点粗糙,需要写很多东西。也许有一些更简单的方法可以做到这一点?
您可以使用-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文件。(
您要查找的可能是-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.
从PHP网站
这里有一个更好的例子。在拥有A.class.php的同一目录中创建一个简单的phpinit文件(init.php(,代码如下:
<?php
include "A.class.php";
$x = new A;
$x->foo();
现在从命令行运行以下命令:
php-f init.php
输出:
foo
看看php的include语句文档以及require((和requireonce((函数,因为它们都可以一起使用来完成我认为您正在尝试的操作。