这是我第一次制作一个允许很多用户访问它的PHP应用程序,所以我以前就不用担心加载速度了。我现在就做。
这些是我想到的方式,但它们似乎都有点像“hack-ish”,我确信有更好的方法。
对于索引页面,我可以这样:
<h1><?php $job->getTitle($id); ?></h1>
<p><?php $job->getDescription($id); ?></p>
<p><?php $job->getSomethingElse($id); ?></p>
班级为:
function getTitle($id) {
$query = "SELECT title FROM table WHERE id = $id";
$result = $db->query($query);
$row = $result->fetch_array(MYSQLI_ASSOC);
echo $row['title'];
}
function getDescription($id) {
$query = "SELECT description FROM table WHERE id = $id";
$result = $db->query($query);
$row = $result->fetch_array(MYSQLI_ASSOC);
echo $row['description'];
}
等...
或者我可以有一个函数,将所有结果调用到一个数组。将它们存储为String并在我需要时将它们爆炸。
我的另一个想法与上面类似,只不过我在课堂上做了所有事情并且回应了html。
在输出速度方面,最好的方法是什么?
答案 0 :(得分:2)
我认为它可以更好地执行一次查询..因此,您可以随时获取所需的所有详细信息并随时使用
function getDetails($id){
$query = "SELECT title,description FROM table WHERE id = $id";
$result = $db->query($query);
return $result->fetch_array(MYSQLI_ASSOC);
}
你可以使用
<?php $details = $job->getDetails($id); ?>
<h1><?php echo $details['title']; ?></h1>
<p><?php echo $details['description']; ?></p>
我不太了解这个......
答案 1 :(得分:2)
为每个属性创建一个getter和setter,运行1个查询,设置所有变量并使用getter获取实际值。
这样的事情应该有效:
private $name;
private $street;
private $number;
public function setName($name)
{
$this->name = $name;
}
public function getName()
{
return $this->name;
}
public function setNumber($number)
{
$this->number = $number;
}
public function getNumber()
{
return $this->number;
}
public function setStreet($street)
{
$this->street = $street;
}
public function getStreet()
{
return $this->street;
}
public function getUser()
{
$query = "SELECT * FROM users WHERE x = y";
$this->setName($result['name']);
$this->setStreet($result['street']);
$this->setName($result['number']);
}
答案 2 :(得分:2)
虽然我不希望你重写整个你的应用程序,你仍然可以习惯使用模型......通过这种方式(以非常简单的方式)你创建一个class Model
的{{1}}查询数据库以加载所有必要数据并将其存储在私有/ publi / protected(无论什么使你感觉良好)属性的方法。
然后在该模型上调用这些__construct($id)
方法,只返回它的属性值...
像这样:
类文章{ 私人$ title; 私人$描述; private $ somethingElse;
getXYZ()
就是这样......只需一个查询来检索所有数据......
在您想要编辑此模型的情况下您还可以创建 public function __construct($id) {
$query = "SELECT title, description, somethingElse FROM table WHERE id = $id";
$result = $db->query($query);
$row = $result->fetch_array(MYSQLI_ASSOC);
$this->title = $row['title'];
$this->description = $row['description'];
$this->somethingElse = $row['somethingElse'];
}
public function getTitle() {
return $this->title;
}
public function getDescription() {
return $this->description;
}
public function getSomethingElse() {
return $this->somethingElse;
}
方法,这些方法将设置setXYZ($value)
和$this->XYZ = $value;
方法,以更新数据库中这个非常具体的行...
这些方法(get和set)称为getter和setter ......