Kendi MVC Framework'ümüzde Tüm Modellerin Ebeveynini Uygulama
Tüm modellerin ebeveyn sınıfını uygulayalım:
<?php
namespace Core;
class Model
{
private $link;
public function __construct()
{
$this->link = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
mysqli_query($this->link, "SET NAMES 'utf8'");
}
protected function findOne($query)
{
// burada bir kod olacak
}
protected function findMany($query)
{
// burada bir kod olacak
}
}
?>
Gördüğünüz gibi, sınıfın yapıcı metodunda veritabanına bağlantı sağlıyoruz. Ancak bir sorun var: oluşturulan her model (eğer bir kontrolör işlemi içinde birden fazla model olursa) kendi veritabanı bağlantısını yapacak, bu da optimal değil.
Öyle yapalım ki, veritabanı bağlantısı sadece ilk oluşturulan model için yapılsın, diğer modeller ise zaten oluşturulmuş bağlantıyı kullansın. Bunun için link özelliğini statik yapalım:
<?php
namespace Core;
class Model
{
private static $link;
public function __construct()
{
if (!self::$link) { // eğer özellik ayarlanmamışsa, bağlanıyoruz
self::$link = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
mysqli_query(self::$link, "SET NAMES 'utf8'");
}
}
protected function findOne($query)
{
}
protected function findMany($query)
{
}
}
?>
Model sınıfının verilen kodunu kopyalayın ve /core/Model.php dosyasına yerleştirin.
Bu sınıfta findOne metodunu uygulayın. Çalışmasını kontrol edin.
Bu sınıfta findMany metodunu uygulayın. Çalışmasını kontrol edin.