从零开始之ecshop基础篇(17)
目标:基于自定义的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种:
22
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数据库的操作类 |

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Java 프레임워크에 대한 상용 지원의 비용/성능 평가에는 다음 단계가 포함됩니다. 필요한 보증 수준과 SLA(서비스 수준 계약) 보장을 결정합니다. 연구지원팀의 경험과 전문성. 업그레이드, 문제 해결, 성능 최적화와 같은 추가 서비스를 고려하십시오. 위험 완화 및 효율성 향상을 기준으로 비즈니스 지원 비용을 평가합니다.

경량 PHP 프레임워크는 작은 크기와 낮은 리소스 소비를 통해 애플리케이션 성능을 향상시킵니다. 그 특징은 다음과 같습니다: 작은 크기, 빠른 시작, 낮은 메모리 사용량, 향상된 응답 속도 및 처리량, 리소스 소비 감소 실제 사례: SlimFramework는 500KB에 불과한 REST API를 생성하며 높은 응답성과 높은 처리량을 제공합니다.

Golang 프레임워크에서는 명확하고 포괄적인 문서를 작성하는 것이 중요합니다. 모범 사례에는 Google의 Go 코딩 스타일 가이드와 같은 확립된 문서 스타일을 따르는 것이 포함됩니다. 제목, 부제, 목록 등 명확한 조직 구조를 사용하고 탐색 기능을 제공하세요. 시작 안내서, API 참조 및 개념을 포함하여 포괄적이고 정확한 정보를 제공합니다. 코드 예제를 사용하여 개념과 사용법을 설명합니다. 문서를 계속 업데이트하고, 변경 사항을 추적하고, 새로운 기능을 문서화하세요. GitHub 문제 및 포럼과 같은 지원 및 커뮤니티 리소스를 제공합니다. API 문서와 같은 실용적인 예제를 만듭니다.

PHP 프레임워크의 학습 곡선은 언어 숙련도, 프레임워크 복잡성, 문서 품질 및 커뮤니티 지원에 따라 달라집니다. PHP 프레임워크의 학습 곡선은 Python 프레임워크에 비해 높고 Ruby 프레임워크에 비해 낮습니다. Java 프레임워크에 비해 PHP 프레임워크는 학습 곡선이 적당하지만 시작하는 데 걸리는 시간이 더 짧습니다.

애플리케이션 시나리오를 기반으로 최고의 Go 프레임워크를 선택하세요. 애플리케이션 유형, 언어 기능, 성능 요구 사항 및 생태계를 고려하세요. Common Go 프레임워크: Gin(웹 애플리케이션), Echo(웹 서비스), Fiber(높은 처리량), gorm(ORM), fasthttp(속도). 실제 사례: REST API(Fiber) 구축 및 데이터베이스(gorm)와 상호 작용. 프레임워크를 선택하세요. 주요 성능을 위해서는 fasthttp를 선택하고, 유연한 웹 애플리케이션을 위해서는 Gin/Echo를, 데이터베이스 상호작용을 위해서는 gorm을 선택하세요.

Go 프레임워크 개발에서 일반적인 과제와 해결 방법은 다음과 같습니다. 오류 처리: 관리에는 오류 패키지를 사용하고 중앙에서 오류를 처리하려면 미들웨어를 사용합니다. 인증 및 권한 부여: 타사 라이브러리를 통합하고 사용자 정의 미들웨어를 생성하여 자격 증명을 확인합니다. 동시 처리: 고루틴, 뮤텍스 및 채널을 사용하여 리소스 액세스를 제어합니다. 단위 테스트: 격리를 위해 getest 패키지, 모의 및 스텁을 사용하고, 충분성을 보장하기 위한 코드 적용 도구를 사용합니다. 배포 및 모니터링: Docker 컨테이너를 사용하여 배포를 패키징하고, 데이터 백업을 설정하고, 로깅 및 모니터링 도구를 사용하여 성능과 오류를 추적합니다.

Go 프레임워크를 선택할 때 핵심 성과 지표(KPI)에는 응답 시간, 처리량, 동시성 및 리소스 사용량이 포함됩니다. 프레임워크의 KPI를 벤치마킹하고 비교함으로써 개발자는 예상 로드, 성능이 중요한 섹션 및 리소스 제약 조건을 고려하여 애플리케이션 요구 사항에 따라 정보에 입각한 선택을 내릴 수 있습니다.

Golang 프레임워크를 사용할 때 다음 사항에 주의해야 합니다. 라우팅 오류를 방지하려면 경로가 요청과 일치하는지 확인하세요. 성능 저하를 방지하려면 미들웨어를 주의해서 사용하세요. 성능 문제나 충돌을 방지하려면 데이터베이스 연결을 적절하게 관리하세요. 오류 래퍼를 사용하여 오류를 처리하고 코드가 명확하고 디버그하기 쉬운지 확인하세요. 평판이 좋은 소스로부터 타사 패키지를 얻고 패키지를 최신 상태로 유지하세요.
