PHPノート4--共通関数、エラー処理


文書ディレクトリ
  • 共通関数
  • 出力関数
  • 時間関数
  • 数学関数
  • 関数に関する関数
  • エラー処理
  • 誤分類
  • エラーコード
  • エラートリガ
  • エラー表示設定
  • エラーログ設定
  • カスタムエラー処理

  • 一般的な関数
    しゅつりょくかんすう
    print():echo出力が提供するコンテンツと同様に、本質は構造(関数ではない)であり、1を返し、カッコ(構造が関数ではないため)print_を使用する必要はありません.r():var_に類似dump、でもvar_よりdumpは簡単で、データのタイプは出力されず、値のみが出力されます(配列印刷で使用されることが多い)
    echo print('hello 
    '
    ); //1 print 'hello
    '
    ; //hello $a = 'hello world'; //hello world print_r($a)

    じかんかんすう
    date():指定されたフォーマットに従って対応するタイムスタンプ(1970年グリニッジ時間から計算された秒数)を対応するフォーマットに変換し、特定のタイムスタンプが指定されていない場合は、現在のタイムスタンプtime():現在のタイムスタンプに対応するタイムスタンプmicrotime():マイクロ秒レベルのタイムstrtotime()を取得する:所定の形式の文字列からタイムスタンプに変換(中国語ではできません)
    print date('Y m d  
    '
    ); //2020 09 10 echo '
    1'
    ; print time(); //1599747674 echo '
    2'
    ; print microtime();//0.06321500 1599747765 echo '
    3'
    ; print strtotime('tomorrow 10 hour');//15997475660.47206800

    数学関数
    max():指定パラメータの最大値min():2つの数のうち小さい値rand():1つの乱数、指定区間のランダム整数mt_を得るrand():randと同様に、下位構造が異なるだけで、効率がrandより高い(推奨使用)round():四捨五入ceil():floor():下向きに整列pow():指定数を求める指定指数次結果:pow(2,8)==2^8==256 abs():絶対値sqrt():平方根を求める
    関数関連関数
    function_exists():指定した関数名がメモリに存在するかどうかを判断します(ユーザーが存在しない関数を使用しないようにし、コードのセキュリティを向上させるのに役立ちます)func_get_Arg():指定した数値に対応するパラメータをカスタム関数で取得します.実パラメータ位置func_get_Args():カスタム関数ですべてのパラメータ(配列)を取得する--すべての実パラメータfunc_num_args():現在のカスタム関数のパラメータ数を取得する-実パラメータ数
    function test ($a,$b){
         
    	
    	var_dump(func_get_arg(1));//string(1) 
    	var_dump(func_get_args());// array(4) { [0]=> int(1) [1]=> string(1) "2" [2]=> int(3) [3]=> int(4) }
    	var_dump(func_num_args());// int(4)
    	}
    
    function_exists('test')&&test(1,'2',3,4);
    

    エラー処理
    システム(またはユーザ)が特定のコードを実行するときにエラーを発見し,エラー処理の形式でプログラマーに知らせることを指す.
    エラー分類
    1)文法エラー(コンパイルエラー):ユーザーが書くコードはPHPの文法規範に合わない.文法エラーはコードがコンパイル中に通過しないことを招くので、コードは実行しない(Parse error)2)実行時エラー:コードコンパイルは通過するが、コードは実行中にいくつかの条件が満たされないことによるエラー(runtime error)が発生する3)論理エラー:プログラマーがコードを書く時に規範が足りなくて、いくつか論理的なエラーが発生して、コードが正常に実行して、しかし所望の結果が得られない
    エラーコード
    見たエラー番号はすべてPHPでシステム定数として定義されている(直接使用可能)1)システムエラー:E_PARSE:Parse error,コンパイルエラー,コードはE_を実行しませんERROR:Fatal error、致命的なエラーにより、コードが正しく実行されなくなる(エラーの位置が切れた)E_WARNING:Warning,警告エラー,コード実行に影響しませんが,予想外の結果が得られる可能性がありますE_NOTICE:Notice,通知エラー,コード実行に影響しない2)ユーザエラー:E_USER_ERROR, E_USER_WARNING, E_USER_NOTICEユーザがカスタムエラートリガを使用する場合に使用するエラー番号(システムは使用しない)3)その他:E_ALLは、すべてのエラー(通常はエラー制御時に使用されることが多い)を表し、開発中(開発環境)にEで始まるすべてのエラー定数(代名詞)を使用することを推奨するが、実際には1バイトで格納され、各エラーが対応するビット(例えば0000 0001はE_ERROR、0000 0010はE_WARNING)を占め、誤った制御を行う場合は、ビット演算を使用して通知レベルnotice:E_を除外できます.ALL & ~E_NOTICE(解釈:例えばE_ALLが11111111、E_NOTICEが00000100、~E_NOTICEが11111011、&演算後11111011、E_NOTICEが除外されている)警告と通知:E_WARNING | E_NOTICE(解釈:例えば、E_WARNINGが00000010、E_NOTICEが00000100、|演算後00000110であれば、E_WARNINGとE_NOTICEのみを含むことを示す)
    エラートリガ
    プログラム実行時トリガ:システムは自動的にエラー発生後、対応するエラー情報を比較して、ユーザー(主にコードの文法エラーと実行時エラーに対して)に出力して人為的にトリガする:いくつかのロジックがエラーになる可能性があることを知って、それによって対応する判断コードを使用して応答のエラーメッセージをトリガするトリガ方式、Trigger_error(エラープロンプト、ユーザーレベルのerror/warning/notice情報を生成)
    $b =0 ;
    if($b ==0){
         
    	Trigger_error('     0'); //  :Notice:      0 in C:\E\server\www\test3.php on line 88
    	Trigger_error('     0',E_USER_ERROR);//Fatal error:      0 in C:\E\server\www\test3.php on line 89
    	}
    

    エラー表示設定
    PHPでは、現在のスクリプトのエラー処理1、PHPのプロファイルを設定する2つの方法があります.グローバルプロファイル:php.iniファイルdisplay_errors:エラーerror_を表示するかどうかReporting:どのレベルのエラーが表示されますか?
    display_errors = On
    error_reporting = E_ALL
    

    2、実行するPHPスクリプトの中で設定することができる:スクリプトの中で定義する構成項目のレベルは配置ファイルより高い(通常開発中にコードの中で制御と配置を行う)error_Reporting():対応するエラー表示レベルを設定し、パラメータなしで現在のシステムエラー処理に対応するレベル設定を取得する例:error_reporting(E_ERROR | E_WARNING | E_PARSE) ini_set(‘プロファイル内のコンフィギュレーションアイテム’,コンフィギュレーション値)ini_set(‘error_reporting’,E_ALL); ini_set(‘display_errors’,1);
    エラーログの設定
    実際の生産環境では、エラーを直接ユーザーに見せることはありません:1、友好的ではありません2、安全ではありません:エラーはウェブサイトの多くの情報(パス、ファイル名)を暴露しますので、生産環境では、一般的にエラーを表示しません(エラーも少ないです)が、エラーを避けることはできません(テスト時にすべての問題が発見されません)、このときは見たくありませんが、バックグラウンドプログラマーが変更できるようにキャプチャしたい:ログファイルに保存する必要があります.PHPプロファイルまたはコード(ini_set)に対応error_を設定する必要があります.log構成項目1、ログオン機能
    log_errors = On
    

    2、パスの指定(ファイルが自動的に生成されないことを指定し、手動で作成しなければならない)
    error_log = 'C:/E/server/logs/php_errors.log'
    

    カスタムエラー処理
    最も簡単なエラー処理:trigger_Errors()関数ですが、PHPシステムがエラーを報告することを阻止することはできません.ユーザーがエラー処理関数をカスタマイズし、その関数をシステムエラー処理のハンドルに追加し、エラーに遭遇した後、ユーザー定義のエラー関数を使用します.
    1、ユーザーがカスタマイズした関数をどのようにシステムに配置しますか?set_error_handler()2、カスタムエラー処理関数、システムはドキュメントを参照する必要がある
    //         
    header('Content-type:text/html;charset=utf-8');
    //           ,       
    function my_error($errno,$errstr,$errfile,$errline){
         
    	//error_reporting() & $errno:         ($errno)            (error_reporting())      ,        return       。
    	//if(error_reporting()&$errno){
         
    	//	return false;
    	//	}
    	//echo 'string';
    	switch($errno){
         
    		case E_USER_ERROR:
    				echo '1fatal error in file '.$errfile.' line '.$errline.'
    '
    ; echo 'error info: '.$errstr; break; case E_USER_WARNING: echo '2fatal error in file '.$errfile.' line '.$errline.'
    '
    ; echo 'error info: '.$errstr; break; case E_USER_NOTICE: echo '3fatal error in file '.$errfile.' line '.$errline.'
    '
    ; echo 'error info: '.$errstr; break; case E_ALL: echo '4fatal error in file '.$errfile.' line '.$errline.'
    '
    ; echo 'error info: '.$errstr; break; default: echo '5fatal error in file '.$errfile.' line '.$errline.'
    '
    ; echo 'error info: '.$errstr; break; } } // : echo $a;// Notice: Undefined variable: a in C:\E\server\www\test3.php on line 157 set_error_handler('my_error');// , my_error echo $a;// 5fatal error in file C:\E\server\www\test3.php line 163

    現在は単純なカスタムモードであり、複雑にする場合は、コード機能に影響を与えるエラーが発生した後、指定したインタフェースにユーザーをジャンプさせることができます.