PHPで複数行をコメントアウトする方法について

採用はこちら

PHPで複数行をまとめてコメントアウトする場合は、/**/で対象となる範囲を囲みます。

<?php

/*
echo "1行目";
echo "2行目";
echo "3行目";
*/

?>

/*がコメントの開始を表し、*/がコメントの終了を表します。

この間に記述されたPHPコードは実行されません。

複数行にわたる説明を書きたい場合や、複数行のコードを一時的に無効化したい場合に利用できます。

目次

PHPで使用できるコメントの種類

PHPでは、主に//#/* */の3種類のコメント記法を使用できます。

それぞれ用途が異なるため、目的に応じて使い分けることが大切です。

//を使った1行コメント

//を記述すると、基本的にその位置から行末までがコメントとして扱われます。

<?php

// この行はコメントです
echo "Hello";

?>

コードの説明を記述したり、1行だけ処理を無効化したりするときによく使用されます。

複数行のコードについても、各行の先頭に//を付ければまとめてコメントアウトできます。

<?php

// echo "1行目";
// echo "2行目";
// echo "3行目";

?>

Visual Studio CodeやPhpStormなどのコードエディタでは、複数行を選択して一括で//を付けたり外したりできるため、実際の開発でもよく利用される方法です。

#を使った1行コメント

PHPでは、#を使用して1行コメントを書くこともできます。

<?php

# この行もコメントです
echo "Hello";

?>

基本的な役割は//と同じです。

ただし、一般的なPHPコードでは//のほうが広く使用されています。

また、PHP 8以降では#[という記述がAttributeの構文として使用されるため、特別な理由がなければ1行コメントには//を使用すると分かりやすいでしょう。

/* */を使った複数行コメント

複数行にわたるコメントを記述したい場合は、/**/で囲みます。

<?php

/*
ここはコメントです。
複数行にわたって
文章を書くことができます。
*/

echo "Hello";

?>

複数行の説明を書く場合だけでなく、一まとまりのPHPコードを一時的に無効化するときにも使用できます。

複数行のPHPコードを一時的に無効化する方法

PHPの開発中には、特定の処理だけを一時的に実行させたくないことがあります。

たとえば、次のようなコードがあるとします。

<?php

echo "処理開始";

$result = calculatePrice();
saveDatabase($result);
sendEmail($result);

echo "処理終了";

?>

中央の3行だけを一時的に停止したい場合は、次のように/* */で囲みます。

<?php

echo "処理開始";

/*
$result = calculatePrice();
saveDatabase($result);
sendEmail($result);
*/

echo "処理終了";

?>

これによって、囲まれた部分はPHPの処理対象から外れます。

デバッグや不具合の原因調査などで、一部の処理だけを一時的に停止させたい場合に便利です。

//で複数行をコメントアウトする方法

複数行だからといって、必ず/* */を使用しなければならないわけではありません。

それぞれの行の先頭に//を付ける方法もあります。

<?php

// $name = "Tanaka";
// $age = 30;
// echo $name;
// echo $age;

?>

特にコードエディタのコメント切り替え機能を利用する場合は、この方法が使いやすいでしょう。

//によるコメントアウトが便利なケース

既存のコード内に/* */形式のコメントが含まれている場合は、各行に//を付ける方法が便利です。

ブロックコメントは基本的に入れ子にできないため、既存のブロックコメントを含む範囲全体をさらに/* */で囲むと問題が発生する可能性があります。

そのため、一時的に複数行を無効化する目的では、エディタの機能を使って各行に//を付ける方法もよく利用されます。

PHPの複数行コメントはネストできない

PHPで/* */を使用するときに特に注意したいのが、コメントのネストです。

/* */形式のコメントは、基本的に入れ子にして使用できません。

たとえば、次のようなコードは避ける必要があります。

<?php

/*
echo "テスト";

/*
ここもコメント
*/

echo "終了";
*/

?>

内側にある最初の*/がコメントの終了として解釈されるため、意図していた範囲全体をコメントアウトできません。

場合によっては構文エラーの原因になります。

既存のブロックコメントがある場合の対処法

すでに/* */を含んでいるコード全体を無効化したい場合は、各行に//を付ける方法が安全です。

<?php

// echo "テスト";
// /*
// ここは既存のコメント
// */
// echo "終了";

?>

コードエディタのショートカットを利用すれば、複数行へ一括で//を付けたり削除したりできます。

PHPとHTMLが混在している場合のコメントアウト方法

PHPファイルでは、PHPコードとHTMLが同じファイル内に記述されていることがあります。

たとえば、次のような構成です。

<h1>タイトル</h1>

<?php
echo "PHPの処理";
?>

<p>本文です。</p>

PHPとHTMLではコメントの仕組みが異なるため、それぞれに適したコメント記法を使用する必要があります。

PHPコードをコメントアウトする場合

PHPコードを無効化する場合は、PHPタグ内で//または/* */を使用します。

<?php

/*
echo "PHPの処理";
echo "別の処理";
*/

?>

これによって、コメント内のPHP処理は実行されません。

HTMLをコメントアウトする場合

HTML部分をコメントアウトする場合は、<!-- -->を使用します。

<!--
<h1>タイトル</h1>
<p>本文です。</p>
-->

これによって、対象となるHTMLは通常ブラウザ上に表示されなくなります。

HTMLコメント内のPHPは実行されるので注意する

特に注意したいのは、HTMLコメントでPHPコードを囲んでも、PHP自体はコメントアウトされないことです。

たとえば、次のように記述してもPHP処理は実行されます。

<!--
<?php
sendEmail();
?>
-->

PHPはサーバー側で処理されたあとにHTMLとしてブラウザへ送信されます。

そのため、PHPの処理そのものを停止したい場合は、HTMLコメントではなくPHPのコメント記法を使用する必要があります。

<?php

// sendEmail();

?>

または、

<?php

/*
sendEmail();
*/

?>

のように記述します。

PHPDocと通常のコメントの違い

PHPでは、次のような形式のコメントを見ることもあります。

/**
 * ユーザー情報を取得する
 *
 * @param int $id ユーザーID
 * @return array
 */
function getUser($id)
{
    // 処理
}

この/** */は、PHPDocなどで利用されるドキュメントコメント形式です。

PHPDocはコードの仕様を説明するために使う

PHPDocでは、関数やクラス、メソッド、プロパティなどの仕様を記述できます。

たとえば、次のように記述します。

/**
 * 商品価格を計算します。
 *
 * @param int $price 商品価格
 * @param float $tax 税率
 * @return float
 */
function calculatePrice($price, $tax)
{
    return $price * (1 + $tax);
}

@paramで引数を説明し、@returnで戻り値を説明できます。

PHPDocは、単純にコードを無効化するためのコメントとは目的が異なります。

一時的にコードを実行させたくない場合は、通常の//または/* */を使用するのが適しています。

エディタのショートカットで複数行をコメントアウトする方法

実際のPHP開発では、コメント記号を毎回手入力するより、コードエディタのショートカットを利用すると効率的です。

Visual Studio Codeで行コメントを切り替える

Visual Studio Codeでは、複数行を選択した状態でコメント切り替えのショートカットを利用できます。

WindowsやLinuxでは、一般的に次のショートカットを使用します。

Ctrl + /

macOSでは次のショートカットです。

Command + /

たとえば、

$name = "Yamada";
$age = 25;
echo $name;

という3行を選択してショートカットを実行すると、

// $name = "Yamada";
// $age = 25;
// echo $name;

のように各行へ//を追加できます。

もう一度同じ操作を行えば、コメントを解除できます。

Visual Studio Codeでブロックコメントを切り替える

Visual Studio Codeでは、ブロックコメントを切り替えるショートカットもあります。

Windowsでは次の操作です。

Shift + Alt + A

macOSでは次の操作です。

Shift + Option + A

Linuxでは、環境によって次のショートカットが使用されます。

Ctrl + Shift + A

ただし、エディタの設定やキーマップによってショートカットが変更されている場合があります。

/* *///はどちらを使うべきか

PHPでは、/* *///のどちらでも複数行のコードを無効化できます。

ただし、用途によって使い分けるとコードを管理しやすくなります。

複数行の説明を書くなら/* */

長めの説明をまとめて書く場合は、ブロックコメントが適しています。

/*
この処理では商品データを取得したあと、
在庫状況を確認して
表示する内容を変更しています。
*/

文章として複数行の説明を記述したい場合に分かりやすい方法です。

一時的なコードの無効化なら//も便利

複数行のPHPコードを一時的に無効化する場合は、各行へ//を付ける方法も便利です。

// $data = getData();
// $result = calculate($data);
// save($result);

特に既存コードの中に/* */が含まれている場合でも影響を受けにくいため、デバッグ時の一時的なコメントアウトに向いています。

PHPでコメントアウトするときの注意点

コメントアウトは簡単に利用できますが、実際の開発ではいくつか注意したいポイントがあります。

コメントアウトした古いコードを残しすぎない

一時的に無効化したコードを長期間残していると、ソースコードが読みにくくなります。

たとえば、

// $oldResult = oldFunction();
// saveOldData($oldResult);

$result = newFunction();
saveData($result);

のような古いコードが大量に残っていると、現在使用されている処理が分かりにくくなります。

Gitなどのバージョン管理システムを利用している場合は、不要になったコードを削除しても過去の履歴を確認できます。

そのため、チーム開発などでは不要なコメントアウトコードを長期間残さないことが一般的です。

コメントには「なぜ」を書く

コードの説明としてコメントを記述する場合は、処理内容そのものだけでなく「なぜその処理が必要なのか」を記述すると分かりやすくなります。

たとえば、

// 税込価格を計算する
$price = $price * 1.1;

というコメントでも意味は伝わりますが、コードを見れば税込価格を計算していることはある程度理解できます。

より有用なコメントにするなら、次のように理由を書く方法があります。

// 外部APIが税抜価格を返すため、表示前に税込価格へ変換する
$price = $price * 1.1;

このように記述すると、後からコードを確認する人にも処理の意図が伝わりやすくなります。

PHPで複数行をコメントアウトする方法のまとめ

PHPで複数行をコメントアウトする基本的な方法は、/**/で対象範囲を囲むことです。

/*
echo "Hello";
echo "World";
*/

また、各行の先頭に//を付ける方法でも、複数行のコードを無効化できます。

// echo "Hello";
// echo "World";

複数行の文章や説明を書く場合は/* */が便利です。

一方、デバッグなどでコードを一時的に無効化する場合は、コードエディタの機能を利用して各行に//を付ける方法も扱いやすいでしょう。

特に注意したいのは、/* */形式のコメントは基本的にネストできないことです。

既存のブロックコメントを含むコード全体を一時的に無効化したい場合は、各行へ//を付ける方法を利用するとトラブルを避けやすくなります。

また、HTMLコメント<!-- -->でPHPコードを囲んでも、PHPの処理そのものは停止しません。

PHPの実行を止めたい場合は、必ずPHP側の//#/* */といったコメント記法を使用しましょう。

以上、PHPで複数行をコメントアウトする方法についてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次