sql >> Databasteknik >  >> RDS >> Mysql

OOP PHP PDO Mitt första projekt, gör jag rätt?

Jag skulle börja med att använda modell/mappare. Det är ett väldigt enkelt sätt att få enkla objekt och att kunna bevara dem till databasen. Det undviker också att blanda databasanrop och kod (persistenslogik) med funktionalitet (applikations- eller affärslogik). Enkelt exempel:

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

Jag skulle också rekommendera att använda getters/setters istället för direkt medlemsåtkomst, men detta var bara för enkelhetens skull... När du utvecklar fler modeller/mappers kommer du att hitta vanliga mapparfunktioner (spara, ladda, ta bort, hitta) och du kan omstrukturera din kod för att innehålla den gemensamma logiken så att du inte har en massa copypasta.




  1. Hur man beställer efter antal i SQL?

  2. Hur lagrar man ett procentvärde?

  3. Python-problem:Det gick inte att hitta vcvarsall.bat

  4. MariaDB JSON_DEPTH() Förklarad