MVC是如何实现的?

留恋风(2581047041@qq.com)

返回首页

1.系统入口index.php

//定义项目模板文件目录-根目录template
define('HOME_VIEW',APP_PATH.'static');


//定义项目控制器文件目录
define('HOME_CONTROLLER','c');

//定义项目模型文件目录
define('HOME_MODEL','m');

定义了模板文件夹static,控制器文件夹c,数据模型文件夹m,因此,我们创建这三个文件夹:

static存放视图层(View),c存放业务层(Controller),m存放模型层(Model)

2.创建TestModel.php模型层,继承系统模型类,并写相关数据操作:

namespace Home\m;
use FrPHP\lib\Model;

class TestModel extends Model
{
	//单例模式,这个部分需要加进来
	private static $instance=false;
	public static function getInstance($table=null){
		if(self::$instance===false){
			self::$instance = new self($table);
		}
		if($table!=null){
			self::$table = $table;
		}
		
		self::$table = DB_PREFIX.strtolower(self::$table);
		
		return self::$instance;
	}
	//检查字段
	public function check($data){

		if($data['name']=='' || strlen($data['name'])>60){
			exit('姓名不能为空,且不能超过20个字!');
		}
		if($data['age']=='' || !is_numeric($data['age']) || $data['age']>=150){
			exit('年龄格式不正确!');
		}

	}
	//新增
	public function create($data){
		//检查数据合法性
		$this->check($data);
		$res = $this->add($data);
		if(!$res){
			Error('新增失败!');
		}else{
			return $res;
		}
		

	} 
	
}

3.创建业务文件TestController.php,写业务逻辑:

namespace Home\c;
use FrPHP\lib\Controller;

class TestController extends Controller
{
	//创建表单页面
	public function index(){
		$this->display('test/index');
	}
	//接收提交的数据
	public function go(){
		$data = $this->frparam();
		M('test')->create($data);
		Success('新增成功!',U('lists'));
	}
	//列表页
	public function lists(){

		$this->display('test/list');
	}
}

在static/pc/下面创建文件夹test,里面创建2个HTML文件,分别为index.html(表单页),list.html(列表页)

4.附数据表结构如下:

CREATE TABLE `jz_test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) DEFAULT NULL,
  `age` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

在数据库创建表frphp,执行如上sql即可

5.配置数据库连接,Conf/config.php

 'db' => 
  array (
    'host' => '127.0.0.1',//本地数据库连接
    'dbname' => 'frphp',//数据库名称
    'username' => 'root',//数据库登录账户名
    'password' => 'root',//数据库登录密码
    'prefix' => 'jz_',//表前缀
    'port' => '3306',//端口
    'type' => 'mysql',//数据库类型
    'dbpath' => '',
  ),

查看案例

返回首页