More Related Content
Similar to CPANモジュールをPHPに移植してみた話
Similar to CPANモジュールをPHPに移植してみた話 (20)
CPANモジュールをPHPに移植してみた話
- 4. 自己紹介
• HN: memememomo
12年8月18日土曜日
- 5. 自己紹介
• HN: memememomo
• はてなブログ(id: memememomo)
12年8月18日土曜日
- 6. 自己紹介
• HN: memememomo
• はてなブログ(id: memememomo)
• Twitter(@memememomo)
12年8月18日土曜日
- 7. 自己紹介
• HN: memememomo
• はてなブログ(id: memememomo)
• Twitter(@memememomo)
• github(memememomo)
12年8月18日土曜日
- 8. 自己紹介
• HN: memememomo
• はてなブログ(id: memememomo)
• Twitter(@memememomo)
• github(memememomo)
12年8月18日土曜日
- 9. 自己紹介
• HN: memememomo
• はてなブログ(id: memememomo)
• Twitter(@memememomo)
• github(memememomo)
• 京都でエンジニアをやってる
12年8月18日土曜日
- 10. 自己紹介
• HN: memememomo
• はてなブログ(id: memememomo)
• Twitter(@memememomo)
• github(memememomo)
• 京都でエンジニアをやってる
• 普段使ってる言語は Perl と PHP
12年8月18日土曜日
- 14. PHPに移植した背景と動機
• 仕事でPHPを書かなければならない
• PHPでも使いたいCPANモジュールが出てくる
12年8月18日土曜日
- 15. PHPに移植した背景と動機
• 仕事でPHPを書かなければならない
• PHPでも使いたいCPANモジュールが出てくる
• ググっても同じようなものがない
12年8月18日土曜日
- 16. PHPに移植した背景と動機
• 仕事でPHPを書かなければならない
• PHPでも使いたいCPANモジュールが出てくる
• ググっても同じようなものがない
12年8月18日土曜日
- 17. PHPに移植した背景と動機
• 仕事でPHPを書かなければならない
• PHPでも使いたいCPANモジュールが出てくる
• ググっても同じようなものがない
• PHPの練習になりそう
12年8月18日土曜日
- 18. PHPに移植した背景と動機
• 仕事でPHPを書かなければならない
• PHPでも使いたいCPANモジュールが出てくる
• ググっても同じようなものがない
• PHPの練習になりそう
• Perlの勉強にもなりそうなので、モチベーションが保
てる
12年8月18日土曜日
- 21. 移植してみたもの
• SQL::Maker
• ハッシュなどで組み立てたデータから、SQL文とバ
インドの値リストを作成するモジュール
12年8月18日土曜日
- 22. 移植してみたもの
• SQL::Maker
• ハッシュなどで組み立てたデータから、SQL文とバ
インドの値リストを作成するモジュール
• O/Rマッパーのないプロジェクトに導入しやすい
12年8月18日土曜日
- 23. 移植してみたもの
• SQL::Maker
• ハッシュなどで組み立てたデータから、SQL文とバ
インドの値リストを作成するモジュール
• O/Rマッパーのないプロジェクトに導入しやすい
• バッチ処理を書くときに使いやすい
12年8月18日土曜日
- 24. 移植してみたもの
• SQL::Maker
• ハッシュなどで組み立てたデータから、SQL文とバ
インドの値リストを作成するモジュール
• O/Rマッパーのないプロジェクトに導入しやすい
• バッチ処理を書くときに使いやすい
• Test::mysqld
12年8月18日土曜日
- 25. 移植してみたもの
• SQL::Maker
• ハッシュなどで組み立てたデータから、SQL文とバ
インドの値リストを作成するモジュール
• O/Rマッパーのないプロジェクトに導入しやすい
• バッチ処理を書くときに使いやすい
• Test::mysqld
• テスト用に一時的にmysqlのインスタンスを作成する
モジュール
12年8月18日土曜日
- 26. SQL_Maker
// オブジェクト生成
$builder = new SQL_Maker(array('driver' => 'mysql'));
// 設定
$table_name = 'pokedex';
$columns = array('*');
$where = array(
'name' => 'Pikachu',
'legendry' => null,
'area' => array('ish', 'joto'),
'base_hp' => array('<=' => 40)),
'type' => array('like' => '%electric%')),
'id' => SQL_Maker::scalar( array('= (? - 0)', 25) )
);
$opts = array('limit' => 1);
// SQL文とbindsを生成
list($sql, $binds) = $builder->select($table_name, $columns, $where, $opts);
12年8月18日土曜日
- 29. SQL::Makerを移植してみて
• Perlでは、シジル($@%)やカッコ(()[]{})でデータ
構造を表せるのは良い
• PHPに移植したらarray関数だらけに
12年8月18日土曜日
- 30. SQL::Makerを移植してみて
• Perlでは、シジル($@%)やカッコ(()[]{})でデータ
構造を表せるのは良い
• PHPに移植したらarray関数だらけに
• PHPUnitの練習になった
12年8月18日土曜日
- 32. TODO
• プラグイン機能がまだ移植できていない
12年8月18日土曜日
- 33. TODO
• プラグイン機能がまだ移植できていない
• 動的にメソッドを追加する方法がよく分からない...
12年8月18日土曜日
- 35. Test_mysqld
• @taiyohさんが移植してる途中だったものを進めた
12年8月18日土曜日
- 36. Test_mysqld
• @taiyohさんが移植してる途中だったものを進めた
• PHPをコンパイルする時に--enable-pcntlオプションをつ
ける必要がある
12年8月18日土曜日
- 37. // my.cnfの内容
$my_cnf = array('skip-networking' => '');
// Test_mysqldの設定
$opts = array();
// オブジェクト生成(MySQLのプロセスが出来上がる)
$mysqld = new Test_mysqld($my_cnf, $opts);
// DSN取得
$dsn = $mysqld->dsn();
// DSNを使ってDBに接続
$dsn = new PDO($dsn);
// do something
12年8月18日土曜日
- 41. Test_mysqldを移植してみて
• マルチプロセス処理のプログラムの勉強になった
• 普通にPHPをやっていると使わない機能
• pcntl_fork() / pcntl_exec() / pcntl_waitpid()
12年8月18日土曜日
- 44. まとめ
• CPANモジュールをPHPに移植してみると
12年8月18日土曜日
- 45. まとめ
• CPANモジュールをPHPに移植してみると
• PHPの練習になる
12年8月18日土曜日
- 46. まとめ
• CPANモジュールをPHPに移植してみると
• PHPの練習になる
• Perlの勉強にもなる
12年8月18日土曜日
- 47. まとめ
• CPANモジュールをPHPに移植してみると
• PHPの練習になる
• Perlの勉強にもなる
• PHPでCPANモジュールが使えるようになる
12年8月18日土曜日
- 48. ご清聴
ありがとうございました
12年8月18日土曜日
- 49. 参照
• SQL_Maker
• https://github.com/memememomo/php-SQL-Maker
• Test_mysqld
• https://github.com/taiyoh/Test_mysqld-php
12年8月18日土曜日