Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Yoshio Hanawa
3,889 views
PHPで時間旅行をする方法
Read more
2
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 19
2
/ 19
3
/ 19
4
/ 19
5
/ 19
6
/ 19
7
/ 19
8
/ 19
9
/ 19
10
/ 19
11
/ 19
12
/ 19
13
/ 19
14
/ 19
15
/ 19
16
/ 19
17
/ 19
18
/ 19
19
/ 19
More Related Content
PDF
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
by
shoma h
PPTX
私の好きなPython構文 vol.2 #nds46
by
civicpg
PDF
Qt小技(修正版)
by
hermit4 Ishida
PDF
LT: 今日帰ってすぐに始められるPython #nds45
by
civic Sasaki
PDF
明日使える超高速Ruby - RXbyak (Mitaka.rb #5)
by
Shuyo Nakatani
PDF
PyPy 紹介
by
shoma h
PDF
Pythonで業務改善をしたときにあった問題(ライト版)
by
Satoshi Yamada
PDF
Q planet
by
hermit4 Ishida
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
by
shoma h
私の好きなPython構文 vol.2 #nds46
by
civicpg
Qt小技(修正版)
by
hermit4 Ishida
LT: 今日帰ってすぐに始められるPython #nds45
by
civic Sasaki
明日使える超高速Ruby - RXbyak (Mitaka.rb #5)
by
Shuyo Nakatani
PyPy 紹介
by
shoma h
Pythonで業務改善をしたときにあった問題(ライト版)
by
Satoshi Yamada
Q planet
by
hermit4 Ishida
Similar to PHPで時間旅行をする方法
KEY
php-timecopを実戦投入してみた
by
Yoshio Hanawa
PDF
Getting Started with Testing using PHPUnit
by
Atsuhiro Kubo
PPTX
CakePHP3.x での各種実装例 ~| PHP Tech Bash 20171121 ~
by
諒一 上野
PDF
雰囲気実装を少し抜け出そう!RFCからPHPの実装ま でを考えるタイムゾーンとサマータイム!!!
by
Suguru Ohki
PDF
PHPの今とこれから2025 (PHP Conference Japan 2025)
by
Rui Hirokawa
PDF
PHPの今とこれから2023
by
Rui Hirokawa
PDF
Sinatraでwebアプリケーション開発を学ぶ
by
Hiroshi Oyamada
PDF
YAPC::KANSAI 2017 LT
by
maka2donzoko
PDF
PHPの今とこれから2016
by
Rui Hirokawa
PDF
PHPの今とこれから2019
by
Rui Hirokawa
ODP
本当は怖いPHP
by
Takuya Sato
KEY
PHPエクステンションの開発tips
by
Yoshio Hanawa
PDF
徹底攻略!PHP5.4
by
Takuya Sato
PDF
ホームディレクトリに埋もれた便利なコードをさがせ!
by
Yohei Fushii
PDF
Sinatraアプリをherokuにアップ
by
Hiroshi Oyamada
PDF
Introduction to Continuous Test Runner MakeGood
by
Atsuhiro Kubo
PPTX
TIme::Moment+Time::Strptime=
by
karupanerura
PDF
Modern PHP Programming @ PFI Seminar
by
Sotaro Karasawa
PDF
PHP language update 201211
by
Moriyoshi Koizumi
PDF
超strtotime()
by
Masunaga Ray
php-timecopを実戦投入してみた
by
Yoshio Hanawa
Getting Started with Testing using PHPUnit
by
Atsuhiro Kubo
CakePHP3.x での各種実装例 ~| PHP Tech Bash 20171121 ~
by
諒一 上野
雰囲気実装を少し抜け出そう!RFCからPHPの実装ま でを考えるタイムゾーンとサマータイム!!!
by
Suguru Ohki
PHPの今とこれから2025 (PHP Conference Japan 2025)
by
Rui Hirokawa
PHPの今とこれから2023
by
Rui Hirokawa
Sinatraでwebアプリケーション開発を学ぶ
by
Hiroshi Oyamada
YAPC::KANSAI 2017 LT
by
maka2donzoko
PHPの今とこれから2016
by
Rui Hirokawa
PHPの今とこれから2019
by
Rui Hirokawa
本当は怖いPHP
by
Takuya Sato
PHPエクステンションの開発tips
by
Yoshio Hanawa
徹底攻略!PHP5.4
by
Takuya Sato
ホームディレクトリに埋もれた便利なコードをさがせ!
by
Yohei Fushii
Sinatraアプリをherokuにアップ
by
Hiroshi Oyamada
Introduction to Continuous Test Runner MakeGood
by
Atsuhiro Kubo
TIme::Moment+Time::Strptime=
by
karupanerura
Modern PHP Programming @ PFI Seminar
by
Sotaro Karasawa
PHP language update 201211
by
Moriyoshi Koizumi
超strtotime()
by
Masunaga Ray
More from Yoshio Hanawa
PDF
PHP7で変わること ——言語仕様とエンジンの改善ポイント
by
Yoshio Hanawa
PDF
PHP7の拡張モジュール事情
by
Yoshio Hanawa
PDF
PHPの拡張モジュールをGoで作る
by
Yoshio Hanawa
PDF
PHPの正規表現と最長一致
by
Yoshio Hanawa
PDF
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
by
Yoshio Hanawa
PDF
iOS/macOSとAndroid/Linuxのサンドボックス機構について調べた
by
Yoshio Hanawa
PDF
GitHubにバグ報告して賞金$500を頂いた話
by
Yoshio Hanawa
PDF
Zend VMにおける例外の実装
by
Yoshio Hanawa
PDF
PHP拡張をPECLに登録してわかったこと
by
Yoshio Hanawa
PPTX
自宅の消費電力をリアルタイムに グラフ化してみた
by
Yoshio Hanawa
PDF
浮動小数点数とOSSのバグの話
by
Yoshio Hanawa
PDF
realpathキャッシュと OPcacheの面倒すぎる関係
by
Yoshio Hanawa
PDF
PHP7の内部実装から学ぶ性能改善テクニック
by
Yoshio Hanawa
PDF
php-buildがいかに便利かを力説する
by
Yoshio Hanawa
PDF
「OKグーグル! 銀行振込1000円」
by
Yoshio Hanawa
PDF
Laungage Update PHP編
by
Yoshio Hanawa
PDF
GitHubからお金をもらった話
by
Yoshio Hanawa
PDF
Zend VMにおける例外の実装
by
Yoshio Hanawa
PDF
ぼくのかんがえる さいきょうの銀行振込
by
Yoshio Hanawa
PDF
家庭用ブロードバンドルータ上でWordPressを動かそう
by
Yoshio Hanawa
PHP7で変わること ——言語仕様とエンジンの改善ポイント
by
Yoshio Hanawa
PHP7の拡張モジュール事情
by
Yoshio Hanawa
PHPの拡張モジュールをGoで作る
by
Yoshio Hanawa
PHPの正規表現と最長一致
by
Yoshio Hanawa
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
by
Yoshio Hanawa
iOS/macOSとAndroid/Linuxのサンドボックス機構について調べた
by
Yoshio Hanawa
GitHubにバグ報告して賞金$500を頂いた話
by
Yoshio Hanawa
Zend VMにおける例外の実装
by
Yoshio Hanawa
PHP拡張をPECLに登録してわかったこと
by
Yoshio Hanawa
自宅の消費電力をリアルタイムに グラフ化してみた
by
Yoshio Hanawa
浮動小数点数とOSSのバグの話
by
Yoshio Hanawa
realpathキャッシュと OPcacheの面倒すぎる関係
by
Yoshio Hanawa
PHP7の内部実装から学ぶ性能改善テクニック
by
Yoshio Hanawa
php-buildがいかに便利かを力説する
by
Yoshio Hanawa
「OKグーグル! 銀行振込1000円」
by
Yoshio Hanawa
Laungage Update PHP編
by
Yoshio Hanawa
GitHubからお金をもらった話
by
Yoshio Hanawa
Zend VMにおける例外の実装
by
Yoshio Hanawa
ぼくのかんがえる さいきょうの銀行振込
by
Yoshio Hanawa
家庭用ブロードバンドルータ上でWordPressを動かそう
by
Yoshio Hanawa
PHPで時間旅行をする方法
1.
PHPで時間旅行をする方法
塙 与志夫 (hnw) Symfony勉強会#6 2012/06/30 発表資料 12年6月30日土曜日
2.
自己紹介
• hnw • bugs.php.netでバグ報告18件 12年6月30日土曜日
3.
自己紹介
• hnw • bugs.php.netでバグ報告18件 • 好きな物:バグ, カレー • 好きな境界値:2の53乗+1 12年6月30日土曜日
4.
PHPで時間旅行…?
• ついにPHPでネコ型ロボットが… 12年6月30日土曜日
5.
PHPで時間旅行…?
• ついにPHPでネコ型ロボットが… • 作れません 12年6月30日土曜日
6.
問題意識
• 時刻に関わるテストをどう実現する? • 例:年またぎテスト • dateなど標準関数を使われると痛い • 「時間旅行」がしたいなあ… 12年6月30日土曜日
7.
それRubyならできるよ!
• Rubygem Timecop • https://github.com/jtrupiano/timecop • Ruby組み込み実装をRubyで上書き! • Time, Date, DateTimeの3クラスを 自前実装でラップしている 12年6月30日土曜日
8.
いわゆる動的言語の特徴
• 組み込み関数やクラスも上書き可能 • Ruby、Python、JavaScriptなど 12年6月30日土曜日
9.
PHPだとできない… 12年6月30日土曜日
10.
それPHP拡張でできるよ!
• 拡張ならPHP関数を上書きできる • 関数テーブルを書き換える • 例: mbstringの関数オーバーロード • 組み込みクラスも書き換え可能 12年6月30日土曜日
11.
作りました
• php-timecop • https://github.com/hnw/php-timecop • Cで書かれたPHP拡張 • 日付関数とDateTimeクラスを置き換え 12年6月30日土曜日
12.
実装の詳細(1)
• 時間を止めるPHP関数 • 現在時刻が指定された時刻になる • 時間移動するPHP関数 • 現在時刻が過去や未来になり、 そこから時間が進みだす 12年6月30日土曜日
13.
実装の詳細(2)
• 自前実装で差し替え • time関数 • 引数のデフォルト値を差し替え • date関数の第二引数など • DateTimeのコンストラクタ 12年6月30日土曜日
14.
サンプルコード 12年6月30日土曜日
15.
現状
• アルファ版 • CLI版でテストコードは動いてる • SAPI版は動くけど怪しい • コンパイルも1環境しか試してない →Pull Requestかレビュアー募集中 12年6月30日土曜日
16.
利用シーン
• 時刻に依存するような自動テスト • 時刻に依存するようなテンプレートの 表示確認 12年6月30日土曜日
17.
メリット
• 既存コードや外部ライブラリなどに 一律に適用できる • 機能が少ないのでrunkit拡張より 安心感がある(ような気がする) 12年6月30日土曜日
18.
まとめ
• 他の言語がうらやましい • それPHP拡張でできるよ! • php-timecop作りました! • 安定したらテストで活躍するはず • 要望・アイデアなどお待ちしてます 12年6月30日土曜日
19.
ご清聴
ありがとう ございました 12年6月30日土曜日
Download