29

print を実質的に置き換える関数があり、print を呼び出すのと同じように、括弧なしで呼び出したいと考えています。

# Replace
print $foo, $bar, "\n";

# with
myprint $foo, $bar, "\n";

Perl では、パラメーター テンプレートを使用してサブルーチンを作成できます。サブルーチンを次のように定義すると、まさにこの動作が可能になります。

sub myprint(@) { ... }

PHPで似たようなものはありますか?

4

6 に答える 6

22

print は可変関数ではありません

これは関数ではなく言語構造であるため、変数関数を使用して呼び出すことはできません

と :

変数関数

PHP は変数関数の概念をサポートしています。これは、変数名に括弧が追加されている場合、PHP は変数が評価したものと同じ名前の関数を探し、それを実行しようとすることを意味します。特に、これはコールバック、関数テーブルなどを実装するために使用できます。

于 2008-10-17T15:22:23.547 に答える
11

PHP コードベースを編集し、新しい言語構造を追加するだけです。

-アダム

于 2008-10-17T15:29:41.817 に答える
9

いいえ、PHP ではできません。Print は実際には関数ではなく、「言語構造」です。

于 2008-10-17T15:19:35.190 に答える
2

次のようなことを行うためにエコーをコーディングする方法を探していました。

echoh "hello";

そして得る:

'hello<br>\n'.

1つの解決策は、定数を定義して使用することだと思います:

<?php
const PHP_BR_EOL = "<br>\n";
echo "Hello" . PHP_BR_EOL;
?>

今私は得る:

Hello<br>

より多くの入力が必要であることはわかっていますが、PHP マニュアルの例により準拠しており、入力を節約するために omnicomplete で gvim を使用しています。また、PHP_BR_EOL で PHP_EOL をグローバル検索/置換するのも簡単です。

于 2011-03-27T21:50:41.457 に答える
2

いいえ、PHP ではそれができません。

于 2008-10-18T20:49:55.007 に答える