Jak mogę najkorzystniej połączyć się z bazą danych, spotkałem się z kilkoma podejściami
1. Dwie klasy mysql.php i articles.php jedna jest rozszerzeniem drugiej .
2. Wzorzec Singleton [nie wiem jak powinien wyglądać na moim przykładzie po dodaniu kilku klas]
3. Wzorzec Fabryka.
Walidacja powinna być wykonywana w klasie Articles, czy lepiej napisać uniwersalną umieszczoną w oddzielnym pliku?
class Articles {
private $db_host = 'localhost';
private $db_name = 'db';
private $username = 'root';
private $password = 'root';
public function __construct($section, $title, $content, $autor) {
$this->mysqli = new mysqli($this->db_host,$this->username,$this->password,$this->db_name);
$this->mysqli->query('SET NAMES utf8');
if ($link->connect_error)
{
echo("Connect failed: %s\n". $mysqli->connect_error); }
$this->date = date('Y-m-d H:i:s'); $this->autor = $autor;
$this->section = $section;
$this->title = $title;
}
public function displayArticles() {
$result = $this->mysqli->query("SELECT id, title, date, content, autor FROM $this->section ORDER BY date DESC");
while ($row = $result->fetch_object())
{
echo('<h1>'.$row->title.'</h1><p class="right">'.$row->date.'</p>'); echo('<p class="justify">'.$row->content.'</p>'); echo('<p>Add by: <b>'.$row->autor.'</b></p><p id="'.$row->article_id.'" class="comment" >Comments: ['); echo(']</p><p class="right">( Read more )</p>'); }
$result->close();
}
public function checkArticle() {
echo ('You did not provide all the necessary information.');
}
}
public function addArticles() {
$result = $this->mysqli->prepare("INSERT INTO $this->section (`title`, `content`, `date`, `autor`) VALUES (?, ?, ?, ?)");
$result->bind_param("ssss", $this->title, $this->content, $this->date, $this->autor);
$result->execute();
$result->close();
}
public function __destruct() {
$this->mysqli->close();
}
}