Բոլոր մոդելների ծնողի իրականացումը
Եկեք իրականացնենք բոլոր մոդելների ծնողական դասը.
<?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)
{
// այստեղ կլինի ինչ-որ կոդ
}
protected function findMany($query)
{
// այստեղ կլինի ինչ-որ կոդ
}
}
?>
Ինչպես տեսնում եք, դասի կոնստրուկտորում մենք իրականացնում ենք միացում տվյալների բազային։ Սակայն կա խնդիր. յուրաքանչյուր ստեղծված մոդել (եթե կոնտրոլերի մեկ գործողության ներսում կլինեն մի քանի մոդելներ) կկատարի իր միացումը տվյալների բազային, իսկ դա օպտիմալ չէ։
Եկեք անենք այնպես, որ միացում
տվյալների բազային ստեղծվի միայն առաջին ստեղծված
մոդելի համար, իսկ մնացած մոդելներն օգտագործեն արդեն
ստեղծված միացումը։ Դրա համար link հատկությունը
դարձնենք ստատիկ.
<?php
namespace Core;
class Model
{
private static $link;
public function __construct()
{
if (!self::$link) { // եթե հատկությունը չի սահմանված, ապա միանում ենք
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 դասի կոդը
և տեղադրեք այն /core/Model.php ֆայլում։
Իրականացրեք findOne մեթոդը այս դասում։
Ստուգեք դրա աշխատանքը։
Իրականացրեք findMany մեթոդը այս դասում։
Ստուգեք դրա աշխատանքը։