sql >> Database teknologi >  >> RDS >> Mysql

OOP PHP BOB Mit første projekt, gør jeg rigtigt?

Jeg ville starte med at bruge model/mapper. Det er en meget enkel måde at få almindelige objekter på og at kunne bevare dem til databasen. Det undgår også at blande databasekald og kode (persistenslogik) med funktionalitet (applikations- eller forretningslogik). Simpelt eksempel:

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

Jeg vil også anbefale at bruge getters/settere, i stedet for direkte medlemsadgang, men dette var kun for nemheds skyld... Efterhånden som du udvikler flere modeller/mappere, vil du finde fælles kortlægningsfunktionalitet (gemme, indlæse, slette, finde) og du kan omstrukturere din kode til at indeholde den fælles logik, så du ikke har en masse copypasta.




  1. Google Chart Api gør brug af datetime-værdi

  2. mysql_num_rows() forventer, at parameter 1 er ressource, boolesk givet ind

  3. Indsæt aktuel dato/tid ved hjælp af now() i et felt ved hjælp af MySQL/PHP

  4. Hvordan kan jeg låse en tabel ved læsning ved hjælp af Entity Framework?