0
私はPHPでOOPをかなり新しくしています。私は親クラスのループによって生成された配列内の項目の値を更新しようとしています。私のコードでは、DatabaseObjectクラスは、すべてのテーブルフィールド名と値のペアを持つ属性配列を作成します。配列の内容は、データベースに書き込むSQLクエリを作成するために使用されます。私が解決しようとしている問題は、属性['hashed_password']アイテムを子Userクラスの暗号化されたパスワードで更新する必要があることです。どのようにして配列アイテムを更新して、ハッシュされたパスワードがフォーム提出の代わりにデータベースに送信されるようにするのか、私はよく分かりません。子クラスの親クラスから配列アイテムを更新する
class DatabaseObject {
public function create(){
global $db;
static::$attributes = [];
foreach (static::$db_fields as $field) {
if(property_exists($this, $field)){
$attributes[$field] = $this->$field;
}
}
$sql = "INSERT INTO " . static::$table_name . " (";
$sql .= join(", ", array_keys($attributes));
$sql .= ") VALUES ('";
$sql .= join("', '", array_values($attributes));
$sql .= "')";
$result = mysqli_query($db, $sql)
}
}
class User extends DatabaseObject {
protected static $table_name="users";
protected static $db_fields = array("user_id", "username", "hashed_password", "email");
public $user_id;
public $username;
public $hashed_password;
public $email;
self::attributes['hashed_password'] = password_hash($this->attributes['hashed_password'], PASSWORD_BCRYPT);
}
助けてください。
setPass()メソッドについてはどうですか? – FatalError