1

多くのユーザーがアクセスする PHP アプリケーションを作成するのはこれが初めてなので、以前は読み込み速度について心配する必要はありませんでしたが、今はそうしています。

これらは私が考えた方法ですが、どれも少し「ハックっぽい」ようで、もっと良い方法があると確信しています。

インデックスページの場合、次のようにすることができます:

<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'];
}

等...

または、1 つの関数を使用して、すべての結果を配列に呼び出すこともできます。それらを文字列として保存し、必要に応じて分解します。

私の他のアイデアは上記と似ていましたが、クラスですべてを行い、html をエコーし​​ます。

私が望むものを出力する速度の点で最良の方法は何ですか?

4

3 に答える 3

2

クエリを1回実行する方が良いと思います..したがって、必要なすべての詳細を取得し、必要なときにいつでも使用できます

 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>

これ以上はわかりません……。

于 2012-06-12T10:36:41.983 に答える
2

プロパティごとにゲッターとセッターを作成し、1 つのクエリを実行し、すべての変数を設定し、ゲッターを使用して実際の値を取得します。

このようなものが動作するはずです:

    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']);

    }
于 2012-06-12T10:37:41.953 に答える
2

MVC (Model-View-Controller) デザイン パターンについて聞いたことがありますか?

アプリ全体を書き直してほしくありませんが、モデルの使用に慣れることはできます...この方法で (非常に簡単な方法で) 、必要なすべてのデータをロードするために DB にクエリを実行class Modelするメソッドを持つ を作成します__construct($id)それらをプライベート/パブリック/保護された(気分が良くなるものは何でも)プロパティ内に保存します。

getXYZ()次に、プロパティ値のみを返すそのモデルでこれらのメソッドを呼び出します...

このような:

クラス記事{プライベート$タイトル; プライベート $description; プライベート $somethingElse;

    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;
    }

それだけです...すべてのデータを取得するためのたった1つのクエリ...

このモデルも編集したい場合データベース内のこの非常に具体的な行をsetXYZ($value)設定$this->XYZ = $value;するメソッドと更新するメソッドを作成することもできます...save()

これらのメソッド (get および set) は getter および setter と呼ばれます...

于 2012-06-12T10:40:55.723 に答える