A-A+

PHP面向对象MVC学习笔记

2014年07月15日 PHP技术文章 评论 7 条 阅读 212 views 次

关于MVC的架构,不用说,在网页应用程序的开发中是至关重要的,MVC就是三层架构了,简单的理解下就是美工与程序员的分离,整个应用程序的底层架构是由程序员来完成的,这在页面上是看不到底层代码的,而美工的任务就是要美化前端所呈现给客户的页面,而在整个页面的美化完善中,是不影响后台编程代码的,这差不多就是MVC的基本含义了,更深入的理解可以参考百度百科之类的。

而关于PHP的面向对象,就是将某个频繁使用的功能进行了封装,比如前台的翻页,读取数据,显示产品等等,在前台调用时,只需要实例化对象即可,而完全不用去管封装里面的代码是怎样的,美工只要做好前台页面就可以了。

PHP面向对象MVC的学习是建立在PHP面向过程基础之上的,下面是一个简单的MVC实例笔记的DOC文件,这份文件不是最基础的,但感觉还算比较使用,如果是基础的学习者就不用下载了,主要学习它的语句和它的原理,没有深入的剖析,有需要的可以进行看一下.

MVC实例笔记

1、DataAccess.class.php——数据库类。
2、Lib / Model / Model.class.php——M基类。执行sql语句,得到记录集。数据的增加、
删除、修改等等。
3、lib/View/smartyClass/Smarty.class.php——smarty基类。
4、lib/View/View.class.php——引用smarty基类,用来显示一些数据
5、lib/adminModel.php——继承了model基类,对数据库进行增加,删除,修改等。
6、lib/indexView.php——通过PHP代码读取数据库中的内容。显示给smarty模板,达到
显示数据的目的。
7、Common.ini.php——网站的配置文件

【步骤】:

一、在index.htm文件里写一个表单,用来输入数据。代码如下:

<form action="" name="form1" method="post">
名字:<input type="text" name="name">
内容:<textarea rows="5" cols="5"></textarea><br>
<input type="submit" name="content" value="提交">
</form>

二、上面这个表单的数据要提交到哪个页面呢?所以,要在form表单中的action后面输入URL地址:index.php?action=mod

【说明】:

因为我们要将表单中的数据提交给PHP函数进行处理后,再插入到数据库里,所以要将表单中的数据提交到首页中的函数进行处理。使其action的值等于mod,这样一来,网页就会跳转到adminModel.php文件。即:首页的action = mod 的时候,网页会跳转到adminModel.php 因为adminModel.php文件继承了mode类,所以也是对数据进行增加、删除、修改。当网页跳转到adminModel.php页面后,会执行下面的代码:

$do=$_GET['do'];
switch ($do){
case 'add':
$this->add();
break;

在这个地方,我们设置了do的值等于add。

所以接下来,我们要定义一个函数add,并在这个函数中书写向数据库中插入信息的语句。步骤如下:

(1)书写函数的结构:
function add(){
}

(2)在此函数中先要活的表单输入框中的值:

$name = $_POST['name'];

$content = $_POST['content'];

(3)获得表单输入框中的值后,接下来就要将获得的值插入数据库的对应字段。
$sql = "insert into book(name,content)values('$name','$content')";

(4)接下来要执行sql语句:

$this->query($sql);

因为此页面继承了mod类,所以不需要这样写:$this->mod->query($sql);

(5)插入成功后,要使页面重新跳转到首页:
echo "<script>alert('插入成功');location.href='index.php';</script>";

三、将数据库中的信息查找出来,然后显示到网页中。

1、打开indexView.php文件。

2、确定将数据库中信息显示到哪个网页(在哪里显示?),此例显示到输入表单的上面。
所以,要在表单的上面书写显示的表格。

3、在indexView.php文件中的function index(){ }函数模块中,输入如下代码:

(1)将数据库中的信息查询出来:$sql = "select * from book";

(2)执行sql语句:$this->model->query($sql);

(3)调用View.class.php类中的分页函数page():

【参数说明】:(查询的结果,每页显示多少条信息,主页的URL地址)

$this->page($sql, 2, "index.php?");

这样一来,查询的信息以数组的形式保存到了smarty模板中的info数组中。

4、将保存到smarty模板中的信息显示到html页面中。

{{section name=sec loop=$info}}姓名:{{$info[sec].name}}|内容:{{$info[sec].content}}<br />{{/section}}

【代码说明】:section是smarty模板中的循环函数;name=sec此循环的名称;

loop=$info表示此循环的内容,即循环什么内容;$info[sec].name表示内容显示的格式:欲循环的内容变量名[循环的名称].数据库中对应字段名

5、为了防止循环读入进来的数据库中的信息过多,所以要导入分页页面:{{include file=page.htm}}

【补充说明】:

如果不需要分页显示,那么就要将第3步中的(2)(3)两句函数换成下面的一句:

$this->golist($sql, 'info');

调用golist()函数。第一个参数:查询的标识符,第二个参数info:smarty模板中的数组名,smarty数据源的名称。整句意思是:将查询的信息保存到smarty模板中的名为info的数组中。另外,因为不分页,所以第5步中导入“分页页面”的函数要删除。

四、删除数据库中的信息

1、打开index.htm文件,在对应的获取数据表中信息的循环语句的后面插入“删除”超链接。

【思路】:我们点击“删除”超链接后,使页面链接到index.php文件,并通过设置index.php文件中的action的值等于mod,使页面接着跳转到adminModel.php,然后在adminModel.php页面要设置do的值等于del(随便取个名),因为此页面中没有del的这个函数,所以要重新定义此函数(即删除函数)。有了删除函数,还得指定删除哪一条信息,即,点第几条信息后面的“删除”,就删除哪条,所以就要通过ID来传值,思路是:在“删除”,这个超链接里面设置href的URL地址的后面设置id的值,然后在adminModel.php页面里的del()函数里通过$_GET的方式获取欲删除的信息的ID,这样就可以在del函数里接着删除语句了。

完整的“删除”超链接的代码如下:

<a href="index.php?action=mod&do=del&id={{$info[sec].id}}">删除</a>
adminModel.php页面中del()函数中的代码如下:
$id = $_GET[id];
$sql = "delete from book where id='$id'";
$this->query($sql);
echo "<script>alert('成功删除');location.href='index.php';</script>";

 五、修改数据库中的信息

1、新建两个htm文件:

main.htm——输入信息到数据库的页面(输入和显示信息的页面)

up.htm——修改数据的页面(一个表单)

2、将index.htm文件改成跳转的页面,代码如下:

{{if $action==up}} <!-- 如果action等于up的时候 -->
{{include file=up.htm}} <!-- 引入up.htm文件 -->
{{elseif $action==upa}} <!-- 否则如果,action等于upa -->
{{include file=upa.htm}}
{{else}} <!-- 否则 -->
{{include file=main.htm}}
{{/if}}

3、将index.htm页面的代码剪切到main.htm页面。并在页面上加入一个“修改”超链接。

{{section name=sec loop=$info}}
用户名:{{$info[sec].name}}<br>
留言是:{{$info[sec].content}}
<a href="index.php?action=mod&do=del&id={{$info[sec].id}}">删除</a>|
<a href="index.php?do=up&id={{$info[sec].id}}">修改</a>
<br>
{{/section}}
<br>
{{include file=page.htm}} <!-- 引入分页导航 -->

<hr />
<form action="index.php?action=mod&do=add" method="post" name="myform">
用户:<input type="text" name="name" id="name" /><br>
内容:<textarea name="content" row="5" id="content"></textarea><br/>
<input type="submit" name="submit" value="发布留言"/>
</from>

【说明】:原理是这样的:当我们点击“修改”超链接后,所有的文件都必须从index.php文件中跳转(单一入口),然后再分为两个主页面——即:indexView.php文件(显示)和adminModel.php文件(修改),我们就要根据不同的作用选择不同的文件。因为我们是要修改数据库里的信息,所以,我们的代码应该是写到indexView.php文件中。为此,我们要在此“修改”超链接中设置好URL,使action等于空值,所以,当网页跳转到index.php文件后,检测到action为空值,就会跳转indexView.php文件。所以我们在上面的URL中设置了do=up,这个设置的意思是:当点击“修改”超链接后,就会执行indexView.php页面的up()函数。而在这个up()函数中第一个就书写下面的代码,意为:把up赋值给action,代码为:

$this->tpl->assign("action","up"); //赋值:将up的值赋给action。

4、在up.htm页面输入以下代码:

<form name="form1" method="post" action="index.php?action=mod&do=up&id={{$id}}">
标题:<input type="text" name="name" id="name" value="{{$name}}"><br>
内容:<textarea name="content" rows="4" id="content">{{$content}}</textarea><br>
<input type="submit" name="submit" value="提交">
</form>

7 条留言  访客:7 条  博主:0 条

  1. 别致淘博客

    我适中没有习惯看这些

  2. 南京艺考培训学校

    过来飘过,看到代码,发嘛头皮,欢迎互访

  3. 飞蚂蚁模板网

    博主很强大 虽然看不懂写的内容

  4. 训狗教程博客

    要看懂这一串串代码,还得练几年啊,博主真是个技术帝。支持下。

  5. 变频器

    来学习学习

  6. 360社团

    最近有忙了一阵子,博客都没法更新,有时间了,就狠狠的更新一番,呵呵

  7. 攀引者-吸引力法则实践者

    技术文章,一看代码我就眼大。

给我留言