php教程 php手册 从零开始之ecshop基础篇(17)

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

Jun 13, 2016 am 10:17 AM
ecshop mvc 사업 기반으로 베이스 개발하다 시작 액자 사례 전기 ~의 목표 사용자 정의 논리 프로젝트

目标:基于自定义的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数据库的操作类        
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

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

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

Java 프레임워크에 대한 상용 지원의 비용 효율성을 평가하는 방법 Java 프레임워크에 대한 상용 지원의 비용 효율성을 평가하는 방법 Jun 05, 2024 pm 05:25 PM

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

PHP 프레임워크의 경량 옵션은 애플리케이션 성능에 어떤 영향을 줍니까? PHP 프레임워크의 경량 옵션은 애플리케이션 성능에 어떤 영향을 줍니까? Jun 06, 2024 am 10:53 AM

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

Golang 프레임워크 문서화 모범 사례 Golang 프레임워크 문서화 모범 사례 Jun 04, 2024 pm 05:00 PM

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

PHP 프레임워크의 학습 곡선은 다른 언어 프레임워크와 어떻게 비교됩니까? PHP 프레임워크의 학습 곡선은 다른 언어 프레임워크와 어떻게 비교됩니까? Jun 06, 2024 pm 12:41 PM

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

다양한 애플리케이션 시나리오에 가장 적합한 golang 프레임워크를 선택하는 방법 다양한 애플리케이션 시나리오에 가장 적합한 golang 프레임워크를 선택하는 방법 Jun 05, 2024 pm 04:05 PM

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

golang 프레임워크 개발에 대한 자세한 실제 설명: 질문과 답변 golang 프레임워크 개발에 대한 자세한 실제 설명: 질문과 답변 Jun 06, 2024 am 10:57 AM

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

Golang 프레임워크 성능 비교: 현명한 선택을 위한 측정항목 Golang 프레임워크 성능 비교: 현명한 선택을 위한 측정항목 Jun 05, 2024 pm 10:02 PM

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

Golang 프레임워크를 사용할 때 주의해야 할 일반적인 사항은 무엇입니까? Golang 프레임워크를 사용할 때 주의해야 할 일반적인 사항은 무엇입니까? Jun 06, 2024 pm 01:33 PM

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

See all articles