Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PDOの仕様 コレ知ってる?~DAOクラスを作る~

PDOの仕様 コレ知ってる?~DAOクラスを作る~

2024年12月22日 PHPConference2024 大懇親会LT で発表した資料です。
自作の家計簿アプリの為に作ったDAOクラスに問題を見つけました。
それを解決しようと公式のドキュメントを確認していたら、思いもよらなかった仕様を発見しました。
果たして、このDAOクラスの実装は適切なのでしょうか?

ShirayanagiRyuji

December 22, 2024
Tweet

More Decks by ShirayanagiRyuji

Other Decks in Technology

Transcript

  1. 1. PDOって何? ※超☆ざっくり版 • PHP Data Accerss Object • PHPから各種DBへのデータアクセスを仲介するライブ

    ラリ • LaravelもORMの先でPDOによるDBアクセス を行っている(はず)※しっかり読んでない
  2. 2. 俺のDAOクラスの実装を見てくれ! function Select($query, $param) {
 
 // SQL実行
 $statement

    = $this->dbo->prepare($query); // SQL文設定
 $statement->execute($param); // パラメータ設定
 $results = $statement->fetchAll(PDO::FETCH_ASSOC);
 
 return $results;
 }

  3. 3. こんな仕様があったの?:振り返り function Select($query, $param) {
 
 // SQL実行
 $statement

    = $this->dbo->prepare($query); // SQL文設定
 $statement->execute($param); // パラメータ設定
 $results = $statement->fetchAll(PDO::FETCH_ASSOC);
 
 return $results;
 }

  4. 3. こんな仕様があったの?:改善案 function &Select($query, $param) {
 
 // SQL実行
 $statement

    = $this->dbo->prepare($query); // SQL文設定
 $statement->execute($param); // パラメータ設定
 $results = $statement->fetchAll(PDO::FETCH_ASSOC);
 $statement->closeCursor(); 
 
 return $results;
 }