ホームページ > バックエンド開発 > PHPチュートリアル > PHP のいくつかの強力だがめったに使用されない関数

PHP のいくつかの強力だがめったに使用されない関数

*文
リリース: 2023-03-18 22:36:01
オリジナル
1096 人が閲覧しました

この記事では、PHP の強力だがあまり使用されない関数を主に紹介し、関数の呼び出し、登録、呼び出し、判断などの操作スキルを含む、PHP のいくつかの非常に実用的な関数をサンプルの形式でまとめて分析します。困っている友達が参考になれば幸いです。

詳細は次のとおりです:

call_user_func_array — 配列形式のパラメーターを使用して関数を呼び出します
call_user_func — 既存の関数を呼び出します
create_function — 関数を作成します
func_get_arg — 関数内のパラメーターの値を取得します
func_get_args — 関数を取得します。 すべてのパラメーターは配列に結合されます。
func_num_args — 関数のパラメーターの数を取得します。
function_exists — 関数が存在するかどうかを判断します。
get_define_functions — 既存の関数情報を取得します。
register_shutdown_function — ページの後に実行される関数を登録します。ロードされています
register_tick_function — リクエストに応じて呼び出される関数を登録します
unregister_tick_function — リクエストに応じて呼び出される関数をキャンセルします

get_define_functions はすべての PHP 関数とカスタム関数を取得できます:

<?php
function a(){}
$b = get_defined_functions();
print_r($b);
//也许会显示1000多个已定义了的函数:)
?>
ログイン後にコピー

function_exists 関数は、関数が存在するかどうかを判断します (PHP 関数の場合もあります)またはカスタム関数)。

<?php
if (function_exists(&#39;a&#39;)) {
  echo "yes";
} else {
  echo "no";
}
function a(){}
// 显示 yes
?>
ログイン後にコピー

call_user_func 関数は、関数を呼び出す特殊なメソッドに似ています。 使用方法は次のとおりです。

<?php
function a($b,$c)
{
  echo $b;
  echo $c;
}
call_user_func(&#39;a&#39;, "111","222");
call_user_func(&#39;a&#39;, "333","444");
//显示 111 222 333 444
?>
ログイン後にコピー

クラス内でメソッドを呼び出すのは実際には配列を使用します。もちろん、開発者がどう考えたかは省略します。 new にも新しいアイデアが満載です:

<?php
class a {
  function b($c)
  {
    echo $c;
  }
}
call_user_func(array("a", "b"),"111");
//显示 111
?>
ログイン後にコピー

call_user_func_array 関数は、パラメータが異なる方法で渡される点を除いて、call_user_func と非常に似ています。パラメータの明確化:

<?php
function a($b, $c)
{
  echo $b;
  echo $c;
}
call_user_func_array(&#39;a&#39;, array("111", "222"));
//显示 111 222
?>
ログイン後にコピー

call_user_func 関数と call_user_func_array 関数の両方が参照をサポートしているため、通常の関数呼び出しとの機能の一貫性が高まります:

<?php
function a(&$b)
{
  $b++;
}
$c = 0;
call_user_func(&#39;a&#39;, &$c);
echo $c;//显示 1
call_user_func_array(&#39;a&#39;, array(&$c));
echo $c;//显示 2
?>
ログイン後にコピー

func_num_args 関数は、関数が受け取るパラメータの数を取得できます:

<?php
function a()
{
  echo func_num_args();
}
a(111, 222, 333);
//显示 3
?>
ログイン後にコピー

func_get_arg 関数は、次の例では、関数内でどのパラメータが受け入れられるかは指定されていません:

<?php
function a()
{
   echo func_get_arg(1);
}
a (111, 222, 333);
//显示 222
?>
ログイン後にコピー

func_get_args 関数は func_get_arg とよく似ています。すべてのパラメータを配列として呼び出します:

<?php
function a()
{
  $numargs = func_num_args();
  $b = func_get_args();
  for ($i = 0; $i < $numargs; $i++) {
    echo $b[$i];
  }
}
a(111, 222, 333);
//显示 111 222 333
?>
ログイン後にコピー

create_function 関数を作成できます。 無名関数 (PHP では関数名はデフォルトで lambda_1、lambda_2 です)、見た目は奇妙ですが、2 番目のステートメントが奇妙であることに注意してください。パラメーターは「;」で区切る必要があります:

<?php
$newfunc = create_function(&#39;$a,$b&#39;, &#39;return $a + $b;&#39;);
echo $newfunc;
echo $newfunc(2, 3);
//显示 lambda_1 5
?>
ログイン後にコピー

register_shutdown_function 関数は、ページがロードされた後に実行される関数を登録できます (この関数はキャッシュに少し似ています)。 register_shutdown_function は、次のようなクラスの内部メソッドを呼び出すために使用することもできます。 call_user_func 関数:

<?php
function a() {
  echo 222 ;
}
echo 111;
register_shutdown_function(&#39;a&#39;);
//显示 111 222
?>
ログイン後にコピー
<?php
class a
{
  function b ($c)
  {
   echo $c;
  }
}
register_shutdown_function (array (&#39;a&#39;, &#39;b&#39;), &#39;111&#39;);
//显示 111
?>
ログイン後にコピー

register_tick_function と unregister_tick_function は、宣言プロセス制御メカニズムと組み合わせる必要があります。次に、まず宣言とティックについて理解しましょう:

declare (directive){
statement
}
ログイン後にコピー

ティックは、インタープリターが宣言コード内の N 個の低レベルのステートメントを実行するたびに発生するイベントですセグメント。 Nの値はdeclareのディレクティブ部分のticks=Nで指定します。各ティックで発生するイベントは register_tick_function() によって指定されます。例は次のとおりです:

<?
function foo($str) {
static $i = 0;
print "$str: $i<br>";
$i++;
}
register_tick_function("foo", "count");
declare (ticks = 6) {
for($i=0; $i<20; $i++) {
echo "$i<br>";
}
}
?>
ログイン後にコピー

この例のdeclare(ticks = N){statement}プロセスコントロールでは、6行のコード(ticks = 6)が実行されるたびに、foo()関数を1回実行する必要があります。ティックの値を変更することで、異なる実行結果を得ることができます。

関連する推奨事項:

PHP 関数の構文入門 1_PHP チュートリアル

PHP 関数の実行効率の小さな比較_PHP チュートリアル

php 関数の使用方法と関数の定義方法_ P HPチュートリアル

以上がPHP のいくつかの強力だがめったに使用されない関数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート