PHPのコード規約チェックをしてみる CodeSniffer

品質向上のため、phpの書き方をきちんと管理しようとおもい
コード規約に違反してないか調べてくれるPHP_CodeSnifferを入れてみます

開発環境のためComposerでglobalに入れました

Composerのインストールはこちらを参考に
UbuntuでPHPUnitをComposerでインストールしてみる

# composer global require ‘squizlabs/php_codesniffer:*’
# phpcs –version
PHP_CodeSniffer version 1.5.4 (stable) by Squiz (http://www.squiz.net)

入りました

チェックできるコーディング規約を確認します
# phpcs -i
The installed coding standards are Squiz, PSR1, PEAR, PSR2, MySource, PHPCS and Zend

ためしにPSR1とPSR2で、PHPファイルだけをチェックしてみます
# phpcs –standard=PSR1,PSR2 –extensions=php FizzBuzz.php
FILE: /home/user/repos/fizzbuzz.php/FizzBuzz.php
——————————————————————————–
FOUND 9 ERROR(S) AFFECTING 7 LINE(S)
——————————————————————————–
8 | ERROR | Visibility must be declared on method “__construct”
16 | ERROR | Expected “for (…) {\n”; found “for(…) {\n”
22 | ERROR | Visibility must be declared on method “evaluate”
22 | ERROR | Opening brace should be on a new line
23 | ERROR | Inline control structures are not allowed
24 | ERROR | Inline control structures are not allowed
25 | ERROR | Inline control structures are not allowed
29 | ERROR | Visibility must be declared on method “echoFizzBuzz”
29 | ERROR | Opening brace should be on a new line
——————————————————————————–

phpファイル修正前


<?php
class FizzBuzz
{
    private $_start;
    private $_end;

    function __construct($start, $end)
    {   
        $this->_start = $start;
        $this->_end = $end;
    }   

    public function publish()
    {   
        for($i = $this->_start; $i < $this->_end + 1; $i++) {
            $str = $this->evaluate($i);
            $this->echoFizzBuzz($str);
        }   
    }   

    function evaluate($num) {
        if ($num % 15 == 0) return 'FizzBuzz';   
        if ($num % 3 == 0) return 'Fizz';
        if ($num % 5 == 0) return 'Buzz';
        return $num;
    }   

    function echoFizzBuzz($str) {
        echo $str, PHP_EOL;
    }   
}

 
修正します

  • functionにアクセス権をつける
  • forと(の間に半角スペースをいれる
  • {は新しい行から始める
  • インラインの書き方はやめる

<?php

class FizzBuzz
{
    private $_start;
    private $_end;

    public function __construct($start, $end)
    {
        $this->_start = $start;
        $this->_end = $end;
    }

    public function publish()
    {
        for ($i = $this->_start; $i < $this->_end + 1; $i++) {
            $str = $this->evaluate($i);
            $this->echoFizzBuzz($str);
        }
    }

    private function evaluate($num)
    {
        if ($num % 15 == 0) {
            return 'FizzBuzz';
        }
        if ($num % 3 == 0) {
            return 'Fizz';
        }
        if ($num % 5 == 0) {
            return 'Buzz';
        }
        return $num;
    }

    private function echoFizzBuzz($str)
    {
        echo $str, PHP_EOL;
    }
}

これで直りました

VirtualBox上のOSへホスト側からアクセスする

Windows7上でVirtualBox内のUbuntuへアクセスして
WEB画面が見たかったりするときの方法です

Ubuntu上でWEBサーバー(Apache)を立ち上げている状態で
VirtualBoxの設定、アクセスしたいVMを選んで設定ボタンをクリック
virtualbox-portforward

ネットワーク、割り当て「NAT」を選んでポートフォワーディングをクリック
virtualbox-portforward2

プロトコル「TCP」、ホストポート「任意のポート」、ゲストポート「WEBサーバーなら80」、適当な名前をつけて保存
virtualbox-portforward3

Windows7のファイアーウォールブロックが出てきたら、アクセスを許可
virtualbox-portforward4

あとはブラウザを開いて「http://localhost:(さっき指定したホストポート)」にアクセスすると
virtualbox-portforward5

アクセスできました
IEで表示確認したりに便利です

Vagrantを使っていたらこちらを参考ください
VagrantでホストOSからゲストOSへアクセスする

VagrantでホストOSからゲストOSへアクセスする

VirtualBox + Vagrant で仮想OSを使っていて
ホストOSからアクセスしたいときは


# vim Vagrant
Vagrant.configure("2") do |config|
  config.vm.box = "precise32"
+  config.vm.network :forwarded_port, host: 4567, guest: 80
...
end

で「+」の部分を追記して
vagrant up (起動してたら vagrant reload)
でホストOSのブラウザで「http://localhost:10080/」にアクセスするとうまくいきました

VirtualBoxのGUIで設定するならこちら
VirtualBox上のOSへホスト側からアクセスする

英語のサイトを見るのに便利なChromeエクステンション

英語が苦手..を克服するためChromeエクステンションを2つ入れてます

単語を選択するとこんな感じで訳がでます
chrome-English

拡張機能速訳!英辞郎®英和辞書

英語をダブルクリックや選択すると、日本語の訳が下に出てきます

拡張機能Google Dictionary (by Google)

英語をダブルクリックか英英辞書として訳が出るし、発音もクリックすれば聞けます
リンクが貼られている単語だと使えないので、選択して訳が出るように設定を変えました

拡張機能からオプションで「Display pop-up when I select a word or phrase」を選択
chrome-googledictionary

Google Dictionaryだけでいけるようになれば、英語力アップと思って入れてますがまだまだです