PHPプログラミング

ワークショップ

ひと言掲示板を作る(13)

コードを整理する

「ひと言掲示板」で今まで作成してきたコードについて、使っていない箇所などを整理していきます。

この記事のポイント

  • 不要なコードは可能な限り削除する
  • コード全体で共通になる設定情報は定数にする

目次

メンテナンスしやすいようにコードを綺麗にする

前回まではメッセージの管理にMariaDBを導入し、投稿や読み込みを行えるようにしてきました。
今のコードはファイルで投稿を管理していたときのコードも残っているためやや煩雑です。
そこで、今回はコードを整理していきましょう。

「ひと言掲示板を作る」の概要については「ひと言掲示板を作る」をご覧ください。
デモはこちら

前回までに作成したコードはこちら:Github

ファイル関連の処理を削除する

まず、ファイルのパスを書いた定数から削除します。
次の赤字の箇所を削除してください。

<?php

// メッセージを保存するファイルのパス設定
define( 'FILENAME', './message.txt');

-- 省略 --

続いて、データベースを導入した際にコメントアウトしたコードも削除していきましょう。
次の赤字でコメントアウトしている箇所を削除しましょう。

コード例

<?php

-- 省略 --

if( !empty($_POST['btn_submit']) ) {
	
	-- 省略 --

	if( empty($error_message) ) {

		/*
		if( $file_handle = fopen( FILENAME, "a") ) {
	
		    // 書き込み日時を取得
			$now_date = date("Y-m-d H:i:s");
		
			// 書き込むデータを作成
			$data = "'".$clean['view_name']."','".$clean['message']."','".$now_date."'\n";
		
			// 書き込み
			fwrite( $file_handle, $data);
		
			// ファイルを閉じる
			fclose( $file_handle);
	
			$success_message = 'メッセージを書き込みました。';
		}
		*/
		
		// データベースに接続
		$mysqli = new mysqli( 'localhost', 'root', 'password', 'board');

-- 省略 --

削除すると、コードは次のようになります。

コード例

<?php

-- 省略 --

if( !empty($_POST['btn_submit']) ) {
	
	-- 省略 --

	if( empty($error_message) ) {
		
		// データベースに接続
		$mysqli = new mysqli( 'localhost', 'root', 'password', 'board');

-- 省略 --

続いて、次の赤字でコメントアウトしているファイル読み込みの部分を削除します。

コード例

<?php

-- 省略 --

/*
if( $file_handle = fopen( FILENAME,'r') ) {
    while( $data = fgets($file_handle) ){

		$split_data = preg_split( '/\'/', $data);

		$message = array(
			'view_name' => $split_data[1],
			'message' => $split_data[3],
			'post_date' => $split_data[5]
		);
		array_unshift( $message_array, $message);
	}
    
    // ファイルを閉じる
    fclose( $file_handle);
}
*/

// データベースに接続
$mysqli = new mysqli( 'localhost', 'root', 'password', 'board');
	
-- 省略 --

削除すると次のようになります。

コード例

<?php

-- 省略 --

if( !empty($_POST['btn_submit']) ) {

-- 省略 --

}

// データベースに接続
$mysqli = new mysqli( 'localhost', 'root', 'password', 'board');

// 接続エラーの確認
if( $mysqli->connect_errno ) {
	$error_message[] = 'データの読み込みに失敗しました。 エラー番号 '.$mysqli->connect_errno.' : '.$mysqli->connect_error;
} else {

	$sql = "SELECT view_name,message,post_date FROM message ORDER BY post_date DESC";
	$res = $mysqli->query($sql);

    if( $res ) {
		$message_array = $res->fetch_all(MYSQLI_ASSOC);
    }

    $mysqli->close();
}

?>
<!DOCTYPE html>

-- 省略 --

不要な部分がなくなり、コードがスッキリしましたね。
さらにもう少しコードを少なくできるように修正していきます。

データベースの接続情報を定数にする

次にデータベースの接続情報の部分を見直していきます。
今回のコードであれば、mysqliクラスのオブジェクトを作成してデータベースに接続する箇所が該当します。

コード例

// データベースに接続
$mysqli = new mysqli( 'localhost', 'root', 'password', 'board');

これらの接続情報は不変なので、それぞれ定数に置き換えていきます。
先ほど削除したファイルパスの定数が書かれていた場所に、次のように定数の宣言を追記してください。

コード例

<?php

// データベースの接続情報
define( 'DB_HOST', 'localhost');
define( 'DB_USER', 'root');
define( 'DB_PASS', 'password');
define( 'DB_NAME', 'board');

// タイムゾーン設定
date_default_timezone_set('Asia/Tokyo');

-- 省略 --

続いて、この定数をデータベース接続部分で使用するように変更します。
まずはデータ登録の方の接続部分からコードを修正しましょう。

コード例

<?php

-- 省略 --

if( !empty($_POST['btn_submit']) ) {
	
	-- 省略 --

	if( empty($error_message) ) {
		
		// データベースに接続
		$mysqli = new mysqli( DB_HOST, DB_USER, DB_PASS, DB_NAME);

-- 省略 --

細かい部分ですが、ベタな文字列から定数への変更なので「」が不要になる点に注意してください。

続いて、読み込みの接続部分を修正します。

コード例

<?php

-- 省略 --

if( !empty($_POST['btn_submit']) ) {

-- 省略 --

}

// データベースに接続
$mysqli = new mysqli( DB_HOST, DB_USER, DB_PASS, DB_NAME);

// 接続エラーの確認
if( $mysqli->connect_errno ) {
	$error_message[] = 'データの読み込みに失敗しました。 エラー番号 '.$mysqli->connect_errno.' : '.$mysqli->connect_error;
} else {

	$sql = "SELECT view_name,message,post_date FROM message ORDER BY post_date DESC";
	$res = $mysqli->query($sql);

    if( $res ) {
		$message_array = $res->fetch_all(MYSQLI_ASSOC);
    }

    $mysqli->close();
}

?>
<!DOCTYPE html>
-- 省略 --

ここまで修正したら、ブラウザで開いて正常に動作するかを確認してみてください。

今回はデータベースの接続情報を定数にしましたが、今後もしサーバー移管などで設定情報に変更があったときも定数の宣言部分の値を修正するだけで対応できるようになりました。
少しだけメンテナンスが楽になります。

以上でコードの整理は完了です。
次回は、セッションを導入してユーザーの書き込みがより便利になるようにしていきます。

今回作成したコード:Github

こちらの記事は役に立ちましたか?

ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。

コメントありがとうございます!
運営の参考にさせていただきます。