当前位置:首页 > 技术知识 > 正文内容

网站开发初级(4) 之 PHP MVC模式的简单实现

在之前的第一篇文章已介绍过了MVC模式,今期就简绍下一个简单的实现方式,因为不是专门讲解如何实现框架,因此,这里只是实现了MVC模式的一种简单方式,对初学者入门有很好的意义。

首页网站根目录创建如上图文件夹与index.php文件

index.php内容如下

<?php

error_reporting(E_ALL & ~E_NOTICE);

ini_set('display_errors', 'On');

//这里做个自动加载处理,简化一些类文件(如model)加载流程

function __autoload($class_name){

include_once('model/'.$class_name.'.model.php');

}

//取URL?号后面的字符串,然后转换成数组

$query_arr = explode('?', $_SERVER["REQUEST_URI"]);

parse_str($query_arr[1], $request_arr);

$controller_name = $request_arr['controller'] ? $request_arr['controller'] : 'default';

$action_name = $request_arr['action'] ? $request_arr['action'] : 'index';

require_once 'controller/abstract.php';

require_once 'controller/' . $controller_name . '.ctl.php';

$class = $controller_name . '_Ctl';

$ctl = new $class;

$ctl_action = 'action'.$action_name;

$ctl->{$ctl_action}();

$ctl->execute($controller_name,$action_name);

然后controller目录下创建下图文件


abstract.php内容如下:

<?php

abstract class Abstract_Ctl

{

protected $_vars;

function execute($controller_name, $action_name){

extract($this->_vars);

require_once 'view/' . $controller_name . '/'.$action_name.'.php';

}

function assign($var,$value){

$this->_vars[$var] = $value;

}

}

default.ctl.php内容如下:

<?php

class Default_Ctl extends Abstract_Ctl

{

function actionIndex(){

$model_comment = new Comment();

$str = '这是我的第一个MVC实例';

$this->assign('str',$str);

}

}

然后View目录下创建目录default:


打开default再创建index.php(这个为模板文件,与根目录index.php不同)

其内容如下:

<html>

<meta charset="utf-8"/>

<head>

<title>我是模板</title>

</head>

<body>

<?php echo $str?>

</body>

</html>

model层的使用留待后面展开时再讲吧,后面的“简单评论系统”开发会依据实际情况讲解model的应用。

还需要注意的是,这里讲的都是涉及一些原理性的东西,MVC的思路就是这样。

可能不同的人会有不同的实现方式,因此大家不应该被本小编写的代码固定思维,应该用自己的思路去思考。

因为头.条号不让放下.载.链.接,如果想获得源代码的朋友请留言评论。

相关文章

从零搭建网站?5个步骤详解网站建设全流程

在数字化时代,拥有一个专业网站已成为企业或个人品牌展示的核心竞争力。但对于新手而言,网站建设往往显得复杂难懂。本文梳理出5大关键步骤,手把手带你完成从策划到上线的全流程,省时省力不踩坑!一、前期准备:...

Objective-C :Category(category什么意思)

Category 引入在日常的开发中,可能会碰到这样的需求:给某个类增加方法。比如说,需要给NSString类增加一个打印的方法。当然,我们可以新建一个类比如TestString,并继承NSStrin...

单片机C语言编程,心得都在这里了

单片机写代码总踩坑,头文件被无视,老工程师的经验哪里来?前几天写8x8矩阵键盘的程序,搞了三天代码一直乱报错。后来发现自己连头文件是什么都不清楚,之前写的都是小程序,压根没碰过.h文件。看别人的程序都...

2018年度回顾:挖矿木马为什么会成为病毒木马黑产的中坚力量

一、概述根据腾讯御见威胁情报中心监测数据,2018年挖矿木马样本月产生数量在百万级别,且上半年呈现快速增长趋势,下半年上涨趋势有所减缓。由于挖矿的收益可以通过数字加密货币系统结算,使黑色产业变现链条十...

Android监听滚动视图(监听页面滚动)

Android UI Libs之Android-ObservableScrollView1. 说明Android-ObservableScrollView,顾名思义,Android上观察滚动的视图,可...

有了这份900多页的Android面试指南,你离大厂Offer还远吗?

前言对于大部分程序员来说,一线互联网是的工作经历是毕生的追求,实际上大厂对于学历的要求远远没有我们想象的那么高,近几年来,互联网公司更注重技术,所以提升自身技术水平才是斩获offer的制胜关键。一线互...