sql >> Databáze >  >> RDS >> Mysql

OOP PHP PDO Můj první projekt, dělám správně?

Začal bych pomocí modelu/mapovače. Je to velmi jednoduchý způsob, jak získat prosté objekty a uchovat je v databázi. Také se vyhne míchání databázových volání a kódu (logiky persistence) s funkčností (aplikační nebo obchodní logika). Jednoduchý příklad:

class User {
    public $id;
    public $username;

}

class UserMapper {
    /**
     * @param User $user
     */
    public function save(User $user) {

        if(isset($user->id)) {
            $statement = "Update users set username = ? where id = ?"
        } else {
            $statement = "insert into users set username = ?, id = ?"
        }
        $instance = db::getInstance();
        $sth = $instance->prepare($statement );
        $values_a = array($user->username, $user->id);
        $db_result = $sth->execute($values_a);
    }

    /**
     * @param int $userId
     * @return User
     */
    public function load($userId) {
        $statement = "select * from users where id = ?";
        $instance = db::getInstance();
        $sth = $instance->prepare($statement );
        $values_a = array($user->id);
        $db_result = $sth->execute($values_a);
        $returnUser = new User();
        $returnUser ->id       = $db_result[0]['id'];
        $returnUser ->username = $db_result[0]['username'];
        return $returnUser;
    }
}

Také bych doporučil místo přímého přístupu členů používat getters/setters, ale to bylo jen pro jednoduchost kódu... Jak budete vyvíjet více modelů/mapovačů, najdete společné funkce mapperu (ukládání, načítání, mazání, hledání) a vy může změnit váš kód tak, aby obsahoval společnou logiku, takže nebudete mít spoustu copypasta.




  1. Vypočítejte delta (rozdíl aktuálního a předchozího řádku) v sql

  2. Jak obnovit data ze smazaného kontejneru Docker? Jak jej znovu připojit k datům?

  3. jak změnit postgresql naslouchací port v systému Windows?

  4. skript pro převod mysql dump sql souboru do formátu, který lze importovat do sqlite3 db