我的应用程序有这个文件夹结构:
- 申请
- 的文库
- Model.php
- Controller.php这样
- View.php
- 的模型
- Settings_Model.php
- Home_Model.php
- 的控制器
- 的settings.php
- home.php
- 的视图
- 的 设置
- 的index.php
- 的 家
- 的index.php
- 的index.php
- 的.htaccess
库/ Model.php
class Database extends PDO{
public function __construct($DB_TYPE, $DB_HOST, $DB_NAME, $DB_USER, $DB_PASS){
parent::__construct($DB_TYPE.':host='.$DB_HOST.';dbname='.$DB_NAME, $DB_USER, $DB_PASS);
}
}
库/控制器
class Controller{
function __construct(){
$this->view = new View();
}
public function loadModel($name){
$path = 'application/models/' . $name . '_model.php';
if(file_exists($path)){
require 'application/models/' . $name . '_model.php';
$modelName = $name . '_Model';
$this->model = new $modelName();
}
}
}
库/视图
class View{
function __construct(){
$this->view = new View();
}
public function render($name){
require 'application/views/' . $name . '.php';
}
}
在模型文件夹中,我创建了名为 Settings_Model.php 的模型: models / Settings_Model.php
class Settings_Model extends Model{
public function __construct(){parent::__construct();}
function settings(){
$stmt = $this->db->prepare("SELECT * FROM `mv_settings`");
$stmt->execute();
$stmt->setFetchMode(PDO::FETCH_OBJ);
return $stmt->fetch();
}
}
在控制器文件夹中,我将此控制器称为 settings.php : controllers / settings.php
class Settings extends Controller {
function __construct(){parent::__construct();}
public function index(){
$this->view->settings = $this->model->settings();
$this->view->render('settings/index');
}
}
在观看文件夹中,我创建了一个名为设置的文件夹,在此文件夹中我创建了一个 index.php 文件: 设置/索引
这是如何调用settings / index中的settings方法:
$this->settings->fieldName;
现在,当我们转到主页视图时,我执行了相同的操作: - 创建一个Home_Model类,在这个模型中我创建了相同的设置方法:
class Home_Model extends Model{
public function __construct(){parent::__construct();}
function settings(){
$stmt = $this->db->prepare("SELECT * FROM `mv_settings`");
$stmt->execute();
$stmt->setFetchMode(PDO::FETCH_OBJ);
return $stmt->fetch();
}
}
然后转到controllers文件夹并创建主页控制器:
class Home extends Controller {
function __construct(){parent::__construct();}
public function index(){
$this->view->settings = $this->model->settings();
$this->view->render('home/index');
}
}
然后调用home / index中的settings方法:
$this->settings->fieldName;
我想问的是,每次我们需要在另一个视图文件中调用该方法时,如何避免不要一次又一次地创建相同的方法设置
NB :我还是新手。
答案 0 :(得分:0)
在你的控制器中试试这个
class Settings extends Controller {
function __construct(){
parent::__construct();
$this->load->model('Settings_Model');
}
public function index(){
$this->view->settings = $this->Settings_Model->settings();
$this->view->render('settings/index');
}
}
答案 1 :(得分:0)
如果你想在所有模型中访问相同的settings()函数,那么你应该在Base model.php中创建它。
class Model{
function settings(){
$stmt = $this->db->prepare("SELECT * FROM `mv_settings`");
$stmt->execute();
$stmt->setFetchMode(PDO::FETCH_OBJ);
return $stmt->fetch();
}
}
然后你的设置模型必须像
class Settings_Model extends Model{
public function __construct(){parent::__construct();}
}
和你的Home_model
class Home_Model extends Model{
public function __construct(){parent::__construct();}
}
现在您可以在扩展模型的所有模型中访问settings(),无需一次又一次地创建它。