PHPで詰まった部分
開発環境は、Windows 7 Professional(32bit) + PHP 7.1.7。
■定数を使う
<?php define("TEISU", "定数です"); echo TEISU; # 定数です ?>
■trait(トレイト)を使う
RubyのモジュールをクラスにMixinするみたいなことが、PHPでもtrait(トレイト)を使うことでできます。あるクラスにトレイトを入れることで、そのクラスのオブジェクト経由でトレイト内の関数を呼び出すことができます。
<?php trait m{ function name(){ echo "trait m -> name\n"; } } class A{ use m; } $a = new A(); $a->name(); ?>
実行結果
trait m -> name
参考リンク
PHP: トレイト - Manual
■再帰関数内で変数の値を保持する
変数の前にstaticをつけることで、静的変数となり、値を保持し続けることができます。変数aの値が10より大きい限り、自身を呼び出します。自身を呼び出しても、値が変数aは保持されています。もし、staticをつけなければ、毎回20の値が変数aに入り、無限ループしてしまいます。
<?php function t(){ static $a = 20; echo $a; if($a > 10){ $a--; t(); } } t(); ?>
実行結果
20 19 18 17 16 15 14 13 12 11 10
参考リンク
PHP: static キーワード - Manual
PHPの静的変数 (static変数) の挙動まとめ
■文字列を数値に変換する
(int)で型キャストするか、intval($val)を使う。
■数値を文字列に変換する
(string)で型キャストするか、strval($val)を使う。
参考サイト
PHP-数値を文字列として表示する
■型をチェックする
<?php class A{} $var1 = "1023"; $var2 = 1023; $var3 = 3.14; $var4 = true; $var5 = null; $var6 = []; $var7 = new A(); echo gettype($var1)."<br>"; echo gettype($var2)."<br>"; echo gettype($var3)."<br>"; echo gettype($var4)."<br>"; echo gettype($var5)."<br>"; echo gettype($var6)."<br>"; echo gettype($var7)."<br>"; ?>
実行結果
参考サイト
PHP: gettype - Manual
■複数行に渡って文字列を書く
・変数を書いておけば展開もできる
<?php $str = "Hello World"; $s = <<<"EOT" # この括弧の中の文字列は何でも良い。下の文字と一致させること。 test test test $str EOT; # この部分はスペースがあるとエラーになる。 print $s; ?>
実行結果
■四捨五入する
round
参考リンク
PHP: round - Manual
■日付⇔Unixタイムスタンプに変換する
strtotime - 日付をUnixタイムスタンプに変換
date - Unixタイムスタンプを日付に変換
<?php $str = "2018-04-30 00:08:30"; echo strtotime($str); $str2 = strtotime($str); # 1525039710 echo date("Y-m-d H:i:s", $str2); # 2018-04-30 00:08:30 ?>
参考リンク
PHP: strtotime - Manual
PHPで日付関数を使いこなす(date, strtotime)
■オブジェクトかどうか調べる方法
<?php class A{ } $a = new A(); var_dump(is_object($a)); ?>
実行結果
bool(true)
参考リンク
PHP: is_object - Manual
■訪問者のIPアドレスを取得する方法
<?php $_SERVER["REMOTE_ADDR"]; ?>
参考リンク
PHPでipアドレスを取得する方法