我正在尝试学习 OOPHP,我想我已经到了那里。我只是不知道输出多个数据库行的最佳方式是什么。
我尝试的第一种方法是在函数内正常输出,但我认为这种方式违背了 OOP 的目的。
我还尝试public $list
在类中设置一个数据库查询将所有数据推送到然后循环代码外部数据的类,但理想情况下我想从查询中创建对象的多个实例并使用它们的公共变量(我的测试用例中的 id、name 和 eyecolour)来获取数据,以便数据始终来自同一个地方。但是如何从类中的查询创建多个对象,然后如何遍历它们以显示它们,以及如何区分它们或仅针对具有特定值的特定对象?
我浏览了多个主题,但它们似乎都专注于特定情况下的问题。我想从这个简单的意义上学习它,这样我就可以将它应用到更大的项目中。
这是我一直在玩的代码:
class Ignition {
public function dataConnection() {
return new PDO('mysql:host=localhost;port=8889;dbname=oop_testing','root','root',array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
}
}
class People {
private $db;
// Each person has a
public $id;
public $name;
public $eyecolour;
public $list = array();
public function __construct() {
$this->db = new Ignition();
$this->db = $this->db->dataConnection();
}
public function getList() {
echo "People:<br /><br />";
$sql = $this->db->prepare("SELECT * FROM people");
$sql->execute();
//$this->list = $sql->fetch(PDO::FETCH_ASSOC);
while($person = $sql->fetch(PDO::FETCH_ASSOC)) {
array_push($this->list, $person);
}
/*while($person = $sql->fetch(PDO::FETCH_ASSOC)) {
echo $person['name'] . "<br />";
}*/
}
public function getIndividual($search, $by = "id") {
$sql = $this->db->prepare("SELECT * FROM people WHERE $by = :search");
//$sql->bindParam(":by", $by);
$sql->bindParam(":search", $search);
$sql->execute();
$individual = $sql->fetch(PDO::FETCH_ASSOC);
$this->id = $individual['id'];
$this->name = $individual['name'];
$this->eyecolour = $individual['eyecolour'];
}
}
$people = new People();
$people->getList();
/*echo "<pre>";
var_dump($people->list);
echo "</pre>";*/
foreach ($people->list as $person) {
echo $person['name'];
}
$people->getIndividual(1);
echo "<br />Name: " . $people->name;
echo "<br />Eye Colour: " . $people->eyecolour;