例えば次のように文字列中に改行が含まれている場合、その値に \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:58