前提・実現したいこと
PHPフレームワークを使わない環境で、WEBシステムを開発しています。
その中で、例えば「データベースからユーザー一覧を取得する」といった処理を、複数のページで使いまわすために関数化したいと思っています。
実装は出来たのですが、
- このような実装方法は推奨されるのか
- セキュリティ・パフォーマンス面で懸念点はないか
- そもそも根本的な設計が誤っていないか
などをアドバイスいただければと思っています。
実装の概要は以下の通りです。
- データベース接続用の関数
db_connect()
で、PDOインスタンスを取得(de_connect.php
) - ユーザー一覧を取得する関数
get_user()
を作成(api.php
) - ユーザー一覧を取得したいページで、
de_connect.php
、spi.php
をrequireする get_user()
関数にPDOインスタンスを投げて、結果を取得
db_connect.php
php
1<?php 2define( 'DB_HOST', 'localhost' ); 3define( 'DB_NAME', 'mst_user' ); 4define( 'DB_USERNAME', 'root' ); 5define( 'DB_PASSWORD', 'password' ); 6define( 'DSN', 'mysql:host=' . DB_HOST . '; dbname=' . DB_NAME . '; charset=utf8' ); 7 8// データベースに接続 9function db_connect() { 10 $pdo = new PDO( DSN, DB_USERNAME, DB_PASSWORD ); 11 return $pdo; 12}
api.php
php
1<?php 2// ユーザー一覧を取得 3function get_user( $pdo ) { 4 $rows = $pdo->query( 'SELECT * FROM mst_user' )->fetchAll(); 5 return $rows; 6} 7 8// XXX一覧を取得 9function get_xxx( $pdo ) { 10 $rows = $pdo->query( 'SELECT * FROM mst_xxx' )->fetchAll(); 11 return $rows; 12} 13 14// YYY一覧を取得 15function get_yyy( $pdo ) { 16 $rows = $pdo->query( 'SELECT * FROM mst_yyy' )->fetchAll(); 17 return $rows; 18}
page.php
php
1<?php 2require_once( 'db_connect.php' ); 3require_once( 'api.php' ); 4 5// データベースに接続 6$dbh = db_connect(); 7 8// ユーザー一覧を取得 9$user = get_user( $dbh );
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/06/25 05:09
退会済みユーザー
2020/06/25 05:38
退会済みユーザー
2020/06/25 08:15