質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

3回答

2852閲覧

ATOMでPHPのコメントに「/**/」を使用するとシンタックスハイライトの範囲が正常に認識されない

nureha

総合スコア49

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2015/12/02 07:43

php

1/** 2debug($hoge); 3debug($moge); 4/**/

上記のような形でコメントを記述した際にシンタックスハイライトにおいて閉じタグ以降もコメント内と判断されてしまいます。

イメージ説明

これを一時的にでもいいので何とかしたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

パッケージのソースコードから確認しました。

Atomのlanguage-php(PHPの色づけしているパッケージ)では
/**から始まるとPHPDoc用の特別なコメント
/*だけで始まると普通のコメント
と区別して色づけしています。普通のコメントは単純に*/があれば終了と判断するようになっているのですが、PHPDocの場合は、その間がPHPDocとして正しい書き方であることを前提としています。具体的に言うと空白を除く一番最初の文字が*でない行はPHPDcoの文法エラー扱い※にされ、色づけの処理が行単位で無視されます。そのため、*/が含まれている行でも最初の文字が*以外であれば、そこでPHPDocが終了していると言うことが判断されず、そのままPHPDocとして色づけされることになります。

※ PHPDocでは、必ずアスタリスクから始めなければならないとなっています。
phpDocumentor Document Glossary

DocComments may be a single line in size but may also span multiple lines, in which case each line must start with an asterisk

私訳

DocCommentsは1行だけでなく、複数行にもできますが、それぞれの行は必ずアスタリスクから始めなければなりません。

なお、PHPDocの正式版となるPSR-5はまだドラフトですが、phpDocumentorがメンテナンスしており、同じ事が書いています。

解決方法は3つです。

  1. PHPDocとして間違っているため、正しいPHPDocに修正するか、PHPDocをやめる。
  2. 開発プロジェクトであるPHP language support in AtomのIssuesに報告し、修正をお願いする。ただし、そもそもPHPDocとしては間違っているため、拒否される可能性がある。
  3. 上のソースコードをcloneなりforkなりをして自分専用に修正して、Atomのパッケージとして読み込ませる。具体的には"grammars/php.cson"の1397行目'match': '^(?!\\s*\\*).*$\\n?'について、/**/のようなパターンでは引っかからないように正規表現を修正すれば良い。その後の保守が面倒であれば、修正内容のプルリクエストを送る(同じく拒否される可能性がある)。

投稿2015/12/02 09:53

編集2015/12/02 09:55
raccy

総合スコア21735

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nureha

2015/12/02 10:05

ありがとうございます! PHPDocの件は頭にあったのでまともな対応にはならないだろうとは予想していましたが そもそもその場所も見つけられなかったので大変助かります。 根本解決としては当該部分を@ao_loveさんの表記等に変更するとして、取り急ぎ直近ではこれで急場をしのげそうです。 本当にありがとうございます^^
guest

0

コメントアウトの状態

php

1/* 2debug($hoge); 3debug($moge); 4// */ 5

コメントを外す。
先頭の/*を//*にする

php

1//* 2debug($hoge); 3debug($moge); 4// */

コメントのスイッチはこの形の方が今後のことを考えてもいいかなぁ…と思います。
スラッシュ1つで切り替わるのは同じです。
/** の形は maisumakunさんもおっしゃられるように、PHPDocを解釈するエディタなどはすべて同じようになる気がしますし。(ちなみに手元のSublimeTextでも同じようにすべてコメントとして解釈してました)

一括置き換えとかで置き換えてしまうのは問題があるでしょうか??

投稿2015/12/02 08:20

編集2015/12/02 08:22
ao_love

総合スコア441

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nureha

2015/12/02 08:31

いいですね!少なくとも今後新しく追加する際にはこの記述法を利用しようかと思います。 既存についてはやはり基本的には書き換え必須っぽいですね・・・ Atomに限らないとなれば一応名目は立つのかな。
ao_love

2015/12/02 09:24

早目に書き換えて手法を統一したほうが幸せになれる気がしますね…。 他にも困ってらっしゃる方がいるような気がします。
guest

0

推測ですけど、コメントの開き部分が/**となっているのが原因ではないでしょうか。

/**で始まるコメントはPHPDocといって、メソッドの動作などを関連付けるためなどの意味を持つことがあるコメントです。

単なるコメントアウトでしたら、開き部分を/*だけにすることで改善しないでしょうか。

投稿2015/12/02 07:49

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nureha

2015/12/02 08:31 編集

この記述法については開始タグのあとにスラッシュ1文字だけを記述・削除することで 指定範囲のコメントアウト・解除を切り替えられることからそれなりの頻度で利用されています。 いずれにせよ既存ソースがこうなっている以上なるべくそこには手を入れずに変更をしたいと考えています。 (他の人もAtomを利用しているという状況でもないですし・・・)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問