Enviar pesquisa
Carregar
PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~
•
15 gostaram
•
8,287 visualizações
Yuta Sakurai
Seguir
PHPカンファレンス2013で発表したスライドです。 PHP逆引きレシピ改訂版の改訂ポイントなどを紹介しています。
Leia menos
Leia mais
Vista de apresentação de diapositivos
Denunciar
Compartilhar
Vista de apresentação de diapositivos
Denunciar
Compartilhar
1 de 48
Baixar agora
Baixar para ler offline
Recomendados
10年続いているwebサービスの画像サーバをノーメンテでftpサーバからs3互換のストレージサーバに移行している話
10年続いているwebサービスの画像サーバをノーメンテでftpサーバからs3互換のストレージサーバに移行している話
Masataka Kono
Laravelのeloquent だけ入れた話
Laravelのeloquent だけ入れた話
Masataka Kono
pythonでemlファイルを扱う話
pythonでemlファイルを扱う話
Satoshi Yamada
歴史あるWebサービスに携わって2年半の間に起きた事やった事
歴史あるWebサービスに携わって2年半の間に起きた事やった事
Masataka Kono
bottleで始めるWEBアプリの最初の一歩
bottleで始めるWEBアプリの最初の一歩
Satoshi Yamada
bottle.pyをつかったチャットアプリ作成チュートリアル
bottle.pyをつかったチャットアプリ作成チュートリアル
Satoshi Yamada
株式会社インフィニットループ紹介資料
株式会社インフィニットループ紹介資料
infinite_loop
Requestsで始める5分前帰社
Requestsで始める5分前帰社
Satoshi Yamada
Recomendados
10年続いているwebサービスの画像サーバをノーメンテでftpサーバからs3互換のストレージサーバに移行している話
10年続いているwebサービスの画像サーバをノーメンテでftpサーバからs3互換のストレージサーバに移行している話
Masataka Kono
Laravelのeloquent だけ入れた話
Laravelのeloquent だけ入れた話
Masataka Kono
pythonでemlファイルを扱う話
pythonでemlファイルを扱う話
Satoshi Yamada
歴史あるWebサービスに携わって2年半の間に起きた事やった事
歴史あるWebサービスに携わって2年半の間に起きた事やった事
Masataka Kono
bottleで始めるWEBアプリの最初の一歩
bottleで始めるWEBアプリの最初の一歩
Satoshi Yamada
bottle.pyをつかったチャットアプリ作成チュートリアル
bottle.pyをつかったチャットアプリ作成チュートリアル
Satoshi Yamada
株式会社インフィニットループ紹介資料
株式会社インフィニットループ紹介資料
infinite_loop
Requestsで始める5分前帰社
Requestsで始める5分前帰社
Satoshi Yamada
究極のPHP本完成
究極のPHP本完成
Katsuhiro Ogawa
Mysqlを4.0から5.0を経由して5.6へバージョンアップした話
Mysqlを4.0から5.0を経由して5.6へバージョンアップした話
Masataka Kono
TypeScriptからひも解く方向性
TypeScriptからひも解く方向性
echigoya-jp
Pythonで業務改善をしたときにあった問題(ライト版)
Pythonで業務改善をしたときにあった問題(ライト版)
Satoshi Yamada
TypeScriptについて
TypeScriptについて
echigoya-jp
Phpのはなし
Phpのはなし
Serverworks Co.,Ltd.
Jazug tokyo-night bot-frameworkとかbotとか
Jazug tokyo-night bot-frameworkとかbotとか
Tsubasa Yoshino
Real World PHP in pixiv
Real World PHP in pixiv
Kenta USAMI
あと一つプログラミング言語を 覚えたら死ぬ! 脳みそがパンクしそうな あなたのための nodeJSことはじめ
あと一つプログラミング言語を 覚えたら死ぬ! 脳みそがパンクしそうな あなたのための nodeJSことはじめ
文樹 高橋
たのしい独自フレームワーク
たのしい独自フレームワーク
Kenta USAMI
読みやすいプログラム、書き換えやすいプログラム
読みやすいプログラム、書き換えやすいプログラム
amusementcreators
Rubyist started to learn Groovy - things important to leran new LL
Rubyist started to learn Groovy - things important to leran new LL
Uchio Kondo
Phpでアプリケーションサーバー
Phpでアプリケーションサーバー
k-motoyan
PHP でファイルシステムを作ろう
PHP でファイルシステムを作ろう
shinjiigarashi
ググリワードを探す話
ググリワードを探す話
toru ishikawa
ウェブエンジニアとしての1年目を振り返って
ウェブエンジニアとしての1年目を振り返って
Kohki Yamagiwa
リレーショナルデータベースとの上手な付き合い方
リレーショナルデータベースとの上手な付き合い方
Mikiya Okuno
形態素解析器の比較できるPythonパッケージつくった話
形態素解析器の比較できるPythonパッケージつくった話
Kensuke Mitsuzawa
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
Hiroshi Toda
turbolinks攻略
turbolinks攻略
basicinc_dev
PHPでセキュリティを真面目に考える
PHPでセキュリティを真面目に考える
Takuya Sato
新人エンジニアがフレームワークについて調べたこと
新人エンジニアがフレームワークについて調べたこと
Yosuke Kasagawa
Mais conteúdo relacionado
Mais procurados
究極のPHP本完成
究極のPHP本完成
Katsuhiro Ogawa
Mysqlを4.0から5.0を経由して5.6へバージョンアップした話
Mysqlを4.0から5.0を経由して5.6へバージョンアップした話
Masataka Kono
TypeScriptからひも解く方向性
TypeScriptからひも解く方向性
echigoya-jp
Pythonで業務改善をしたときにあった問題(ライト版)
Pythonで業務改善をしたときにあった問題(ライト版)
Satoshi Yamada
TypeScriptについて
TypeScriptについて
echigoya-jp
Phpのはなし
Phpのはなし
Serverworks Co.,Ltd.
Jazug tokyo-night bot-frameworkとかbotとか
Jazug tokyo-night bot-frameworkとかbotとか
Tsubasa Yoshino
Real World PHP in pixiv
Real World PHP in pixiv
Kenta USAMI
あと一つプログラミング言語を 覚えたら死ぬ! 脳みそがパンクしそうな あなたのための nodeJSことはじめ
あと一つプログラミング言語を 覚えたら死ぬ! 脳みそがパンクしそうな あなたのための nodeJSことはじめ
文樹 高橋
たのしい独自フレームワーク
たのしい独自フレームワーク
Kenta USAMI
読みやすいプログラム、書き換えやすいプログラム
読みやすいプログラム、書き換えやすいプログラム
amusementcreators
Rubyist started to learn Groovy - things important to leran new LL
Rubyist started to learn Groovy - things important to leran new LL
Uchio Kondo
Phpでアプリケーションサーバー
Phpでアプリケーションサーバー
k-motoyan
PHP でファイルシステムを作ろう
PHP でファイルシステムを作ろう
shinjiigarashi
ググリワードを探す話
ググリワードを探す話
toru ishikawa
ウェブエンジニアとしての1年目を振り返って
ウェブエンジニアとしての1年目を振り返って
Kohki Yamagiwa
リレーショナルデータベースとの上手な付き合い方
リレーショナルデータベースとの上手な付き合い方
Mikiya Okuno
形態素解析器の比較できるPythonパッケージつくった話
形態素解析器の比較できるPythonパッケージつくった話
Kensuke Mitsuzawa
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
Hiroshi Toda
turbolinks攻略
turbolinks攻略
basicinc_dev
Mais procurados
(20)
究極のPHP本完成
究極のPHP本完成
Mysqlを4.0から5.0を経由して5.6へバージョンアップした話
Mysqlを4.0から5.0を経由して5.6へバージョンアップした話
TypeScriptからひも解く方向性
TypeScriptからひも解く方向性
Pythonで業務改善をしたときにあった問題(ライト版)
Pythonで業務改善をしたときにあった問題(ライト版)
TypeScriptについて
TypeScriptについて
Phpのはなし
Phpのはなし
Jazug tokyo-night bot-frameworkとかbotとか
Jazug tokyo-night bot-frameworkとかbotとか
Real World PHP in pixiv
Real World PHP in pixiv
あと一つプログラミング言語を 覚えたら死ぬ! 脳みそがパンクしそうな あなたのための nodeJSことはじめ
あと一つプログラミング言語を 覚えたら死ぬ! 脳みそがパンクしそうな あなたのための nodeJSことはじめ
たのしい独自フレームワーク
たのしい独自フレームワーク
読みやすいプログラム、書き換えやすいプログラム
読みやすいプログラム、書き換えやすいプログラム
Rubyist started to learn Groovy - things important to leran new LL
Rubyist started to learn Groovy - things important to leran new LL
Phpでアプリケーションサーバー
Phpでアプリケーションサーバー
PHP でファイルシステムを作ろう
PHP でファイルシステムを作ろう
ググリワードを探す話
ググリワードを探す話
ウェブエンジニアとしての1年目を振り返って
ウェブエンジニアとしての1年目を振り返って
リレーショナルデータベースとの上手な付き合い方
リレーショナルデータベースとの上手な付き合い方
形態素解析器の比較できるPythonパッケージつくった話
形態素解析器の比較できるPythonパッケージつくった話
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
turbolinks攻略
turbolinks攻略
Semelhante a PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~
PHPでセキュリティを真面目に考える
PHPでセキュリティを真面目に考える
Takuya Sato
新人エンジニアがフレームワークについて調べたこと
新人エンジニアがフレームワークについて調べたこと
Yosuke Kasagawa
10分でわかるPythonの開発環境
10分でわかるPythonの開発環境
Hisao Soyama
PHP conference kansai2018_ishihara
PHP conference kansai2018_ishihara
ishihara_yuki
PHP7の拡張モジュール事情
PHP7の拡張モジュール事情
Yoshio Hanawa
フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由
Kenichi Mukai
[TechLION] PHP Conference Japan 2014
[TechLION] PHP Conference Japan 2014
Yuki MAEJIMA
今すぐ使えるPHP開発のあれこれ
今すぐ使えるPHP開発のあれこれ
Yuya Kikukawa
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
Junichi Ishida
Composerはじめました
Composerはじめました
Takashi Nojima
第1回勉強会
第1回勉強会
Yukie Kanzawa
Sphinxを使って本を書こう #pyconjp 2012
Sphinxを使って本を書こう #pyconjp 2012
Takayuki Shimizukawa
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudy
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudy
Kenichi Mukai
PHPerに覚えて欲しい日本語の重要性
PHPerに覚えて欲しい日本語の重要性
Rina Fukuda
♡PHPが恋しい話♡
♡PHPが恋しい話♡
Shinichi Takahashi
PHP Now and then 2018 : WordPress Special Edition
PHP Now and then 2018 : WordPress Special Edition
Rui Hirokawa
WordPress on PHP7 on CentOS7 on Saraku-VPS
WordPress on PHP7 on CentOS7 on Saraku-VPS
Ryo Shibayama
PHP カンファレンス 2014 に行ってきたよ
PHP カンファレンス 2014 に行ってきたよ
Masaru Matsuo
RFC: "var" Deprecation
RFC: "var" Deprecation
y-uti
PHPプログラミングのIPv6対応の実際
PHPプログラミングのIPv6対応の実際
Tetsuji Koyama
Semelhante a PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~
(20)
PHPでセキュリティを真面目に考える
PHPでセキュリティを真面目に考える
新人エンジニアがフレームワークについて調べたこと
新人エンジニアがフレームワークについて調べたこと
10分でわかるPythonの開発環境
10分でわかるPythonの開発環境
PHP conference kansai2018_ishihara
PHP conference kansai2018_ishihara
PHP7の拡張モジュール事情
PHP7の拡張モジュール事情
フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由
[TechLION] PHP Conference Japan 2014
[TechLION] PHP Conference Japan 2014
今すぐ使えるPHP開発のあれこれ
今すぐ使えるPHP開発のあれこれ
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
Composerはじめました
Composerはじめました
第1回勉強会
第1回勉強会
Sphinxを使って本を書こう #pyconjp 2012
Sphinxを使って本を書こう #pyconjp 2012
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudy
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudy
PHPerに覚えて欲しい日本語の重要性
PHPerに覚えて欲しい日本語の重要性
♡PHPが恋しい話♡
♡PHPが恋しい話♡
PHP Now and then 2018 : WordPress Special Edition
PHP Now and then 2018 : WordPress Special Edition
WordPress on PHP7 on CentOS7 on Saraku-VPS
WordPress on PHP7 on CentOS7 on Saraku-VPS
PHP カンファレンス 2014 に行ってきたよ
PHP カンファレンス 2014 に行ってきたよ
RFC: "var" Deprecation
RFC: "var" Deprecation
PHPプログラミングのIPv6対応の実際
PHPプログラミングのIPv6対応の実際
PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~
1.
今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~ PHP逆引きレシピ 改訂版 執筆チーム 浅野
仁(@ts_asano) 櫻井 雄大(@Y_Sakurai)
2.
1 PHP逆引きレシピとは?
3.
2
4.
3
5.
4 PHP逆引きレシピとは? ● ”いまさら聞けない・誰も教えてくれない” 本当に必要な知識と技が一冊に凝縮! ● 主要レンタルサーバーの設定方法と差異、 セキュリティ対策の詳細も解説! ●
初級レベルから中級レベルまで 幅広くカバーし、レベルアップに最適! ● 初版発売日:2009年6月29日
6.
5 発売日:2009年6月29日 ※初版です
7.
6 あれから4年の月日が流れ… PHPと、それを取り巻く環境の変化 ● メジャーバージョン 5.3→5.4→5.5 ● オブジェクト指向が当たり前の時代 ●
PEARからComposerへ ...などなど
8.
7 こんな手厳しい意見も 2009年頃はこの本がPHPの本の中で一番優れて いたと思うが、今やこの本を買ってPHPに取りかか ろうものなら、PHPのバージョンアップの激しさにプ ログラムが動かなくなるのは時間の問題。 ... (後略)
9.
8 新時代を生き抜くための 逆引き本を! ● レガシーなコードを一新 ● 新レシピの追加 ●
HTML5対応 ...などなど、かなりの部分を書き直し/追加
10.
9 ぶっちゃけた話 半分以上 書き直しました
11.
10 さらにいうなら 150ページぐらい 増えてます (40レシピ以上の追加)
12.
11 _人人人人人人人_ > もはや鈍器 <  ̄Y^Y^Y^Y^Y^Y ̄ 2割増って、普通考えたら、ありえない
13.
12 こんな人にオススメ こんな用途に... ● 開発者向け学習・研修 ● 開発時のリファレンス ●
専門学校・大学のテキスト こんな人に... ● PHPを学習中の初級者 ● 開発経験が少ない PHPプログラマー ● セキュリティ対策について 学習し直したい中級者 New! ● 最近のPHP開発手法に ついて学習したい人
14.
13 こんな人は対象外 ● 全くのWebプログラミング初心者 ● PHP上級者 New! ●
PHP4~5.2と心中したい方 ※といっても、大体のサンプルは古いPHPのバージョンでも動作します
15.
14 ※注意※ 「今ドキの」とはいっても、 non-flatなPHPは対象外 ● 1レシピ完結型の「逆引き」本 ● 特定のフレームワークなどに依存しない記述 ●
ページ数の制約 という色々な事情から… (代わりに、初学者向けにフレームワークの説明を追加)
16.
15 改訂の概要 削除 New! New! 変更 初版 第二版 第1章 準備 第2章
PHPの基本構文 第3章 PHPの基本テクニック 第4章 ファイルとディレクトリ 第5章 PEARとSmarty 第6章 Webプログラミング 第7章 クラスとオブジェクト 第8章 セキュリティ 第9章 トラブルシューティング 第10章 アプリケーション編 第1章 準備 第2章 PHPの基本構文 第3章 PHPの基本テクニック 第4章 ファイルとディレクトリ 第5章 クラスとオブジェクト 第6章 ライブラリ 第7章 Webプログラミング 第8章 データベース 第9章 自動テスト 第10章 セキュリティ 第11章 トラブルシューティング
17.
16 改訂ポイントひとめぐり(1) ● 準備:開発/本番環境 (XAMPPの新バージョンや統合開発環境など) ● 基本構文 (流行りの無名関数や新Verでの仕様変更など) ●
クラス (名前空間、例外処理、SPLなど) ● ライブラリ (Composer,フレームワーク概要,Smarty3対応)
18.
17 開発/本番環境 ● XAMPP 1.8.3/MAMP
2.1.4に対応 OpenSSLモジュールがデフォルト有効化など、細かい違い も... ● コマンドライン用パス設定など、初級者向けのつまづきや すいポイントなども追記 ● 推奨開発環境をNetBeansで統一 ○ git/hg/svnなど各種VCSにデフォルト対応 ○ 変数の初期化漏れなど、警告機能が充実 ○ PHPUnit,コードカバレッジも標準対応 ○ ソフトウェア、ドキュメントが日本語...などなど ● 本番環境を節分けし、より逆引きしやすく読みやすく 各レンサバの内容も、現時点での最新状況を
19.
18 基本構文 ● Nowdoc構文、無名関数などの新要素 ● break,continue,isset()などの仕様変更にも言及 ○
文字列を配列として添え字付きアクセスしたときの挙 動とか ○ break, continueの戻る階層数に変数が使えなくなっ たとか ○ その他キャストの仕様変更など、PHP5.3から5.5まで で変わったポイントを言及
20.
19 たとえば... $str = 'string'; var_dump(isset($str['a'])); PHP5.3までと5.4以降ではどうなるでしょうか?
21.
19 たとえば... $str = 'string'; var_dump(isset($str['a'])); PHP5.3までと5.4以降ではどうなるでしょうか? ↓ せいかい PHP5.3:
true PHP5.4以降: false
22.
20 クラス(1) ● クラスを活用するための様々な機能解説 ○ マジックメソッド、シリアライズ、タイプヒンティング、 インターフェースなどなど ○
最近流行りのオートローダも詳細解説 ● 今ドキのモジュール管理で必須な名前空間について ● オブジェクト指向初心者の壁:例外処理 ● SPLについても、ポイントを押さえて解説
23.
21 クラス(2) 初版 5レシピ ⇒ 第2版 22レシピ 個人的に初めて使ったフレームワークがFuelPHP ⇒名前空間の存在に感動 オートローダーの存在もあり、FuelPHPのコードの 美しさを感じたのがこの章を充実させるきっかけに
24.
22 ライブラリ ● Composer ○ パッケージ管理ツールの新定番 (実際は、"依存管理ツール") ○
初学者にはつらいcomposer.jsonの記述や内容 の意味などを解説 ● フレームワーク ○ 初学者向けにフレームワークの概要を解説 ○ 何となく使われがちなコトバ「MVC」の話も
25.
23 composer.lock 意外と見落としがち? installコマンドで作成されるcomposer.lockの意味 ● 実際にインストールしたパッケージのバージョン情報な どを格納 ● installコマンド時、このファイルがもともと存在すると... ○
composer.lockに記載されている厳密なバージョン をインストールしようとする VCSで共有すれば、開発者間のパッケージを しっかり統一できる!
26.
24 改訂ポイントひとめぐり(2) ● データベース (PDO利用、SQLite対応など) ● ユニットテスト (PHPUnit、Seleniumによるブラウザテストなど) ●
セキュリティ (XSS対策の強化、クリックジャッキングなど) ● トラブルシューティング (Xdebugの利用、デバッグ方法など)
27.
25 データベース(1) MySQLとSQLiteでの微妙な記述の違いに言及 PostgreSQLは、あきらめました… なぜSQLite? ⇒SQLiteのファイルをPHP上で作って、スマートフォンのアプ リにダウンロードして使用する、ということが 実務であったため
28.
26 データベース(2) 今回、PDO+プリペアドステートメント (エミュレーションOFF) で全面書き直し http://d.hatena.ne.jp/ockeghem/20090711/p1 ● 当時は、PHP4も生き残っていたため、 書籍側でPHP4対応する必要があった ● また、レンサバ含む様々な環境も考慮する必要があった ●
そのため、昔のMySQL-API(プリペア利用不可)で 記述せざるをえなかった
29.
27 データベース(3) PDOの謎に迫る! ● bindValue()と bindParam()の違い ● 第3引数の型指定(PDO::PARAM_*)の意味
30.
28 bindParam()の挙動(1) エミュレーションOnだと「アレ?」な挙動になることも $intValue = 256; $prepare->bindParam(':id',
$intValue, PDO:: PARAM_INT) var_dump($intValue); $prepare->execute(); var_dump($intValue); => int(3) 256 string(3) "256"
31.
29 bindParam()の挙動(2) bindParam()の第2引数は実は参照渡し 値が書き換えられても泣かない! ※PARAM_INTで型指定しててもキャストされる 参照渡しなので、キャストされた結果が$intValueに入る →もう全部bindValue()でいいんじゃないかな
32.
30 PDO::PARAM_*の挙動(1) $prepare = $db->prepare('SELECT
* FROM t WHERE id = :id); $strValue = '123'; $prepare->bindValue(':id', $strValue, PDO::PARAM_INT); $prepare->execute(); => 'SELECT * FROM t WHERE id = '123'; (pdo_mysqlの場合)
33.
31 PDO::PARAM_*の挙動(2) PHPのソースを追いかけると... (php/php-src master ext/pdo/pdo_stmt.c:320) ●
PARAM_STRは文字列に変換 ● PARAM_INTはbooleanをintに変換 (他はなにもしない) ● PARAM_BOOLはintをboolに変換 「PDO::PARAM_INTとはいったいなんだったのか」 (レビュアー様コメントより抜粋) ※指定しないと全部文字列にキャストされるので、 意味が全くないわけではないです
34.
32 PHPUnit 言わずと知れた、自動テストのフレームワーク さきほどの PHP5.3: true PHP5.4以降: false …のような、理不尽な言語仕様の変更も トラブルになる前に発見できる(かも)
35.
33 コードカバレッジのススメ(1) 皆さん使ってますか? コードカバレッジ
36.
34 コードカバレッジのススメ(2) ● テストがきちんと行なわれているか? (テストカバー率) ● コードは保守しやすい形か? (CRAP) PHPUnitとXdebugでカバレッジと仲良くなろう! $
phpunit --coverage-html output_dir UnitTest.php
37.
35 コードカバレッジのススメ(3) CRAPとは? ● 「Change Risk
Anti-Patterns」の略 ● プログラム保守のしやすさを指標化したもの ● 条件分岐やテストカバー率によって変化 (大きいほどNG) ● 数値が30を越えると危険シグナル
38.
36 PHPUnit_Selenium2(1) 今ドキのテストは、ブラウザテストも自動化! Seleniumなら、PHPで書けて学習コストも安上がり ● インストール、各ブラウザ別ドライバ導入方法 ● HTMLの各種要素取得方法 ●
フォームの操作 など、基本的な作業に必要な要素をレシピに追加
39.
37 PHPUnit_Selenium2(2) こんな風に書けます: public function testForm() { $this->url('example.php'); $textbox
= $this->byCssSelector('input[type="text"]'); $textbox->value('PHP逆引きレシピ'); $submit = $this->byCssSelector('input[type="submit"]'); $submit->click(); $element = $this->byCssSelector('body > div > p'); $this->assertEquals('送信結果は「PHP逆引きレシピ」', $element- >text()); } テスト以外にも、ややこしいサイトのクローリング、 データ収集などにも応用できるかも?
40.
38 PHPUnit_Selenium2(3) 実はこの本自体も、Seleniumのおかげで完成しました XAMPP、MAMP Linux さくらのレンタルサーバ ロリポップ CORESERVER での検証ができたのは、Seleniumのおかげです
41.
39 セキュリティ(1) いわゆる「徳丸本」を下敷きとして、 セキュリティ対策情報は初版から 更に磨きをかけています
42.
40 セキュリティ(2) まだまだ話題が絶えないXSS 対応できていたと思っていても... ... <body onload="foo('<?php echo
h(...);?>')"> ... (h()はhtmlspecialchars()と思ってください) おっと、そこはJavaScriptの文字列リテラルですよ?
43.
41 セキュリティ(3) $u16 = mb_convert_encoding($matches[0],
'UTF-16'); $safe_str = preg_replace('/[0-9a-f]{4}/', 'u$0', bin2hex($u16)); こんな感じで Unicodeエスケープしてあげましょう ("uXXXX"の形) ※動的に出さなくて済むなら、それが一番いいです
44.
42 他にも小ネタ(1) var_dump( '11111111111111111111' == '11111111111111111112' ); PHP5.4.3以前:
true ※あいまいな比較時の文字列→数値のキャスト時 オーバーフローする場合の挙動が修正されている PHP5.4.4以降: false
45.
43 他にも小ネタ(2) PHP5.5で導入された、 password_hash() 関数 実は有志作成のライブラリ導入で 以前のPHPでも使用可能になります! ※PHP5.3.7以降
46.
44 まだまだたくさん 改訂ポイントはありますが... さすがに全部は無理です、ごめんなさい! ● HTML5まわりとか ● 暗号学的に安全なランダム文字列生成とか ●
業務系でよくある「組織図の作成」とか 気になる人は、ぜひ書店でお求めください!
47.
45 初版のポリシー 「初級者から中級者へ」 「セキュリティをきちんと考慮した」 「実用的な『逆引き本』を」 はそのままに...
48.
46 しっかり「今」に対応 追加レシピ満載の PHP逆引きレシピ 改訂版 10月下旬発売!(予定) ご清聴、ありがとうございました
Baixar agora