Mysql
 sql >> Baza danych >  >> RDS >> Mysql

OOP PHP PDO Mój pierwszy projekt, czy robię dobrze?

Zacząłbym od modelu/mappera. Jest to bardzo prosty sposób na uzyskanie zwykłych obiektów i możliwość utrwalenia ich w bazie danych. Pozwala również uniknąć mieszania wywołań bazy danych i kodu (logika trwałości) z funkcjonalnością (logiką aplikacji lub biznesu). Prosty przykład:

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

Sugerowałbym również używanie getterów/setterów zamiast bezpośredniego dostępu do członka, ale to tylko dla uproszczenia kodu... W miarę rozwoju kolejnych modeli/maperów znajdziesz wspólne funkcje mapowania (zapisywanie, ładowanie, usuwanie, wyszukiwanie) i może zrefaktoryzować Twój kod, aby zawierał wspólną logikę, dzięki czemu nie masz mnóstwa copypasta.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Format rekordu obecności na zajęciach Zapytanie SQL

  2. Pobierz dane z dwóch tabel, aby utworzyć kalendarz wydarzeń

  3. Tabela zamknięć MySql nie obsługuje zduplikowanych podkategorii dla różnych rodziców

  4. Zainstaluj MySQL na Ubuntu bez pytania o hasło

  5. BŁĄD 1093 (HY000):Nie można określić tabeli docelowej „a” do aktualizacji w klauzuli FROM