Php OOP或MySQL调用。直接从MySQL生成对象或调用?
我不确定什么是更好的练习还是更现实的练习。我希望从头开始创建一个目录系统,但不确定最好的方法是什么 我在想,当我需要显示诸如,Php OOP或MySQL调用。直接从MySQL生成对象或调用?,php,mysql,Php,Mysql,我不确定什么是更好的练习还是更现实的练习。我希望从头开始创建一个目录系统,但不确定最好的方法是什么 我在想,当我需要显示诸如,info.php?id=100等信息时,我会使用对象。有这样的代码来显示 Game.class.php文件 class Game { private $name; private $type; private $database; public function __construct($database, $id) {
info.php?id=100等信息时,我会使用对象。有这样的代码来显示
Game.class.php文件
class Game {
private $name;
private $type;
private $database;
public function __construct($database, $id) {
$information = $database->select($id); // returns mysql_fetch_array
$this->database = $database;
$this->setName($information['name']);
$this->setType($information['type']);
}
public function __destruct() {
unset($this->name);
...
}
...
private function setName($name) {
$this->name = $name;
}
...
public function getName() {
return $this->name;
}
...
public function addToDatabase() {
// stuff here to check if it exists in the database or not
$database->insert('test', array('id' => '', 'name' => $this->name, 'type' => $this->type));
}
}
// already have __autload()
$id = sanitize($_POST['id']);
$item = new Game($db, $id);
echo "Item name: " . $item->getName() . " <br />";
info.php?id=100文件
class Game {
private $name;
private $type;
private $database;
public function __construct($database, $id) {
$information = $database->select($id); // returns mysql_fetch_array
$this->database = $database;
$this->setName($information['name']);
$this->setType($information['type']);
}
public function __destruct() {
unset($this->name);
...
}
...
private function setName($name) {
$this->name = $name;
}
...
public function getName() {
return $this->name;
}
...
public function addToDatabase() {
// stuff here to check if it exists in the database or not
$database->insert('test', array('id' => '', 'name' => $this->name, 'type' => $this->type));
}
}
// already have __autload()
$id = sanitize($_POST['id']);
$item = new Game($db, $id);
echo "Item name: " . $item->getName() . " <br />";
相反,我应该跳过创建对象,直接插入
$name = sanitize($_POST['name']); // sanitize
$type = sanitize($_POST['type']); // sanitize
$sql = "INSERT INTO test ('id', 'name', 'type') VALUES ('', $name, $type)";
mysql_query($sql);
或者如果我有一个数据库类
$name = sanitize($_POST['name']); // sanitize
$type = sanitize($_POST['type']); // sanitize
$db->insert('test', array('id' => '', 'name' => $name, 'type' => $type));
对于本例,似乎没有必要先创建对象。只需直接插入数据库。要获得完整的抽象,您可以查看第三方ORM。至少,您应该创建自己的数据库类。如果我只打算有一个数据库连接,我通常使用单例设计模式
您不希望到处都是原始SQL语句,因为您可能需要切换到和/或支持不同版本的MySQL,甚至是不同的数据库。替换单个数据库管理对象比修复代码中的所有查询更容易
我的一个数据库类与您发布的第三个选项非常相似,它工作得非常好。它有许多方便之处,如insertArray()、getOneRow()、getOne()、getOneFromAllRows()、executeExternalFile(),以及所有类似SELECT的查询的可迭代结果集