こんにちは。お世話になっております。
今回は、PHPファイルの改行コードの違いについてお聞きしたくて投稿させて頂きました。
まず前提として、
私はMacを使っており、vimをエディタとして使っております。
そして現在他のwindows系マシンで編集されたPHPファイルをいじっているところです。
では以下のことをご質問させて頂きます。
上で話させて頂きました今扱っているPHPファイルの改行コードが、「 CR+LF」のwindows系のものなので、私がMacで編集しそのまま保存すると「LF」のUNIX系の改行コードに変更されてしまいます。
これはOSが違う環境では普通のことなのでしょうか?
それともこれは元の「CR+LF」のwindows系の改行コードに合わせて保存しないと、PHPの動作自体に影響を与えるものなのでしょうか?
実際の動作環境で改行コードの違いで問題を起こしうるものなのかどうかをお聞きしたいと思います。
できれば具体的な対策も教えて頂けますと幸いです。
初歩的な質問ではありますが、どうぞよろしくお願い致します。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
これはOSが違う環境では普通のことなのでしょうか?
チーム内で取り決めがなければそうなりますね。
ただし、ソース管理やフォーマッターを使っていたりすると最終更新者が書き換わってしまったりする問題が起きるので、以下のようにコーディング規約に基づいて開発するのが基本です。
IDEなどでは、どちらの改行コードを使用するか設定できるので、チーム内で統一しておきましょう。
投稿2015/07/16 06:48
退会済みユーザー
総合スコア0
0
ベストアンサー
例えば次のように文字列中に改行が含まれている場合、その値に \r を含むかどうかという違いがあります。
lang
1<?php 2$str = " 3"; 4var_dump(bin2hex($str));
このようなものが実行時に実際に問題になることはほとんどないと思いますが。。。
これはOSが違う環境では普通のことなのでしょうか?
OS が、というよりエディタが、だと思います。それは vim の機能だと思います。
例えば、Windows でもエディタの設定によっては改行コードを LF にすることはできます。
(というか、大抵の Web 系の開発の人はそうしています)
PHPの動作自体に影響を与えるものなのでしょうか?
前述の通り、ほとんど影響はないと思いますが、絶対にないとは言い切れません。
できれば具体的な対策も教えて頂けますと幸いです。
あらかじめコーディングルールなどで改行を LF にするように規定しておくのが理想です。
PSR-2 でもそのように規定されています。
既存のコードの改修であれば、わたしは次のようにしています。
改行コードを変更しても問題がないことに確信が持てない場合
- 改行コードが CR+LF になるようにエディタの設定を変更する
改行コードを変更しても問題がないことに確信が持てる場合
- メンバーに改行コードを LF にするように周知する
- 改行コードを変更するためだけの修正を行なう
- git などで「Fix line break code」のようなメッセージでコミットする
- 本来修正したかった箇所を修正してコミットする
ポイントは 2 と 3 でコミットを分けることです。これは、後述のようにバージョン管理ツールを使っている場合に、本来変更したかった場所がどこだったのかを少しでもわかりやすくするためです。
また、動作以前の問題として、git などのバージョン管理ツールを使っていると、
私がMacで編集しそのまま保存すると「LF」のUNIX系の改行コードに変更されてしまいます。
によって、すべての行が変更されているかのような差分になってしまい、ほんとうに変更した箇所がわからなくなってしまう、という問題があります(差分ツールの方で改行コードの違いを吸収できることもありますが)。
世間一般で「改行コードは揃えるべき」と強く言われているのは、これが理由だと思います。
投稿2015/07/16 07:03
総合スコア4516
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/07/16 08:28
退会済みユーザー
2015/07/16 08:40
0
私はMacを使っており、vimをエディタとして使っております。
すばらしいです。Vim最高です。
そして現在他のwindows系マシンで編集されたPHPファイルをいじっているところです。
そのアプリケーションが「CR+LF」でそろえた物なら「CR+LF」で開発される事をお勧めします。
それともこれは元の「CR+LF」のwindows系の改行コードに合わせて保存しないと、PHPの動作自体に影響を与えるものなのでしょうか?
実際の動作環境で改行コードの違いで問題を起こしうるものなのかどうかをお聞きしたいと思います。
かなりの確率で問題が発生します。
また、文字コードもUTF-8のBOM付きやShift-JISで保存されている可能性があります。
こちらも確認を行い開発される事をオススメ致します。
できれば具体的な対策も教えて頂けますと幸いです。
実働環境に合わせた改行コードや文字コードにしましょう。
vimの設定については下記のサイト等が参考になるのではないでしょうか?
http://advweb.seesaa.net/article/3074705.html
投稿2015/07/16 06:47
総合スコア775
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2015/07/16 07:55
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2015/07/16 07:58