SlideShare uma empresa Scribd logo
1 de 48
Baixar para ler offline
今ドキのPHPの書き方
~PHP逆引きレシピ改訂版~
PHP逆引きレシピ 改訂版 執筆チーム
浅野 仁(@ts_asano)
櫻井 雄大(@Y_Sakurai)
1
PHP逆引きレシピとは?
2
3
4
PHP逆引きレシピとは?
● ”いまさら聞けない・誰も教えてくれない”
本当に必要な知識と技が一冊に凝縮!
● 主要レンタルサーバーの設定方法と差異、
セキュリティ対策の詳細も解説!
● 初級レベルから中級レベルまで
幅広くカバーし、レベルアップに最適!
● 初版発売日:2009年6月29日
5
発売日:2009年6月29日
※初版です
6
あれから4年の月日が流れ…
PHPと、それを取り巻く環境の変化
● メジャーバージョン
5.3→5.4→5.5
● オブジェクト指向が当たり前の時代
● PEARからComposerへ
...などなど
7
こんな手厳しい意見も
2009年頃はこの本がPHPの本の中で一番優れて
いたと思うが、今やこの本を買ってPHPに取りかか
ろうものなら、PHPのバージョンアップの激しさにプ
ログラムが動かなくなるのは時間の問題。
...
(後略)
8
新時代を生き抜くための
逆引き本を!
● レガシーなコードを一新
● 新レシピの追加
● HTML5対応
...などなど、かなりの部分を書き直し/追加
9
ぶっちゃけた話
半分以上
書き直しました
10
さらにいうなら
150ページぐらい
増えてます
(40レシピ以上の追加)
11
_人人人人人人人_
> もはや鈍器 <
 ̄Y^Y^Y^Y^Y^Y ̄
2割増って、普通考えたら、ありえない
12
こんな人にオススメ
こんな用途に...
● 開発者向け学習・研修
● 開発時のリファレンス
● 専門学校・大学のテキスト
こんな人に...
● PHPを学習中の初級者
● 開発経験が少ない
PHPプログラマー
● セキュリティ対策について
学習し直したい中級者
New!
● 最近のPHP開発手法に
ついて学習したい人
13
こんな人は対象外
● 全くのWebプログラミング初心者
● PHP上級者
New!
● PHP4~5.2と心中したい方
※といっても、大体のサンプルは古いPHPのバージョンでも動作します
14
※注意※
「今ドキの」とはいっても、
non-flatなPHPは対象外
● 1レシピ完結型の「逆引き」本
● 特定のフレームワークなどに依存しない記述
● ページ数の制約
という色々な事情から…
(代わりに、初学者向けにフレームワークの説明を追加)
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章 トラブルシューティング
16
改訂ポイントひとめぐり(1)
● 準備:開発/本番環境
(XAMPPの新バージョンや統合開発環境など)
● 基本構文
(流行りの無名関数や新Verでの仕様変更など)
● クラス
(名前空間、例外処理、SPLなど)
● ライブラリ
(Composer,フレームワーク概要,Smarty3対応)
17
開発/本番環境
● XAMPP 1.8.3/MAMP 2.1.4に対応
OpenSSLモジュールがデフォルト有効化など、細かい違い
も...
● コマンドライン用パス設定など、初級者向けのつまづきや
すいポイントなども追記
● 推奨開発環境をNetBeansで統一
○ git/hg/svnなど各種VCSにデフォルト対応
○ 変数の初期化漏れなど、警告機能が充実
○ PHPUnit,コードカバレッジも標準対応
○ ソフトウェア、ドキュメントが日本語...などなど
● 本番環境を節分けし、より逆引きしやすく読みやすく
各レンサバの内容も、現時点での最新状況を
18
基本構文
● Nowdoc構文、無名関数などの新要素
● break,continue,isset()などの仕様変更にも言及
○ 文字列を配列として添え字付きアクセスしたときの挙
動とか
○ break, continueの戻る階層数に変数が使えなくなっ
たとか
○ その他キャストの仕様変更など、PHP5.3から5.5まで
で変わったポイントを言及
19
たとえば...
$str = 'string';
var_dump(isset($str['a']));
PHP5.3までと5.4以降ではどうなるでしょうか?
19
たとえば...
$str = 'string';
var_dump(isset($str['a']));
PHP5.3までと5.4以降ではどうなるでしょうか?
↓
せいかい
PHP5.3: true
PHP5.4以降: false
20
クラス(1)
● クラスを活用するための様々な機能解説
○ マジックメソッド、シリアライズ、タイプヒンティング、
インターフェースなどなど
○ 最近流行りのオートローダも詳細解説
● 今ドキのモジュール管理で必須な名前空間について
● オブジェクト指向初心者の壁:例外処理
● SPLについても、ポイントを押さえて解説
21
クラス(2)
初版 5レシピ ⇒  第2版 22レシピ
個人的に初めて使ったフレームワークがFuelPHP
⇒名前空間の存在に感動
オートローダーの存在もあり、FuelPHPのコードの
美しさを感じたのがこの章を充実させるきっかけに
22
ライブラリ
● Composer
○ パッケージ管理ツールの新定番
(実際は、"依存管理ツール")
○ 初学者にはつらいcomposer.jsonの記述や内容
の意味などを解説
● フレームワーク
○ 初学者向けにフレームワークの概要を解説
○ 何となく使われがちなコトバ「MVC」の話も
23
composer.lock
意外と見落としがち?
installコマンドで作成されるcomposer.lockの意味
● 実際にインストールしたパッケージのバージョン情報な
どを格納
● installコマンド時、このファイルがもともと存在すると...
○ composer.lockに記載されている厳密なバージョン
をインストールしようとする
VCSで共有すれば、開発者間のパッケージを
しっかり統一できる!
24
改訂ポイントひとめぐり(2)
● データベース
(PDO利用、SQLite対応など)
● ユニットテスト
(PHPUnit、Seleniumによるブラウザテストなど)
● セキュリティ
(XSS対策の強化、クリックジャッキングなど)
● トラブルシューティング
(Xdebugの利用、デバッグ方法など)
25
データベース(1)
MySQLとSQLiteでの微妙な記述の違いに言及
PostgreSQLは、あきらめました…
なぜSQLite?
⇒SQLiteのファイルをPHP上で作って、スマートフォンのアプ
リにダウンロードして使用する、ということが
 実務であったため
26
データベース(2)
今回、PDO+プリペアドステートメント
(エミュレーションOFF)
で全面書き直し
http://d.hatena.ne.jp/ockeghem/20090711/p1
● 当時は、PHP4も生き残っていたため、
書籍側でPHP4対応する必要があった
● また、レンサバ含む様々な環境も考慮する必要があった
● そのため、昔のMySQL-API(プリペア利用不可)で
記述せざるをえなかった
27
データベース(3)
PDOの謎に迫る!
● bindValue()と
bindParam()の違い
● 第3引数の型指定(PDO::PARAM_*)の意味
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"
29
bindParam()の挙動(2)
bindParam()の第2引数は実は参照渡し
値が書き換えられても泣かない!
※PARAM_INTで型指定しててもキャストされる
参照渡しなので、キャストされた結果が$intValueに入る
→もう全部bindValue()でいいんじゃないかな
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の場合)
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とはいったいなんだったのか」
(レビュアー様コメントより抜粋)
※指定しないと全部文字列にキャストされるので、
意味が全くないわけではないです
32
PHPUnit
言わずと知れた、自動テストのフレームワーク
さきほどの
PHP5.3: true
PHP5.4以降: false
…のような、理不尽な言語仕様の変更も
トラブルになる前に発見できる(かも)
33
コードカバレッジのススメ(1)
皆さん使ってますか? コードカバレッジ
34
コードカバレッジのススメ(2)
● テストがきちんと行なわれているか?
(テストカバー率)
● コードは保守しやすい形か?
(CRAP)
PHPUnitとXdebugでカバレッジと仲良くなろう!
$ phpunit --coverage-html output_dir UnitTest.php
35
コードカバレッジのススメ(3)
CRAPとは?
● 「Change Risk Anti-Patterns」の略
● プログラム保守のしやすさを指標化したもの
● 条件分岐やテストカバー率によって変化
(大きいほどNG)
● 数値が30を越えると危険シグナル
36
PHPUnit_Selenium2(1)
今ドキのテストは、ブラウザテストも自動化!
Seleniumなら、PHPで書けて学習コストも安上がり
● インストール、各ブラウザ別ドライバ導入方法
● HTMLの各種要素取得方法
● フォームの操作
など、基本的な作業に必要な要素をレシピに追加
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());
}
テスト以外にも、ややこしいサイトのクローリング、
データ収集などにも応用できるかも?
38
PHPUnit_Selenium2(3)
実はこの本自体も、Seleniumのおかげで完成しました
 XAMPP、MAMP
 Linux
 さくらのレンタルサーバ
 ロリポップ
 CORESERVER
での検証ができたのは、Seleniumのおかげです
39
セキュリティ(1)
いわゆる「徳丸本」を下敷きとして、
セキュリティ対策情報は初版から
更に磨きをかけています
40
セキュリティ(2)
まだまだ話題が絶えないXSS
対応できていたと思っていても...
...
<body onload="foo('<?php echo h(...);?>')">
...
(h()はhtmlspecialchars()と思ってください)
おっと、そこはJavaScriptの文字列リテラルですよ?
41
セキュリティ(3)
$u16 = mb_convert_encoding($matches[0], 'UTF-16');
$safe_str = preg_replace('/[0-9a-f]{4}/', 'u$0',
bin2hex($u16));
こんな感じで
Unicodeエスケープしてあげましょう
("uXXXX"の形)
※動的に出さなくて済むなら、それが一番いいです
42
他にも小ネタ(1)
var_dump(
'11111111111111111111' == '11111111111111111112'
);
PHP5.4.3以前: true
※あいまいな比較時の文字列→数値のキャスト時
オーバーフローする場合の挙動が修正されている
PHP5.4.4以降: false
43
他にも小ネタ(2)
PHP5.5で導入された、 password_hash() 関数
実は有志作成のライブラリ導入で
以前のPHPでも使用可能になります!
※PHP5.3.7以降
44
まだまだたくさん
改訂ポイントはありますが...
さすがに全部は無理です、ごめんなさい!
● HTML5まわりとか
● 暗号学的に安全なランダム文字列生成とか
● 業務系でよくある「組織図の作成」とか
気になる人は、ぜひ書店でお求めください!
45
初版のポリシー
「初級者から中級者へ」
「セキュリティをきちんと考慮した」
「実用的な『逆引き本』を」
はそのままに...
46
しっかり「今」に対応
追加レシピ満載の
PHP逆引きレシピ 改訂版
10月下旬発売!(予定)
ご清聴、ありがとうございました

Mais conteúdo relacionado

Mais procurados

Mysqlを4.0から5.0を経由して5.6へバージョンアップした話
Mysqlを4.0から5.0を経由して5.6へバージョンアップした話Mysqlを4.0から5.0を経由して5.6へバージョンアップした話
Mysqlを4.0から5.0を経由して5.6へバージョンアップした話Masataka Kono
 
TypeScriptからひも解く方向性
TypeScriptからひも解く方向性TypeScriptからひも解く方向性
TypeScriptからひも解く方向性echigoya-jp
 
Pythonで業務改善をしたときにあった問題(ライト版)
Pythonで業務改善をしたときにあった問題(ライト版)Pythonで業務改善をしたときにあった問題(ライト版)
Pythonで業務改善をしたときにあった問題(ライト版)Satoshi Yamada
 
TypeScriptについて
TypeScriptについてTypeScriptについて
TypeScriptについてechigoya-jp
 
Jazug tokyo-night bot-frameworkとかbotとか
Jazug tokyo-night bot-frameworkとかbotとかJazug tokyo-night bot-frameworkとかbotとか
Jazug tokyo-night bot-frameworkとかbotとかTsubasa Yoshino
 
Real World PHP in pixiv
Real World PHP in pixivReal World PHP in pixiv
Real World PHP in pixivKenta USAMI
 
あと一つプログラミング言語を
覚えたら死ぬ! 脳みそがパンクしそうな
あなたのための
nodeJSことはじめ
あと一つプログラミング言語を
覚えたら死ぬ! 脳みそがパンクしそうな
あなたのための
nodeJSことはじめあと一つプログラミング言語を
覚えたら死ぬ! 脳みそがパンクしそうな
あなたのための
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 LLRubyist started to learn Groovy - things important to leran new LL
Rubyist started to learn Groovy - things important to leran new LLUchio Kondo
 
Phpでアプリケーションサーバー
PhpでアプリケーションサーバーPhpでアプリケーションサーバー
Phpでアプリケーションサーバーk-motoyan
 
PHP でファイルシステムを作ろう
PHP でファイルシステムを作ろうPHP でファイルシステムを作ろう
PHP でファイルシステムを作ろうshinjiigarashi
 
ググリワードを探す話
ググリワードを探す話ググリワードを探す話
ググリワードを探す話toru ishikawa
 
ウェブエンジニアとしての1年目を振り返って
ウェブエンジニアとしての1年目を振り返ってウェブエンジニアとしての1年目を振り返って
ウェブエンジニアとしての1年目を振り返ってKohki Yamagiwa
 
リレーショナルデータベースとの上手な付き合い方
リレーショナルデータベースとの上手な付き合い方リレーショナルデータベースとの上手な付き合い方
リレーショナルデータベースとの上手な付き合い方Mikiya Okuno
 
形態素解析器の比較できるPythonパッケージつくった話
形態素解析器の比較できるPythonパッケージつくった話形態素解析器の比較できるPythonパッケージつくった話
形態素解析器の比較できるPythonパッケージつくった話Kensuke Mitsuzawa
 
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9Hiroshi Toda
 

Mais procurados (20)

究極のPHP本完成
究極のPHP本完成究極のPHP本完成
究極のPHP本完成
 
Mysqlを4.0から5.0を経由して5.6へバージョンアップした話
Mysqlを4.0から5.0を経由して5.6へバージョンアップした話Mysqlを4.0から5.0を経由して5.6へバージョンアップした話
Mysqlを4.0から5.0を経由して5.6へバージョンアップした話
 
TypeScriptからひも解く方向性
TypeScriptからひも解く方向性TypeScriptからひも解く方向性
TypeScriptからひも解く方向性
 
Pythonで業務改善をしたときにあった問題(ライト版)
Pythonで業務改善をしたときにあった問題(ライト版)Pythonで業務改善をしたときにあった問題(ライト版)
Pythonで業務改善をしたときにあった問題(ライト版)
 
TypeScriptについて
TypeScriptについてTypeScriptについて
TypeScriptについて
 
Phpのはなし
PhpのはなしPhpのはなし
Phpのはなし
 
Jazug tokyo-night bot-frameworkとかbotとか
Jazug tokyo-night bot-frameworkとかbotとかJazug tokyo-night bot-frameworkとかbotとか
Jazug tokyo-night bot-frameworkとかbotとか
 
Real World PHP in pixiv
Real World PHP in pixivReal World PHP in pixiv
Real World PHP in pixiv
 
あと一つプログラミング言語を
覚えたら死ぬ! 脳みそがパンクしそうな
あなたのための
nodeJSことはじめ
あと一つプログラミング言語を
覚えたら死ぬ! 脳みそがパンクしそうな
あなたのための
nodeJSことはじめあと一つプログラミング言語を
覚えたら死ぬ! 脳みそがパンクしそうな
あなたのための
nodeJSことはじめ
あと一つプログラミング言語を
覚えたら死ぬ! 脳みそがパンクしそうな
あなたのための
nodeJSことはじめ
 
たのしい独自フレームワーク
たのしい独自フレームワークたのしい独自フレームワーク
たのしい独自フレームワーク
 
読みやすいプログラム、書き換えやすいプログラム
読みやすいプログラム、書き換えやすいプログラム読みやすいプログラム、書き換えやすいプログラム
読みやすいプログラム、書き換えやすいプログラム
 
Rubyist started to learn Groovy - things important to leran new LL
Rubyist started to learn Groovy - things important to leran new LLRubyist 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でアプリケーションサーバー
 
PHP でファイルシステムを作ろう
PHP でファイルシステムを作ろうPHP でファイルシステムを作ろう
PHP でファイルシステムを作ろう
 
ググリワードを探す話
ググリワードを探す話ググリワードを探す話
ググリワードを探す話
 
ウェブエンジニアとしての1年目を振り返って
ウェブエンジニアとしての1年目を振り返ってウェブエンジニアとしての1年目を振り返って
ウェブエンジニアとしての1年目を振り返って
 
リレーショナルデータベースとの上手な付き合い方
リレーショナルデータベースとの上手な付き合い方リレーショナルデータベースとの上手な付き合い方
リレーショナルデータベースとの上手な付き合い方
 
形態素解析器の比較できるPythonパッケージつくった話
形態素解析器の比較できるPythonパッケージつくった話形態素解析器の比較できるPythonパッケージつくった話
形態素解析器の比較できるPythonパッケージつくった話
 
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
 
turbolinks攻略
turbolinks攻略turbolinks攻略
turbolinks攻略
 

Semelhante a PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~

PHPでセキュリティを真面目に考える
PHPでセキュリティを真面目に考えるPHPでセキュリティを真面目に考える
PHPでセキュリティを真面目に考えるTakuya Sato
 
新人エンジニアがフレームワークについて調べたこと
新人エンジニアがフレームワークについて調べたこと新人エンジニアがフレームワークについて調べたこと
新人エンジニアがフレームワークについて調べたことYosuke Kasagawa
 
10分でわかるPythonの開発環境
10分でわかるPythonの開発環境10分でわかるPythonの開発環境
10分でわかるPythonの開発環境Hisao Soyama
 
PHP conference kansai2018_ishihara
PHP conference kansai2018_ishiharaPHP conference kansai2018_ishihara
PHP conference kansai2018_ishiharaishihara_yuki
 
PHP7の拡張モジュール事情
PHP7の拡張モジュール事情PHP7の拡張モジュール事情
PHP7の拡張モジュール事情Yoshio Hanawa
 
フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由Kenichi Mukai
 
[TechLION] PHP Conference Japan 2014
[TechLION] PHP Conference Japan 2014[TechLION] PHP Conference Japan 2014
[TechLION] PHP Conference Japan 2014Yuki MAEJIMA
 
今すぐ使えるPHP開発のあれこれ
今すぐ使えるPHP開発のあれこれ今すぐ使えるPHP開発のあれこれ
今すぐ使えるPHP開発のあれこれYuya Kikukawa
 
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情Junichi Ishida
 
Composerはじめました
ComposerはじめましたComposerはじめました
ComposerはじめましたTakashi Nojima
 
Sphinxを使って本を書こう #pyconjp 2012
Sphinxを使って本を書こう #pyconjp 2012Sphinxを使って本を書こう #pyconjp 2012
Sphinxを使って本を書こう #pyconjp 2012Takayuki Shimizukawa
 
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudy
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudyライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudy
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudyKenichi Mukai
 
PHPerに覚えて欲しい日本語の重要性
PHPerに覚えて欲しい日本語の重要性PHPerに覚えて欲しい日本語の重要性
PHPerに覚えて欲しい日本語の重要性Rina Fukuda
 
PHP Now and then 2018 : WordPress Special Edition
PHP Now and then 2018 : WordPress Special EditionPHP Now and then 2018 : WordPress Special Edition
PHP Now and then 2018 : WordPress Special EditionRui Hirokawa
 
WordPress on PHP7 on CentOS7 on Saraku-VPS
WordPress on PHP7 on CentOS7 on Saraku-VPSWordPress on PHP7 on CentOS7 on Saraku-VPS
WordPress on PHP7 on CentOS7 on Saraku-VPSRyo Shibayama
 
PHP カンファレンス 2014 に行ってきたよ
PHP カンファレンス 2014 に行ってきたよPHP カンファレンス 2014 に行ってきたよ
PHP カンファレンス 2014 に行ってきたよMasaru Matsuo
 
RFC: "var" Deprecation
RFC: "var" DeprecationRFC: "var" Deprecation
RFC: "var" Deprecationy-uti
 
PHPプログラミングのIPv6対応の実際
PHPプログラミングのIPv6対応の実際PHPプログラミングのIPv6対応の実際
PHPプログラミングのIPv6対応の実際Tetsuji Koyama
 

Semelhante a PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~ (20)

PHPでセキュリティを真面目に考える
PHPでセキュリティを真面目に考えるPHPでセキュリティを真面目に考える
PHPでセキュリティを真面目に考える
 
新人エンジニアがフレームワークについて調べたこと
新人エンジニアがフレームワークについて調べたこと新人エンジニアがフレームワークについて調べたこと
新人エンジニアがフレームワークについて調べたこと
 
10分でわかるPythonの開発環境
10分でわかるPythonの開発環境10分でわかるPythonの開発環境
10分でわかるPythonの開発環境
 
PHP conference kansai2018_ishihara
PHP conference kansai2018_ishiharaPHP conference kansai2018_ishihara
PHP conference kansai2018_ishihara
 
PHP7の拡張モジュール事情
PHP7の拡張モジュール事情PHP7の拡張モジュール事情
PHP7の拡張モジュール事情
 
フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由
 
[TechLION] PHP Conference Japan 2014
[TechLION] PHP Conference Japan 2014[TechLION] PHP Conference Japan 2014
[TechLION] PHP Conference Japan 2014
 
今すぐ使えるPHP開発のあれこれ
今すぐ使えるPHP開発のあれこれ今すぐ使えるPHP開発のあれこれ
今すぐ使えるPHP開発のあれこれ
 
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
 
Composerはじめました
ComposerはじめましたComposerはじめました
Composerはじめました
 
第1回勉強会
第1回勉強会第1回勉強会
第1回勉強会
 
Sphinxを使って本を書こう #pyconjp 2012
Sphinxを使って本を書こう #pyconjp 2012Sphinxを使って本を書こう #pyconjp 2012
Sphinxを使って本を書こう #pyconjp 2012
 
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudy
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudyライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudy
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudy
 
PHPerに覚えて欲しい日本語の重要性
PHPerに覚えて欲しい日本語の重要性PHPerに覚えて欲しい日本語の重要性
PHPerに覚えて欲しい日本語の重要性
 
♡PHPが恋しい話♡
♡PHPが恋しい話♡♡PHPが恋しい話♡
♡PHPが恋しい話♡
 
PHP Now and then 2018 : WordPress Special Edition
PHP Now and then 2018 : WordPress Special EditionPHP 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-VPSWordPress on PHP7 on CentOS7 on Saraku-VPS
WordPress on PHP7 on CentOS7 on Saraku-VPS
 
PHP カンファレンス 2014 に行ってきたよ
PHP カンファレンス 2014 に行ってきたよPHP カンファレンス 2014 に行ってきたよ
PHP カンファレンス 2014 に行ってきたよ
 
RFC: "var" Deprecation
RFC: "var" DeprecationRFC: "var" Deprecation
RFC: "var" Deprecation
 
PHPプログラミングのIPv6対応の実際
PHPプログラミングのIPv6対応の実際PHPプログラミングのIPv6対応の実際
PHPプログラミングのIPv6対応の実際
 

PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~