作者smallsteel (小钢)
看板PHP
标题[讨论] 大家对於资料库的连结方式?
时间Sat Dec 20 02:39:21 2014
其实会写这篇文章算是抛砖引玉, 想要见识一下不同的人不同的写法.希望大家能够互相
分享一下
先讲联结方式吧,我自己写PHP的时候是不会使用Mysql Procedure的, procedure通常都是
自己用来除错或是查资料,不会放进PHP里面
连结的时候我都会写一个class是控制,不管是extend mysql, mysqli或是PDO,
以PDO来说(以下的程式码指令可能是错的,大家逻辑懂就好了)
class myPDO
{
public $echo = false;
public $debug = false;
function __construct()
{
require_once "/configuration.php";
$user = self::mysqluser;
$pass = self::mysqlpass;
parent::__construct(.........);
}
}
通常我伺服器的专用参数都会统一放在一个档案
写这样的好处是,在不同的伺服器之间并不需要修改class的内容,直接读取伺服器参数就
好
$echo 算是用来侦错,true的话则会echo 所有的query
接着以执行query来说,我通常一个table 会写一个class 来负责
如果table偏向实体的东西,有可能还会因为单复数分成两个class
举table users 的例子来说 User , Users
class User
{
private $user_id;
private $user_name;
private $user_age;
funciton getUser(myPDO $pdo, $user_id)
{
$query = "SELECT user_name, user_age FROM users WHERE user_id=$user_id";
$pdo->query($query);
...........
}
}
class Users
{
funciton getAllUser()
{
$query = "SELECT user_id, user_name, user_age FROM users";
$stmt = $pdo->query($query);
$stmt->excute();
$Users = array();
while($row = $stmt->fetch())
{
$user = new User($row);
$Users[] = $user;
}
$return $Users;
}
}
当然也有一个class同时负责多个table的,例如Address 可能负责table street, city,
country
这样一来大概可以涵盖掉80%左右的query,剩下的就直接写query 呼叫mysql 的class
这大概就是我PHP与MYSQL之间的写法吧
不知道其他人是怎麽样呢?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 162.246.55.234
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/PHP/M.1419014363.A.892.html
1F:→ chrisQQ: 同个 server 上不同 site 我还是会设定专用 mysql user 12/20 03:18
2F:→ chrisQQ: 去连,只给那个该 database 的权限。 12/20 03:18
3F:→ chrisQQ: 第二段就是 model 的概念,找一套 ORM 来用? 12/20 03:19
4F:→ chrisQQ: ↑「找一套 ORM 来研究看看为什麽人家这样写」 12/20 03:25