>  기사  >  PHP 프레임워크  >  thinkphp3과 5의 차이점은 무엇입니까?

thinkphp3과 5의 차이점은 무엇입니까?

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼원래의
2019-08-26 15:36:593621검색

thinkphp3과 5의 차이점은 무엇입니까?

3.X 버려야 할 오래된 아이디어 #🎜 🎜#

URL 변경

우선 3. 버전 5.0의 부정확성에 대해 사과드립니다. , 'get'을 통해 'id'를 얻을 수 있는 /id/1과 유사한 방법은 공식적으로 폐지됩니다. 엄밀히 말하면 이러한 URL은 $_GET에 속하지 않으며 이제 'param'을 통해 얻을 수 있습니다. 요청 섹션을 통해 쿼리할 수 있습니다.

모델 변경

모델 쿼리의 새 버전은 기본 '객체'를 반환하고 시스템은 다음과 같이 'toArray' 메서드를 추가합니다. 많은 개발자들이 'all' 또는 'select'를 사용하여 배열로 변환하려고 합니다. 개발자가 '객체'의 개념을 이해하고 데이터 용도로 '객체'를 사용해 보길 바랍니다. db' 메소드를 사용하여 'toArray'를 남용하는 일부 개발자에게 'all' 또는 'select'의 결과는 'toArray'를 사용하여 변환할 수 없는 객체의 배열 컬렉션임을 상기시킵니다.

관련 권장 사항: "

ThinkPHP 튜토리얼"

새 버전 변경 # 🎜🎜#

명명 규칙

·

디렉터리 및 파일 이름은 '소문자 + 밑줄'을 사용하고 소문자로 시작합니다. letter ;

·

클래스 라이브러리와 함수 파일에는 모두 .php가 붙습니다. 이름은 네임스페이스에 정의되며 네임스페이스의 경로는 클래스 라이브러리 파일의 경로(대문자 및 소문자 포함)와 일치합니다.

·

The class 이름과 클래스 파일 이름은 일관되어야 합니다. 그리고 균일하게 카멜 표기법을 사용해야 합니다(첫 글자는 대문자)

function

#🎜 🎜#·

시스템은 더 이상 어떤 것에도 의존하지 않습니다. 함수는 일반적인 작업 캡슐화를 위한 도우미 기능만 제공합니다.

·

단일 문자 기능은 더 이상 사용되지 않습니다. 기본 시스템은 도우미 기능을 로드합니다. 자세한 내용은 이전 장 '보조 기능'을 참조하세요. ;

routing

5.0 URL 액세스 없음 에서는 더 이상 일반 URL 패턴을 지원하고 라우팅은 일반 라우팅 정의를 지원하지 않지만 모두 다음으로 변경됩니다. 규칙 라우팅이 변수 규칙(일반 정의)과 협력하는 방식은 여기서 자세히 설명하지 않습니다.

Controller

컨트롤러의 네임스페이스가 조정되었으므로 컨트롤러 클래스를 상속할 필요가 없습니다.

·애플리케이션 클래스 라이브러리의 네임스페이스는 모듈 이름 대신 앱(수정 가능)으로 통합됩니다. #🎜 🎜#컨트롤러의 클래스 이름에는 기본적으로 컨트롤러 접미사가 없습니다. 컨트롤러 클래스 접미사를 활성화하도록 Controller_suffix 매개변수를 구성할 수 있습니다. 컨트롤러 작동 방법은 직접 출력 대신 반환 방법을 사용합니다.

·

원래의 사전 및 사후 작업 방법을 폐지합니다.

#🎜 🎜#버전 비교# 🎜🎜#

3.2 버전 컨트롤러 작성 방법

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller 
{
    public function hello()
    {
        echo &#39;hello,thinkphp!&#39;;
    }
}
5.0 버전 컨트롤러 작성 방법
namespace app\index\controller;
class Index 
{
    public function index()
    {
        return &#39;hello,thinkphp!&#39;;
    }
}

3.2 버전 컨트롤러 이름 지정

IndexController.class.php
5.0 버전 컨트롤러 이름 지정
Index.php

**컨트롤러의 올바른 출력 템플릿**

5.0 컨트롤러에서 템플릿을 출력하려면 다음을 사용하세요. 메소드는 다음과 같습니다:

thinkController를 상속하는 경우 다음을 사용할 수 있습니다.

return $this->fetch(&#39;index/hello&#39;);

컨트롤러가 thinkController를 상속하지 않는 경우, 사용:

return view(&#39;index/hello&#39;);

model

이전 버전과 개선 사항을 비교해야 한다면 모델은 데이터베이스, M방식, 모델, 자동검증에 각각 해당하는 모델, 검증인이 동시에 강화되었으며, 간략하게 소개하면 다음과 같다.

Database

5.0의 데이터베이스 쿼리 기능이 강화되었습니다. 원래 모델을 통해 사용해야 했던 체인 쿼리를 호출할 수 있습니다. M 함수 호출은 대신 db 함수를 사용할 수 있습니다. 예:

3.2 version

M(&#39;User&#39;)->where([&#39;name&#39;=>&#39;thinkphp&#39;])->find();

5.0 version

db(&#39;User&#39;)->where(&#39;name&#39;,&#39;thinkphp&#39;)->find();

model#🎜🎜 #모델 쿼리의 새 버전에는 정적 메서드가 추가되었습니다. 예:

User::get(1); 
User::all();
User::where(&#39;id&#39;,&#39;>&#39;,10)->find();

모델 부분에서 많은 기능이 향상되었습니다. 다음을 참조하세요. 자세한 내용은 "모델 장"을 참조하세요.

자동인증

이전 버전과 비교하면 이전의 자동인증과 다르다고 이해하시면 됩니다. #🎜 🎜## 🎜🎜#ThinkPHP5.0 검증은 검증을 위해 독립적인 thinkValidate 클래스 또는 검증기를 사용합니다. 이는 모델에 적용할 수 있을 뿐만 아니라 컨트롤러에서 직접 호출할 수도 있습니다. 자세한 사용 규칙은 "검증"을 참조하세요. 여기서는 반복하지 않을 장입니다.

구성 파일

새 버전에는 이전과 다른 많은 구성 매개변수나 구성 수준이 있으므로 살펴보는 것이 좋습니다. 코드를 작성하거나 공식 개발 매뉴얼을 주의 깊게 읽고 구성 문제로 하루 종일 낭비하지 마십시오.

Exception

5.0은 기본적으로 모든 수준의 오류에 대해 예외가 발생하며 예외 페이지에는 쉽게 디버깅할 수 있도록 자세한 오류 정보를 표시하도록 재설계되었습니다.

시스템 상수 포기

버전 5.0은 이전 버전과 비교하여 사용자가 관련 시스템 변경 사항을 삭제하는 경우가 많습니다. 필요한 경우 스스로 그렇게 할 수 있습니다. 정의

下面是废除常量

REQUEST_METHOD IS_GET IS_POST IS_PUT IS_DELETE IS_AJAX __EXT__ COMMON_MODULE MODULE_NAME CONTROLLER_NAME ACTION_NAME 
APP_NAMESPACE APP_DEBUG MODULE_PATH等

部分常量可以在Request里面进行获取,具体参考“请求章节”。

注:再次说明本章节仅仅为之前使用3.X版本开发者快速理解5.0所写,具体5.0的功能还需要开发者通读手册。

助手函数

5.0 助手函数和 3.2 版本的单字母函数对比如下:

thinkphp3과 5의 차이점은 무엇입니까?

1、过去的单字母函数已完全被替换掉,如下:

S=>cache,C=>config,M/D=>model,U=>url,I=>input,E=>exception,L=>lang,A=>controller,R=>action

2、模版渲染:

$this->display() => return view()/return $this->fetch();

3、在model中调用自身model:

$this => Db::table($this->table)

4、在新建控制器与模型时的命名:

①控制器去掉后缀controller:UserController => User

②模型去掉后缀model:UserModel => User

5、url访问:

如果控制器名使用驼峰法,访问时需要将各字母之间用下划线链接后进行访问。

eg:控制器名为AddUser,访问是用add_user来进行访问

6、在TP5中支持配置二级参数(即二维数组),配置文件中,二级配置参数读取:

①Config::get('user.type');

②config('user.type');

7、模板中支持三元运算符的运算:{$info.status ? $info.msg : $info.error}还支持这种写法:{$varname.aa ?? 'xxx'}或{$varname.aa ?: 'xxx'}

8、TP5内置标签:

系统内置的标签中,volist、switch、if、elseif、else、foreach、compare(包括所有的比较标签)、(not)present、(not)empty、(not)defined等。

9、TP5数据验证:

$validate = new Validate([&#39;name&#39; => &#39;require|max:25&#39;,&#39;email&#39; => &#39;email&#39;]);
$data = [&#39;name&#39; => &#39;thinkphp&#39;,&#39;email&#39; => &#39;thinkphp@qq.com&#39;];
if(!validate->check($data)){
debug::dump($validate->getError());
}

注:使用助手函数实例化验证器——$validate = validate('User');

10、TP5实现了内置分页,使用如下:

查询状态为1的用户数据,且每页显示10条数据

$list = model(&#39;User&#39;)->where(&#39;status&#39;,1)->paginate(10);
$page = $this->render();
$this->assign(&#39;_list&#39;,$list);
$this->assign(&#39;_page&#39;,$page);
return $this->fetch();

模板文件中分页输出代码如下:

<div>{$_page}</div>

위 내용은 thinkphp3과 5의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.