PHP の PATH_SEPARATOR について
PHP で set_include_path() を使って,パスを追加するとき Windows 系と,UNIX 系では
パスの区切り文字が違うので,今までは
if (strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN') {
set_include_path(get_include_path() . ':./libs');
} else {
set_include_path(get_include_path() . ';./libs');
}
とかやっていた.
最近 PATH_SEPARATOR という定数を知って
set_include_path(get_include_path() . PATH_SEPARATOR . './libs');
で幸せになっていたら,PATH_SEPARATOR が定義されていない場合があることが分かった.
そこで,正解としては,
if (!defined('PATH_SEPARATOR')) {
if (strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN') {
define('PATH_SEPARATOR', ':');
} else {
define('PATH_SEPARATOR', ';');
}
}
set_include_path(get_include_path() . PATH_SEPARATOR . './libs');
ということになるのかな.損したか得したか分からない (汎用的なのは間違いなさそうだけど).