Я некоторое время работаю над собственной библиотекой / структурой для обучения.MVC - одна из тех вещей, которые мне потребовались некоторое время, чтобы по-настоящему понять, но я наконец-то понял «Get it».
Ниже приведен пример кода для базовой установки MVC в PHP.Я думаю, что я нахожусь в правильном направлении до сих пор, где мне нужно немного помочь внизу в «Пример контроллера» внизу, вы увидите, где я могу создать представление, мне просто нужно выяснить, как лучше всего получить мойданные из файла модели в этот класс контроллера.Пожалуйста, помогите с примером кода, если вы можете, надеюсь, я понимаю.
Также я приветствую любые комментарии / предложения по любому коду
Абстрактный класс контроллера ...
/**
* MVC Example Project
*/
/**
* Extend this class with your Controllers
* Reference to the model wrapper / loader functions via $this->model
* Reference to the view functions via $this->view
*/
abstract class Core_Controller {
protected $view;
protected $model;
function __construct($dependencyContainer){
$this->view = new Core_View();
//$this->view = $dependencyContainer->get(view);
}
}
Абстрактный класс модели ...
/**
* Extend this class with your models and reference to the database object via $this->$db
*/
abstract class Core_Model {
protected $db;
protected $session;
function __construct($dependencyContainer) {
$this->db = $dependencyContainer->get(database);
$this->session = $dependencyContainer->get(session);
}
}
Просмотр класса, может сделать его также абстрактным ...
class Core_View {
protected $data;
# Load a view file (views/$view.php);
# $param data this gets extracted and be thus be used inside the view
# When loading another view from inside the view file the data is 'cached' so you
# don't have to pass them again
public function load($view,$data = null) {
if($data) {
$this->data = $data;
extract($data);
} elseif($this->data != null) {
extract($this->data);
}
require(APP_PATH . "Views/$view.php");
}
public function set($data = null) {
if($data) {
$this->data = $data;
extract($data);
} elseif($this->data != null) {
extract($this->data);
}
}
}
Пример его объединения ...
/**
* Example Controller
*/
class User_Controller extends Core_Controller {
public function profile()
{
$profileData = array();
$profileData = //GET from Model
$this->view->load('userProfile', $profileData);
}
}
?>