#php のコード品質を向上させるいくつかの方法
#1. 相対パスを使用しない
よく見かける:
#
require_once('../../lib/some_class.php');
#この方法には多くの欠点があります: #最初に指定された php インクルード パスを検索し、次に現在のディレクトリを検索するため、チェックされるパスが多すぎます。スクリプトが別のディレクトリのスクリプトにインクルードされている場合、そのベース ディレクトリが他のスクリプトが配置されているディレクトリになります。別の問題は、スケジュールされたタスクがスクリプトを実行するときに、その親ディレクトリが作業ディレクトリではない可能性があることです。
したがって、最良のオプションは絶対パスを使用することです:
define('ROOT' , '/var/www/project/');
require_once(ROOT . '../../lib/some_class.php');
//rest of the code
絶対パスを定義し、値は Dead と書き込まれます。まだまだ改善の余地はあります。パス /var/www/project も変更される可能性があるので、毎回変更する必要がありますか? いいえ、
__FILE__ 定数を使用できます。
//suppose your script is /var/www/project/index.php //Then __FILE__ will always have that full path. define('ROOT' , pathinfo(__FILE__, PATHINFO_DIRNAME)); require_once(ROOT . '../../lib/some_class.php'); //rest of the code
これで、外部サーバーへの移動など、どのディレクトリに移動しても、コードは変更せずに正しく実行されます。
#2. require、include、include_once、required_once を直接使用しないでください。
は使用できます。スクリプト ヘッドにクラス ライブラリ、ツール ファイル、ヘルパー関数などの複数のファイルを次のように導入します。ファイルを含めるヘルパー関数を作成する必要があります。例:
require_once('lib/Database.php'); require_once('lib/Mail.php'); require_once('helpers/utitlity_functions.php');
何が違いますか? コードがより読みやすくなります。将来的には、必要に応じて関数を拡張できます。 like:
function load_class($class_name) { //path to the class file $path = ROOT . '/lib/' . $class_name . '.php'); require_once( $path ); } load_class('Database'); load_class('Mail');
さらにできること:
同じファイルの複数のディレクトリを検索し、クラス ファイルが配置されているディレクトリを簡単に変更するコードを 1 つずつ変更する必要はなく、同様の関数を使用して HTML コンテンツなどのファイルを読み込むことができます。
3. アプリケーションのコードのデバッグを継続する
開発環境では、データベース クエリ ステートメントを出力し、問題のある変数値をダンプします。問題が解決したら、コメントするか削除します。ただし、より良い方法は、デバッグ コードを保持することです。開発環境では、次のことができます。function load_class($class_name) { //path to the class file $path = ROOT . '/lib/' . $class_name . '.php'); if(file_exists($path)) { require_once( $path ); } }サーバーでは、次のことができます。
define('ENVIRONMENT' , 'development'); if(! $db->query( $query ) { if(ENVIRONMENT == 'development') { echo "$query failed"; } else { echo "Database error. Please contact administrator"; } }
推奨チュートリアル: PHP ビデオ チュートリアル
以上がPHP がコードの品質を保証する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。