SlideShare a Scribd company logo
PHP関数他探訪2016
2016/05/21
株式会社Fusic 平田 哲
PHP関数他探訪2016
Fusic Co., Ltd.
自己紹介
3
平田 哲(HIRATA, Satoshi)
id: debility
Fusic Co., Ltd.
http://fusic.co.jp/
Fukuoka.pm
Program, Server, Network, and “Nomikai”
icon: © mutsuking
Fusic Co., Ltd.
三行広告
4
Fusic Co., Ltd.
三行広告
5
エンジニア募集しています。
エンジニア募集しています。
エンジニア募集しています。
Fusic Co., Ltd.
このLTについて
6
圧倒的な物量を誇るPHPの関数をたまには見
直して、愛でる話です。
Fusic Co., Ltd.
重要
7
PHP関数他探訪2016
Fusic Co., Ltd.
重要
8
PHP関数他探訪2016
Fusic Co., Ltd.
重要
9
関数以外も喋ってよし
Fusic Co., Ltd.
このLTについて
10
圧倒的な物量を誇るPHPの関数に限らないも
ろもろをたまには見直して、愛でる話です。
Fusic Co., Ltd.
このLTについて
11
圧倒的な物量を誇るPHPの関数に限らないも
ろもろをたまには見直して、愛でる話です。
Fusic Co., Ltd.
愛でる
12
×
Fusic Co., Ltd.
愛でる
13
× ○
Fusic Co., Ltd.
愛でる
14
× ○ ○
Fusic Co., Ltd.
本日のお品書き
15
前菜
関数の話
関数群の話
関数の仕様の話
デフォルト設定の話
とある.ini変数の話
Fusic Co., Ltd. 16
前菜
Fusic Co., Ltd.
前菜
17
https://bugs.php.net/bug.php?id=71585
Fusic Co., Ltd.
Nortonが誤ってPHPを削除する暴挙
18
https://bugs.php.net/bug.php?id=71585
php-win.exe deleted
by Norton Security
Fusic Co., Ltd.
過去にも
19
https://bugs.php.net/bug.php?id=67930
Norton is classifying this release as insecure and
is deleted all file dll and exe files.
Fusic Co., Ltd. 20
getimagesize
Fusic Co., Ltd.
getimagesize
21
getimagesize(string $filename)
画像の大きさをファイル名から取得する
Fusic Co., Ltd.
getimagesize
22
getimagesize(string $filename)
画像の大きさをファイル名から取得する
list($width, $height, $type, $attr) =
getimagesize(“/path/to/image.jpg”);
Fusic Co., Ltd.
getimagesizefromstring
23
getimagesizefromstring(string $filename)
画像の大きさを文字列から取得する(>=PHP5.4)
Fusic Co., Ltd.
getimagesizefromstring
24
getimagesizefromstring(string $filename)
画像の大きさを文字列から取得する(>=PHP5.4)
$image =
file_get_contents(“/path/to/image.jpg”);
Fusic Co., Ltd.
getimagesizefromstring
25
getimagesizefromstring(string $filename)
画像の大きさを文字列から取得する(>=PHP5.4)
$image =
file_get_contents(“/path/to/image.jpg”);
list($width, $height, $type, $attr) =
getimagesizefromstring($image);
Fusic Co., Ltd.
getimagesizefromstring
26
getimagesizefromstring(string $filename)
画像の大きさを文字列から取得する(>=PHP5.4)
$image =
file_get_contents(“/path/to/image.jpg”);
list($width, $height, $type, $attr) =
getimagesizefromstring($image);
長。
Fusic Co., Ltd. 27
is_xxx
Fusic Co., Ltd.
is_xxx
28
Fusic Co., Ltd.
is_xxx
29
is_array - 変数が配列かどうかを検査する
is_bool - 変数が boolean であるかを調べる
is_callable - 引数が、関数としてコール可能な構造であるかどうか調べる
is_double - is_float のエイリアス
is_float - 変数の型が float かどうか調べる
is_int - 変数が整数型かどうかを検査する
is_integer - is_int のエイリアス
is_long - is_int のエイリアス
is_null - 変数が NULL かどうか調べる
is_numeric - 変数が数字または数値形式の文字列であるかを調べる
is_object - 変数がオブジェクトかどうかを検査する
is_real - is_float のエイリアス
is_resource - 変数がリソースかどうかを調べる
is_scalar - 変数がスカラかどうかを調べる
is_string - 変数の型が文字列かどうかを調べる
Fusic Co., Ltd.
is_xxx
30
is_array - 変数が配列かどうかを検査する
is_bool - 変数が boolean であるかを調べる
is_callable - 引数が、関数としてコール可能な構造であるかどうか調べる
is_double - is_float のエイリアス
is_float - 変数の型が float かどうか調べる
is_int - 変数が整数型かどうかを検査する
is_integer - is_int のエイリアス
is_long - is_int のエイリアス
is_null - 変数が NULL かどうか調べる
is_numeric - 変数が数字または数値形式の文字列であるかを調べる
is_object - 変数がオブジェクトかどうかを検査する
is_real - is_float のエイリアス
is_resource - 変数がリソースかどうかを調べる
is_scalar - 変数がスカラかどうかを調べる
is_string - 変数の型が文字列かどうかを調べる 多。
Fusic Co., Ltd.
is_xxx
31
is_array - 変数が配列かどうかを検査する
is_bool - 変数が boolean であるかを調べる
is_callable - 引数が、関数としてコール可能な構造であるかどうか調べる
is_double - is_float のエイリアス
is_float - 変数の型が float かどうか調べる
is_int - 変数が整数型かどうかを検査する
is_integer - is_int のエイリアス
is_long - is_int のエイリアス
is_null - 変数が NULL かどうか調べる
is_numeric - 変数が数字または数値形式の文字列であるかを調べる
is_object - 変数がオブジェクトかどうかを検査する
is_real - is_float のエイリアス
is_resource - 変数がリソースかどうかを調べる
is_scalar - 変数がスカラかどうかを調べる
is_string - 変数の型が文字列かどうかを調べる
Fusic Co., Ltd.
xxxval
32
Fusic Co., Ltd.
xxxval
33
doubleval - floatval のエイリアス
floatval - 変数の float 値を取得する
intval - 変数の整数としての値を取得する
strval - 変数の文字列としての値を取得する
Fusic Co., Ltd.
xxxval
34
doubleval - floatval のエイリアス
floatval - 変数の float 値を取得する
intval - 変数の整数としての値を取得する
strval - 変数の文字列としての値を取得する
boolval - 変数の boolean としての値を取得する
※ PHP5.5で追加された関数
Fusic Co., Ltd.
boolval
35
echo '0: '.(boolval(0) ? 'true' : 'false')."¥n";
echo '42: '.(boolval(42) ? 'true' : 'false')."¥n";
echo '0.0: '.(boolval(0.0) ? 'true' : 'false')."¥n";
echo '4.2: '.(boolval(4.2) ? 'true' : 'false')."¥n";
echo '"": '.(boolval("") ? 'true' : 'false')."¥n";
echo '"string": '.(boolval("string") ? 'true' : 'false')."¥n";
echo '"0": '.(boolval("0") ? 'true' : 'false')."¥n";
echo '"1": '.(boolval("1") ? 'true' : 'false')."¥n";
echo '[1, 2]: '.(boolval([1, 2]) ? 'true' : 'false')."¥n";
echo '[]: '.(boolval([]) ? 'true' : 'false')."¥n";
echo 'stdClass: '.(boolval(new stdClass) ? 'true' : 'false')."¥n";
Fusic Co., Ltd.
boolval
36
0: false
42: true
0.0: false
4.2: true
"": false
"string": true
"0": false
"1": true
[1, 2]: true
[]: false
stdClass: true
Fusic Co., Ltd.
mt_rand問題
37
http://sucrose.hatenablog.com/entry/2016/02/19/
235506
「PHP の mt_rand() は一貫して壊れている
(consistently broken)らしい」
本来の実装と少しだけ違うメルセンヌツイスタに
なっている
修正のプルリクがmergeされたのちにrevertされる
「後方互換性を壊す変更は議論してからmergeす
べき」と言う理由
Fusic Co., Ltd.
mt_rand問題
38
"Sure it's broken, but at least
it's consistently broken!“
Fusic Co., Ltd.
愛でる(おさらい)
39
Fusic Co., Ltd.
愛でる(おさらい)
40
× ○ ○
Fusic Co., Ltd. 41
default_charset
Fusic Co., Ltd.
default_charset
42
PHP >= 5.6.0 で、デフォルトが “UTF-8” になりました。
※ PHP < 5.6.0 でのデフォルトは空でした。
Fusic Co., Ltd.
default_charset
43
PHP >= 5.6.0 で、デフォルトが “UTF-8” になりました。
※ PHP < 5.6.0 でのデフォルトは空でした。
Shift_JISとか、他の文字コードを同居させているような場合
に、さっくり文字化けたりします(metaタグで書いていても)。
Fusic Co., Ltd.
default_charset
44
PHP >= 5.6.0 で、デフォルトが “UTF-8” になりました。
※ PHP < 5.6.0 でのデフォルトは空でした。
Shift_JISとか、他の文字コードを同居させているような場合
に、さっくり文字化けたりします(metaタグで書いていても)。
Apacheであれば、.htaccessに
php_value default_charset none
とか書いて回避するといいんじゃないでしょうか。
Fusic Co., Ltd. 45
gc_maxlifetime
Fusic Co., Ltd.
session.gc_maxlifetime
46
session.gc_maxlifetime
セッションの保持時間
Fusic Co., Ltd.
session.gc_maxlifetime
47
session.gc_maxlifetime
セッションの保持時間
デフォルトは1440秒 (=24分)
Fusic Co., Ltd.
session.gc_maxlifetime
48
Q. なぜ24分?
Fusic Co., Ltd.
session.gc_maxlifetime
49
Q. なぜ24分?
A. もともと1440分(=1日)だったのが、単位
だけ秒になって数値そのままとの噂
http://stackoverflow.com/questions/14703363/why-is-the-
standard-session-lifetime-24-minutes-1440-seconds
Fusic Co., Ltd. 50
まとめ
Fusic Co., Ltd.
まとめ
51
PHPに限った話ではないですが。
調べてみると新たな発見があって、役に立っ
たりしますよ。
Fusic Co., Ltd.
まとめ
52
PHPに限った話ではないですが。
調べてみると新たな発見があって、役に立っ
たりしますよ。
あと、転んでも泣かない。
Fusic Co., Ltd.
まとめ
53
PHPに限った話ではないですが。
調べてみると新たな発見があって、役に立っ
たりしますよ。
あと、転んでも泣かない。愛でましょう。
Fusic Co., Ltd.
ご清聴ありがとうございました。

More Related Content

PHP関数他探訪2016