Centos6にxdebugを入れてみる

phpunitのcoverageを見るために、xdebugを入れてみました
Centos6.5 + Apache で試しました

$ sudo yum install php-pecl-xdebug –enablerepo=epel

設定ファイルを変更して、xdebugを有効にします
$ vim /etc/php.d/xdebug.ini

zend_extension=xdebug.so

コメントアウトを外すだけ

Apache再起動
$ sudo service httpd restart

これで有効になりました

phpで配列の先頭を取得する

phpで配列の先頭を取得できる関数に

array_shift

がありますが、これは配列から要素を抜いてしまいます(破壊的な関数)

$arr = ['first' => 1, 'second' => 2];

$top = array_shift($arr);
var_dump($top);
// int(1)
var_dump($arr);
/*
配列が小さくなった!
array(1) {
  'second' =>
  int(2)
}
*/

破壊せずに取りたかったら

reset

を使いましょう

$arr = ['first' => 1, 'second' => 2];

$top = reset($arr);
var_dump($top);
int(1)
array(2) {
  'first' =>
  int(1)
  'second' =>
  int(2)
}

phpで古いファイルを削除する

phpで古いファイル方法を消してみました

<?php
$timeLine = strtotime('1 day ago'); // 1
foreach (glob("*.txt") as $filename) { // 2
    chmod($filename, 0666) //3
    $time = filemtime($filename); // 4
    if ($time < $timeLine) {
        unlink($filename);
    }   
}

1.
1day ago を変えれば基準の時間を変えられます
http://php.net/manual/ja/datetime.formats.relative.php
の書式を参考に

2.
globにワイルドカードが渡せます
ディレクトリを指定したいなら
glob(“sample/*.txt”)とかでもいけます

3.
chmod でパーミッションを変更してます
環境によっては不要です

4.
fimemtime でファイルの更新時間が unix time でとれます
date(‘Y-m-d H:i:s’, $time)
とすればわかりやすい時刻が見れます

といった感じです

phpで空文字確認で0が来た場合

phpで空文字だったら..の処理で

if ($var == '') {
    // なんたらかんたら
}

としたりしますがこれだと$varに0が来たら実行されます

$var = 0;
var_dump($var == '');
// -> true

まさかのtrueが返ってきます
暗黙の型変換が入るからです

型まで比較する === を使ったりしましょう

$var = 0;
var_dump($var === '');
// -> true

phpで変数がからっぽか判断
のように strlen を使うほうがおすすめです