PHP MVC:模型之间的关系(人:联系人,星座运势,...)

I'm learning PHP, MVC and "Simple MVC Framework for PHP" now.

I have this model called 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
        }
    }
}

Contact:

<?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, ...
}

Every person has other models like Contact (1:1), Living(1:n), Horoscope (1:1), SocialMedia (1:1).

How do I design the relationship between them? Should I register these models in Person self (constructor)?

This is a pretty open ended question since there are many ways of doing this. The way I would approach this is to have getters that are responsible for initializing models if and when they are needed.

For example, your class Person could have methods contact(), living(), and so on. These methods would look something like this:

public function contact()
{
  if($this->_contact_model == null) {
    $this->_contact_model == new Contact();
    // ... 
  }

  return $this->_contact_model;
}

Then accessing contact methods from $person Person object should be as simple as:

 $person->contact()->getSomeContactProperty();