PHPを改めて基礎から学ぶといいことがあった。

こんにちは、ShellingSoftです。

今までなんとなくPHPを使っていましたが改めて基礎から学び直すことにしました。というのも最近Laravelを勉強しているのですがLaravelはPHPを使うためです。

[改めて知ったこと]
・コメントアウトは # でもOK
・if文などの比較は文字列を数値に変換している
・ヒアドキュメントならぬナウドキュメントなるものがある
・関数内からでも関数外の変数を変更できる
・関数の引数に型を設定できる。
・オブジェクトが使える

■ コメントアウトは # でもOK

コメントアウトは // や /* */ だけかと思っていましたが # も使えるみたいです。 # でコメントアウトしているとまるでシェルスクリプトみたいですね。ただ、# でのコメントアウトは混乱を避けるために使用しないほうが良いそうです。今まで通り // と /* */ を使っていったほうが良さそうですね。

■ if文などの比較は文字列を数値に変換している

数値に変換できるものは数値に変換して比較しています。
例えば、下記のように”01″と”1″を比較した場合は1に変換されてから比較しているので条件式はtrueになります。

if ( "01" == "1" ){
    echo "true"
}

また、下記の場合、”2 pack”は2に変換されて11と比較されるので条件式はtrueになります。

if ( "2 pack" < 11 ){
    echo "true"
}

“2 pack”が2に変換されるのは少し驚きでした。

ちなみに、文字列として比較したい場合はstrcmp()という関数を使うみたいです。

■ ヒアドキュメントならぬナウドキュメントなるものがある

ヒアドキュメントは下記のように <<< を使用して複数行を出力するときに便利な機能です。<<< の後に記載した文字列が現れるまでが対象です。二重引用符 ” で囲ったときと同じように変数は展開されます。

$msg = "ヒアドキュメント";
print <<< TEST
<html>
<head><title>HTML</title></head>
<body>
$msg
</body>
</html>
TEST;

[出力結果]

<html>
<head><title>HTML</title></head>
<body>
ヒアドキュメント
</body>
</html>

ナウドキュメントは <<< の後の文字列を単一引用符 ‘ で囲むことによってナウドキュメントになります。使い方はヒアドキュメントとほとんど同じですが変数が展開されません。

$msg = "ナウドキュメント";
print <<< 'TEST'
<html>
<head><title>HTML</title></head>
<body>
$msg
</body>
</html>
TEST;

[出力結果]

<html>
<head><title>HTML</title></head>
<body>
$msg
</body>
</html>

中身をそのまま出力したいときに便利ですね。

■ 関数内からでも関数外の変数を変更できる

$GLOBALS や global を使用することで関数外の変数を変更できます。

$GLOBALS は下記のようにして使います。

$n = 0;
function test(){
    $GLOBALS['n'] = 1;
}

global を使う場合は下記のように使います。

$n = 0;
function test(){
    global $n;
    $n = 1;
}

global より $GLOBALS を使ったほうが良いそうです。$GLOBALS のほうが変数にアクセスするたびにグローバル変数を対象にしているとわかりやすいためです。

■ 関数の引数に型を設定できる。

関数の引数に型を指定することによって正しくない型を使ったときに警告を出せます。使い方は下記のように引数の前に型を書きます。

function test(int $n){
    echo $n;
}

ただし、厳密に型をチェックしてくれる訳ではないようです。自動で数値を文字列に変換したり、逆に文字列を数値に変換するみたいです。上記の関数を呼び出すときに文字列の “01” を引数に設定してもエラーなく通ります。もちろん “test” を引数に設定するとエラーになります。

■ オブジェクトが使える

PHPでもjavaなどのようにオブジェクトが使えます。オブジェクトを使えば再利用可能なコードを作成しやすいので便利です。

PHPを改めて勉強すると意外と知らないことを発見できました。
今回紹介したことは「初めてのPHP」に乗っています。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

fifteen + 9 =