对比了半天还是没发现有什么太大的区别,可能是我没有找到体现出使用call_user_func_array()这个函数的优势的场景。
谁知道的告知下。
给个介绍的文章链接也行~
function foo($a,$b){ return 2*(intval($a)+intval($b)); } function bar($a,$b){ return 3*foo($a,$b); } echo bar(3,2); function foo($a,$b){ return 2*(intval($a)+intval($b)); } function bar(){ return 3*call_user_func_array('foo', func_get_args()); } echo bar(3,2);
参考一楼大拿给的,的确不错:
function playVideo($video) { echo '哥在用用Video看电影-',$video; } function playAudio($artist,$music) { echo '哥在用Mp3听',$artist,'的歌-',$music; } function play() { $args = func_get_args(); $functionName = array_shift($args); call_user_func_array( 'play'.$functionName, $args ); } play('Video','《功夫》'); echo '<br>'; play('Audio', 'Jay','《简单爱》');
回复内容:
对比了半天还是没发现有什么太大的区别,可能是我没有找到体现出使用call_user_func_array()这个函数的优势的场景。
谁知道的告知下。
给个介绍的文章链接也行~
function foo($a,$b){ return 2*(intval($a)+intval($b)); } function bar($a,$b){ return 3*foo($a,$b); } echo bar(3,2); function foo($a,$b){ return 2*(intval($a)+intval($b)); } function bar(){ return 3*call_user_func_array('foo', func_get_args()); } echo bar(3,2);
参考一楼大拿给的,的确不错:
function playVideo($video) { echo '哥在用用Video看电影-',$video; } function playAudio($artist,$music) { echo '哥在用Mp3听',$artist,'的歌-',$music; } function play() { $args = func_get_args(); $functionName = array_shift($args); call_user_func_array( 'play'.$functionName, $args ); } play('Video','《功夫》'); echo '<br>'; play('Audio', 'Jay','《简单爱》');
我一般也很少用到这个函数,但是当动态调用类的静态方法时它还是有作用的:
<code>class foo { public static function func() { var_dump(func_get_args()); } } call_user_func_array(array('foo', 'func'), array('hello world')); </code>
至于动态调用普通函数时,在这种情况下也是很有作用:
<code>function playVideo($type, $src) { echo 'I will watch '.$src; } function playAudio($type, $src, $artist) { echo 'I will listen to '.$artist.'\'s'.$src; } function play() { $args = func_get_args(); call_user_func_array( 'play'.$args[0], $args ); } play('Video','功夫.rmvb'); echo " and "; play('Audio','简单爱.mp3', 'Jay'); </code>
我相信你现在已经明白它的作用了。此外,call_user_func()
和 call_user_func_array()
类似,只不过后者第二个参数传入的是数组而已。
很多场景是这样的:
1、你要调用的函数名是未知的
2、要调用函数的参数类型及个数也是未知的
因为未知,所以得用call_user_func_array这样的函数。
一个应用场景:
定时任务类需要定时运行一个函数,则接口就可以类似这样设计:
/** * 在$run_time时刻运行$call_back */ function task_add($run_time, $call_back, $param_arr){ while(1){ if(time()>=$run_time){ call_user_func_array($call_back, $param_arr); return; } sleep(1); } }
$call_back和$param_arr是用户传递的,可以是任意函数任意参数。这种场景下很难直接调用函数,使用call_user_func_array就非常方便。

tomodifydatainaphpsession、starthessession withsession_start()、$ _sessiontoset、modify、orremovevariables.1)startthessession.2)

配列はPHPセッションに保存できます。 1。セッションを開始し、session_start()を使用します。 2。配列を作成し、$ _Sessionで保存します。 3. $ _Sessionを介して配列を取得します。 4.セッションデータを最適化してパフォーマンスを向上させます。

PHPセッションガベージコレクションは、有効期限が切れたセッションデータをクリーンアップするために確率メカニズムを通じてトリガーされます。 1)構成ファイルにトリガー確率とセッションのライフサイクルを設定します。 2)Cronタスクを使用して、高負荷アプリケーションを最適化できます。 3)データの損失を避けるために、ごみ収集の頻度とパフォーマンスのバランスを取る必要があります。

PHPでのユーザーセッションアクティビティの追跡は、セッション管理を通じて実装されます。 1)SESSION_START()を使用してセッションを開始します。 2)$ _Sessionアレイを介してデータを保存およびアクセスします。 3)セッションを終了するには、session_destroy()を呼び出します。セッショントラッキングは、ユーザーの動作分析、セキュリティ監視、パフォーマンスの最適化に使用されます。

データベースを使用してPHPセッションデータを保存すると、パフォーマンスとスケーラビリティが向上します。 1)MySQLを構成してセッションデータを保存します:PHP.iniまたはPHPコードでセッションプロセッサを設定します。 2)カスタムセッションプロセッサを実装します:データベースと対話するために、開いて、閉じ、読み取り、書き込み、その他の機能を定義します。 3)最適化とベストプラクティス:インデックス、キャッシュ、データ圧縮、分散ストレージを使用して、パフォーマンスを向上させます。

phpssionsStrackuserdataacrossmultiplepagerequestsusingauniqueidstoredinacookie.here'showtomanageetheemefectively:1)Startassession withsession_start()andstoredatain $ _ session.2)RegeneratesseSsessidafterloginwithsession_id(the topreventes_id)

PHPでは、次の手順を通じてセッションデータを繰り返すことができます。1。session_start()を使用してセッションを開始します。 2。$ _Sessionアレイのすべてのキー価値ペアを介してforeachループを反復します。 3.複雑なデータ構造を処理する場合、is_array()またはis_object()関数を使用し、print_r()を使用して詳細情報を出力します。 4.トラバーサルを最適化する場合、ページングを使用して、一度に大量のデータの処理を避けることができます。これにより、実際のプロジェクトでPHPセッションデータをより効率的に管理および使用するのに役立ちます。

このセッションは、サーバー側の状態管理メカニズムを介してユーザー認証を実現します。 1)セッションの作成と一意のIDの生成、2)IDはCookieを介して渡されます。3)サーバーストアとIDを介してセッションデータにアクセスします。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

WebStorm Mac版
便利なJavaScript開発ツール

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

ホットトピック









