以前、PHP7に対応した『初めてのPHP』についてざっくりレビューをしました。
[kanren postid=”3978″ date=”none”]
レビューのテイストとしては、PHP始めるなら別の書籍の方がいいよという雰囲気になっています。しかし、この『初めてのPHP』をしっかりと読み込んだところ、私が学び損ねていた知識なんかもふんだんにありました。割とPHP使えてると思ってたんですが、まだまだのようです。ということで、『初めてのPHP』を読み込んで知った新発見(私にとっての)をまとめておきます。もしかしたら、参考になるかも。
- 変数名に顔文字が使える(32ページ)
- if (12 == $messages){} という風に書く条件式の意図(44ページ)
- foreach()を通過するたびに変数を0と1で切り替えるロジック(61ページ)
- implode()を使ったHTMLテーブルの出力(68ページ)
- 関数内部からグローバル変数へアクセスする方法(88ページ)
- 引数と返り値に型宣言ができる(91ページ)
- クラスの中の$thisの意味が腑に落ちた(98ページ)
- null合体演算子(117ページ)
- 検証したりサニタイズしたりできるfilter_input()関数(123ページ)
- 日付が妥当かどうかチェックできる checkdate()関数(127ページ)
- 出力ストリームへの特殊なファイルハンドルphp://output(190ページ)
- ディレクトリトラバーサルを防ぐrealpath()関数(195ページ)
- setcookie()関数が第7引数まで持ってるという事実(204ページ)
- output_buffering構成ディレクティブをOnでエラー回避(218ページ)
- cURLを使ってPHPファイルから外部URLへPOST送信できちゃう(229ページ)
- 構成ファイルの内容を連想配列に変換できるparse_ini_file()関数(270ページ)
- PHP5.4.0以降ではPHPの組み込みWebサーバーを使えた!
- 付箋がいっぱいになったPHP7本
- 初めてのPHP(PHP7対応)
変数名に顔文字が使える(32ページ)
実用性は低いんですが、「変数名の最初の文字に数字は使えない」というルールさえ守れば、後はかなり自由度が高いんだなぁと。顔文字が使えるのは知りませんでした。
if (12 == $messages){} という風に書く条件式の意図(44ページ)
他の人が書いてくれたライブラリを使ってる時にたまに見かける書き方。その意図がよくわかってなかったんですが、数字を左辺に書くことで「==」を「=」と書き間違えた時にPHPがエラーを吐いてくれるという意図があったんですね。なるほどです。
foreach()を通過するたびに変数を0と1で切り替えるロジック(61ページ)
1 |
$styles_index = 0; |
と変数を宣言しておいて、
1 2 3 |
foreach(){ $style_index = 1 - $style_index; } |
するという方法。知らなかったです。本書の例のようにCSSを切り替えたいときは、:nth-child(odd)を使いますが、こういう風に0と1を切り替える発想はなかったです。
implode()を使ったHTMLテーブルの出力(68ページ)
1 2 |
$momokuro_chan = array('百田夏菜子', '佐々木彩夏', '玉井詩織', '高城れに'); echo '<tr><td>' . implode('</td><td>', $momokuro_chan) . '</td></tr>'; |
配列の要素をそのままテーブルのtdに入れたい時に便利ですね。
関数内部からグローバル変数へアクセスする方法(88ページ)
関数の引数として渡さない限り、関数の中ではグローバル変数は読み込めないと思ってました。$GLOBALS[‘hoge’] で読み込めるとは!
引数と返り値に型宣言ができる(91ページ)
C言語やJavaと違って、PHPは型を意識しないユルふわさが特徴です。でも、引数や返り値に型宣言する方法もあるということを知りませんでした。普段は意識しなくても、どうしてもって所では型宣言するという選択肢があるって覚えておいて損はないです。
クラスの中の$thisの意味が腑に落ちた(98ページ)
なんとなく雰囲気で使ってた$this。この項で「$thisは、この関数を呼び出しているクラスのインスタンスを参照する特別な変数です。」という説明と、その後のサンプルコードでストンと腑に落ちました。当たり前のことを言ってるだけなんですが、私の中でこれまでモヤモヤしてたものがクリアになった気がします。こういうプチブレイクスルーがあるから、プログラミングは辞められないのかもしれない。
null合体演算子(117ページ)
PHP7で導入された新しい書き方。無理に使わなくてもisset()書けばいいかな。
検証したりサニタイズしたりできるfilter_input()関数(123ページ)
filter_input()関数は、GETやらPOSTやらで受け取った値が整数なのか、浮動小数点数なのか、真偽値なのか、妥当なe-mailアドレスなのか、といった検証を行うことができちゃいます。除去フィルタを使うと、サニタイズやURLエンコードもできちゃう。なかなかに便利そう。
日付が妥当かどうかチェックできる checkdate()関数(127ページ)
2月31日とか11月31日といった存在してはいけない日付かどうかをチェックできるcheckdate()関数。うるう年とそうじゃない年の2月29日の有効性チェックとかもできるので、役立つ場面があるかも。
出力ストリームへの特殊なファイルハンドルphp://output(190ページ)
1 |
$fh=fopen('php://output', 'wb'); |
と書くと、printで出力するときと同じ場所へ出力を送れるようになるそうな。使いどころがよくイメージできないけど、へぇーって思いました。
ディレクトリトラバーサルを防ぐrealpath()関数(195ページ)
realpath()関数を使うと「../../」みたいな親ディレクトリへのパスを無効にしてくれます。ディレクトリトラバーサル対策として手軽に使えていいですね。
setcookie()関数が第7引数まで持ってるという事実(204ページ)
まさかsetcookie()関数がそんなにたくさん引数指定できるとは知りませんでした。しかも第7引数はHTTPからのみクッキーへのアクセスを許可するかどうかっていうめちゃ重要な引数。
output_buffering構成ディレクティブをOnでエラー回避(218ページ)
「header already sent by ほにゃらら」みたいなエラーが出てしまう原因は、レスポンスボディよりも前に書かなければいけないsetcookie()やsession_start()が後ろに来てしまっていること。php.iniファイルなどでoutput_buffering=On にしておくと、このエラーを回避できる。何かしらの事情でhtmlタグの後にsession_start()を書かなければいけないとき、助かる。
cURLを使ってPHPファイルから外部URLへPOST送信できちゃう(229ページ)
POSTメソッドって、登録やメール送信情報なんかをフォームから送って、自分のWEBアプリで受け取る、という使い方が一般的。でも、時には外部にPOSTしたくなるもの。そんなときにcURLを使えば割とサクッと外部にPOST送信出来ちゃいます。これは便利!
構成ファイルの内容を連想配列に変換できるparse_ini_file()関数(270ページ)
parse_ini_file()関数は、
1 2 3 4 |
; 設定ファイルのサンプル [first_section] hobby=fishing favorite_game=monster_hunter_world |
みたいなkey=value構成のファイルを読み込み、連想配列に変換してくれます。
PHP5.4.0以降ではPHPの組み込みWebサーバーを使えた!
1 |
php -S localhost:8000 |
とコマンドを打つと、カレントディレクトリをルートにしたWebサーバが稼働した状態になるそうな。全然知らなかった。CakePHP3を使ってるときは、「bin\cake server」コマンドでサーバーを立ち上げてたけど、普段は「C:\xampp\htdocs」内にフォルダを作って、XamppのApacheを起動して動作確認してました。超絶便利!
付箋がいっぱいになったPHP7本
そんなこんなで、PHPわかったつもりになってたけど、まだまだ知らないところだらけという事が判明しました。頼りにしていたパーフェクトPHPがPHPバージョンが5.3くらいの本ということもあり、その後のPHPの色々に関しても弱いことも露呈。ま、何が言いたいかというと、「伸びしろだらけですね」ということです。
PHP7時代のトレンドをキャッチアップする意味でも、自分のPHP力の棚卸をする意味でも、有意義な読書となりました。
初めてのPHP(PHP7対応)
この記事を読んで、「何それ?知らねー」っていう部分が多ければ、一読の価値があるかもしれません。
単行本(ソフトカバー): 364ページ
出版社: オライリージャパン (2017/3/18)
言語: 日本語
ISBN-10: 4873117933
ISBN-13: 978-4873117935
発売日: 2017/3/18
先日「プログラミングを学んでWEBアプリが作れるようになりたいです。おすすめの本を教えてもらえませんか?」と後輩から頼まれました。後輩の本気さがうかがえたので、こっちも本気でオススメの本を選びました。その時選んだ本と、選んだ理由について記事にまとめました。PHP初心者の方の参考になると思います。是非読んでみてください。
[kanren postid=”5782″ date=”none”]
最後まで読んでいただき、ありがとうございます。
コメント