PHP MVC:模型之间的关系(人:联系人,星座,...)
PHP MVC: Relationship between models (Person: Contact, Horoscope, ...)
我正在学习 PHP、MVC 和 "Simple MVC Framework for PHP"。
我有一个名为 Person 的模型:
<?php
namespace Models;
use Core\Model;
use Helpers\Database;
use Core\Error;
class Person extends Model {
protected $db;
protected $tname = 'person';
function __construct() {
parent::__construct ();
$this->db = Database::get ();
}
public function getPersons() {
return $this->db->select ( "SELECT firstname, lastname FROM " . PREFIX . $this->tname );
}
public function insertPerson($data) {
if (is_array ( $data )) {
$this->db->insert ( PREFIX . $this->tname, $data );
return $this->db->lastInsertId ( 'personID' );
} else {
// Error::display ( '$data is not an array.' ); // TODO: not in model
}
}
}
联系人:
<?php
namespace Models;
use Core\Model;
use Helpers\Database;
class Contact extends Model {
protected $db;
function __construct() {
parent::__construct ();
$this->db = Database::get ();
}
// handle telephone, mobile, fax, emails, ...
}
每个人都有其他模型,如联系人 (1:1)、生活 (1:n)、星座 (1:1)、社交媒体 (1:1)。
如何设计它们之间的关系?我应该在 Person self(构造函数)中注册这些模型吗?
这是一个非常开放的问题,因为有很多方法可以做到这一点。我处理这个问题的方法是让吸气剂在需要时负责初始化模型。
例如,您的 class 人可能有方法 contact()、living() 等。这些方法看起来像这样:
public function contact()
{
if($this->_contact_model == null) {
$this->_contact_model == new Contact();
// ...
}
return $this->_contact_model;
}
然后从 $person Person 对象访问联系人方法应该像这样简单:
$person->contact()->getSomeContactProperty();
我正在学习 PHP、MVC 和 "Simple MVC Framework for PHP"。
我有一个名为 Person 的模型:
<?php
namespace Models;
use Core\Model;
use Helpers\Database;
use Core\Error;
class Person extends Model {
protected $db;
protected $tname = 'person';
function __construct() {
parent::__construct ();
$this->db = Database::get ();
}
public function getPersons() {
return $this->db->select ( "SELECT firstname, lastname FROM " . PREFIX . $this->tname );
}
public function insertPerson($data) {
if (is_array ( $data )) {
$this->db->insert ( PREFIX . $this->tname, $data );
return $this->db->lastInsertId ( 'personID' );
} else {
// Error::display ( '$data is not an array.' ); // TODO: not in model
}
}
}
联系人:
<?php
namespace Models;
use Core\Model;
use Helpers\Database;
class Contact extends Model {
protected $db;
function __construct() {
parent::__construct ();
$this->db = Database::get ();
}
// handle telephone, mobile, fax, emails, ...
}
每个人都有其他模型,如联系人 (1:1)、生活 (1:n)、星座 (1:1)、社交媒体 (1:1)。
如何设计它们之间的关系?我应该在 Person self(构造函数)中注册这些模型吗?
这是一个非常开放的问题,因为有很多方法可以做到这一点。我处理这个问题的方法是让吸气剂在需要时负责初始化模型。
例如,您的 class 人可能有方法 contact()、living() 等。这些方法看起来像这样:
public function contact()
{
if($this->_contact_model == null) {
$this->_contact_model == new Contact();
// ...
}
return $this->_contact_model;
}
然后从 $person Person 对象访问联系人方法应该像这样简单:
$person->contact()->getSomeContactProperty();