热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

从零开始之ecshop基础篇(17)_PHP教程

从零开始之ecshop基础篇(17)。目标:基于自定义的mvc框架开发的案例(项目)典型的业务逻辑:电子商务:商城(京东),B2C,C2C(淘宝),团购,秒杀,代购内容管理:新
目标:基于自定义的mvc框架开发的案例(项目)

典型的业务逻辑: 电子商务:商城(京东),B2C,C2C(淘宝),团购,秒杀,代购

内容管理:新浪门户类,优酷视频管理,博客文章管理,微博

论坛:

我们的需求,商品管理案例!参考ecshop应该出现的商品管理的基本功能实现。

ecshop,使用率非常高,电子商务平台(网上商城系统)。

上传拷贝php源代码 创建数据 基本配置

下载ecshop的源代码,解压,将upload目录拷贝(上传)到web目录:建议改成ecshop的名字

使用浏览器,访问到ecshop目录中的index.php即可。自动跳转到安装界面(如果需要重新安装,也可以请求到该地址)

检查环境,典型的需要:mysql扩展,gd扩展(图片处理扩展)

配置信息

数据库服务器部分:

管理员信息:

安装测试数据:

等待安装完毕:

Tips:建议选择PHP5.3X版本

数据结构的设计

编码的设计

典型的编码,分成两大方向:二次开发,基于框架开发

二次开发:在已有的产品(业务逻辑都已经实现)上做修改,升级的开发方式。

优点:速度快,通用业务逻辑已经被实现。

缺点:定制型差。

典型的产品:

电子商务:ecshop,ecmall,shopex,zen-cart,oscommerce ,麦进斗

内容管理:dedecms,帝国cms,phpcms,drupal,wordpress

论坛:phpwind,discuz

框架开发:

框架,没有实现业务逻辑,只实现了底层代码。

优点:不用写重复的底层功能代码,直接用即可,定制性强。

缺点:周期较长。

典型的框架:ThinkPHP,Yii,Ci,Zend-framework,symphony

PHP代码与HTML代码 出现在同一文件中。

典型的是:

上面是PHP先实现所有的业务逻辑,下边再是HTML决定显示样式。

或者直接利用PHP echo ,输出需要的HTML代码。

2
3
4
5
6
7
8
9

' ' '' ' '}
'

将负责数据处理,业务逻辑处理的PHP代码,与负责显示效果处理的HTML(CSS,JS)等分开来进行管理。

典型的实现:将负责显示的HTML相关部分,拆分到独立的HTML中,在PHP处理完业务逻辑后,再将HTML代码加载到该文件中。

简单的说就是把原来混编的代码分开到2个页面。这2个页面要组合起来才能实现和原来一个混编文件一样的效果。

比如:match_list.html(展示)match_list.php(逻辑) require './match_list.html';

template:参见match_list.html

使用html相关代码负责显示结构,使用动态代码php实现数据的展示,该类型的文件,在项目中,称之为模板文件,template.

要求:浏览器用户请求,必须请求负责逻辑功能的PHP文件才可以。

如何限制浏览器用户不能请求到html模板文件?

典型的实现方式2种:

2

2
3
4
5


2

Deny from All

2
3
4
5
6
7
8
9
10


//

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20


} $rows = $db->fetchAll($sql);
}

2
3
4
5
6
7
8
9
10
11
12
13
14





"

"





2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

/**
*
*/
*
*
* @return array
*/
fetchAll($sql);
}
}

2
3
4
5
6
7
8
9
10
11
12
13

//
//$model_match = new MatchModel;
$rows = $model_match->getList();

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16





"

"


"



2
3
4
5
6
7
8
9
10
11
12

$model_match = new MatchModel;
$model_match->delById(

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

* *
* @param $match_id
*
* @return bool
*/

query($sql);
}

2
3
4
5
6
7

* */
}

2
3
4
5
6
7
8
9

* */
}

2
3
4
5
6
7
8
9

}
}

2
3
4
5
6
7
8
9
10
11
12
13
14

initDB();
}
db = new MySQLDB( }
}

db即可操作到当前mysqlDB类对象。

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

* *
* @param $match_id
*
* @return bool
*/

db->query($sql);db

2
3
4
5
6
7
8
9
10
11



"

"





Controller,控制器

2
3
4
5
6
7
8
9

//

2

2
3
4
5

'} '}

在相应的部分执行正确的控制器代码即可:

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

';
$model_match = new MatchModel;
$rows = $model_match->getList();
}
';
$model_match = new MatchModel;
$model_match->delById(
}

2
3
4
5
6

"

//

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

* */ * */ }

*
*/ }
}

2
3
4
5
6
7
8
9
10
11

//$action = $a.//$action();

2
3
4
5
6


}
}

2
3
4
5
6
7
8
9
10
11
12

$model_student = new StudentModel;
getList();
}
}

2
3
4
5
6
7

db->fetchAll( }
}

2
3
4
5
6






2
3
4
5
6

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

////////$action_name();

测试:localhost/six/index.php?c=Student&a=list localhost/six/index.php?c=Match&a=list

2
3

"

header(

强调:

有了单一入口,就要求,用户的所有的请求都要从单一入口文件请求到。

目录分成2个目录

体现框架代码和业务逻辑代码的区别

将基础模型,mysqlDB类定义文件放在框架代码:

将业务逻辑相应的控制器,模型,视图文件分别放在application目录中

入口文件,通常放置在站点根目录:

修改项目中使用的路径

2
3
4
5
6
7
8
9

/index.php 入口文件
/application 应用程序目录
/model 模型类目录
/view 视图类目录
/controller 控制器类目录
/framework 框架代码目录
/Model. /MySQLDB.class.php mysql数据库的操作类

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/626634.htmlTechArticle目标:基于自定义的mvc框架开发的案例(项目) 典型的业务逻辑:电子商务:商城(京东),B2C,C2C(淘宝),团购,秒杀,代购 内容管理:新...


推荐阅读
  • 本文总结了软件工程课程M1和M2阶段的个人收获,包括项目开发中的技术学习、团队协作及管理经验。同时,对《构建之法》一书中的相关问题进行了理解和分析。 ... [详细]
  • Django与Python及其他Web框架的对比
    本文详细介绍了Django与其他Python Web框架(如Flask和Tornado)的区别,并探讨了Django的基本使用方法及与其他语言(如PHP)的比较。 ... [详细]
  • 本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ... [详细]
  • 本文介绍了多种开源数据库及其核心数据结构和算法,包括MySQL的B+树、MVCC和WAL,MongoDB的tokuDB和cola,boltDB的追加仅树和mmap,levelDB的LSM树,以及内存缓存中的一致性哈希。 ... [详细]
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • ECharts 官方提供了丰富的图表示例,但实际项目中往往需要从后端动态获取数据。本文将详细介绍如何从后端获取数据并将其转换为 ECharts 所需的 JSON 格式,以实现动态饼图的展示。 ... [详细]
  • 本文将带你快速了解 SpringMVC 框架的基本使用方法,通过实现一个简单的 Controller 并在浏览器中访问,展示 SpringMVC 的强大与简便。 ... [详细]
  • Ext JS MVC系列一:环境搭建与框架概览
    本文主要介绍了如何在项目中使用Ext JS 4作为前端框架,并详细讲解了Ext JS 4的MVC开发模式。文章将从项目目录结构、相关CSS和JS文件的引用以及MVC框架的整体认识三个方面进行总结。 ... [详细]
  • 本文详细介绍了数据库并发控制的基本概念、重要性和具体实现方法。并发控制是确保多个事务在同时操作数据库时保持数据一致性的关键机制。文章涵盖了锁机制、多版本并发控制(MVCC)、乐观并发控制和悲观并发控制等内容。 ... [详细]
  • 本文总结了一些开发中常见的问题及其解决方案,包括特性过滤器的使用、NuGet程序集版本冲突、线程存储、溢出检查、ThreadPool的最大线程数设置、Redis使用中的问题以及Task.Result和Task.GetAwaiter().GetResult()的区别。 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • 在什么情况下MySQL的可重复读隔离级别会导致幻读现象? ... [详细]
  • 系统数据实体验证异常:多个实体验证失败的错误处理与分析
    在使用MVC和EF框架进行数据保存时,遇到了 `System.Data.Entity.Validation.DbEntityValidationException` 错误,表明存在一个或多个实体验证失败的情况。本文详细分析了该错误的成因,并提出了有效的处理方法,包括检查实体属性的约束条件、调试日志的使用以及优化数据验证逻辑,以确保数据的一致性和完整性。 ... [详细]
  • 深入解析Struts、Spring与Hibernate三大框架的面试要点与技巧 ... [详细]
  • 阿里巴巴终面技术挑战:如何利用 UDP 实现 TCP 功能?
    在阿里巴巴的技术面试中,技术总监曾提出一道关于如何利用 UDP 实现 TCP 功能的问题。当时回答得不够理想,因此事后进行了详细总结。通过与总监的进一步交流,了解到这是一道常见的阿里面试题。面试官的主要目的是考察应聘者对 UDP 和 TCP 在原理上的差异的理解,以及如何通过 UDP 实现类似 TCP 的可靠传输机制。 ... [详细]
author-avatar
大爱小哇先森_991
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有