ThinkPHP6의 새로운 '다중 애플리케이션'과 ThinkPHP5의 차이점은 무엇입니까?
은 ThinkPHP6
中新增了一个叫做“多应用”的名词,这个在ThinkPHP5
에 없는데 이건 뭐에 쓰는 걸까요? PHP 중국어 웹사이트 기고자인 Wang Xueqin의 대화를 들어보세요...
먼저 여러 응용 프로그램의 디렉토리 구조에 대한 ThinkPHP6 공식 매뉴얼을 살펴보세요:
├─app 应用目录 │ ├─index 主应用 │ │ ├─controller 控制器目录 │ │ ├─model 模型目录 │ │ ├─view 视图目录 │ │ ├─config 配置目录(优先) │ │ └─ ... 更多类库目录 │ ├─admin 后台应用 │ │ ├─controller 控制器目录 │ │ ├─model 模型目录 │ │ ├─view 视图目录 │ │ ├─config 配置目录(优先) │ │ └─ ... 更多类库目录 │ ├─public WEB目录(对外访问目录) │ ├─admin.php 后台入口文件 │ ├─index.php 入口文件 │ ├─router.php 快速测试文件 │ └─.htaccess 用于apache的重写 │ ├─config 应用配置目录 │ ├─index index应用配置 │ └─admin admin应用配置 │ ├─view 视图目录 │ ├─index index应用视图目录 │ └─admin admin应用视图目录 │ ├─route 路由定义目录 │ ├─index index应用路由定义目录 │ └─admin admin应用路由定义目录 │ ├─runtime 运行时目录 │ ├─index index应用运行时目录 │ └─admin admin应用运行时目录
(출처: ThinkPHP6.0 Rapid) 개발 매뉴얼(케이스편))
아, ThinkPHP6에 출시된 멀티 애플리케이션이 바로 이런 것인데요. 프론트엔드 인덱스 애플리케이션과 백엔드 관리 애플리케이션이 있는데요. 당시 우리는 ThinkPHP5를 사용할 때 프런트엔드 애플리케이션 인덱스와 백엔드 애플리케이션 관리자도 개발했습니다. 차이점은 무엇입니까?
차이점 1: composer를 통해 다운로드해야 사용할 수 있습니다.
ThinkPHP6 프레임워크는 기본적으로 단일 애플리케이션을 다운로드합니다. 여러 애플리케이션을 사용하려면 다음을 다운로드해야 합니다.
composer require topthink/think-multi-app
차이점 2: 경로 정의는 현재 애플리케이션 아래에 있어야 합니다.
ThinkPHP5에서는 루트 디렉터리에 경로 파일을 정의할 수 있다는 것을 알고 있지만 ThinkPHP6 이후에는 응용 프로그램 디렉터리에 경로를 정의해야 합니다.
차이점 3: ThinkPHP6은 애플리케이션 포털을 지원합니다.
ThinkPHP6에서는 애플리케이션에 대해 별도의 항목 파일을 설정할 수 있습니다. 예를 들어 관리자 애플리케이션의 경우 admin.php 항목 파일에 액세스하도록 설정할 수 있습니다.
차이점 4: 도메인 이름 바인딩 애플리케이션.
예를 들어 ThinkPHP5에서는 www.a.com/index/index/company.html의 경로를 정의한 후 www.a.com/company.html
효과를 얻을 수 있습니다. 그러나 ThinkPHP6에서는 라우팅을 설정한 후에는 항상 www.a.com/index/company.html에서 색인 응용 프로그램을 제거할 수 없습니다. 이 문제를 어떻게 해결할 수 있습니까?
그러면 해결 방법은 도메인 이름 바인딩 애플리케이션을 사용하는 것입니다. config/app.php 구성 파일에서 도메인 이름과 애플리케이션의 바인딩을 다음과 같이 정의합니다.
'domain_bind' => [ 'www.a.com' => 'index', // 域名绑定到www应用 'admin.a.com' => 'admin', // admin绑定到后台应用 ],
그래서 www.a를 사용할 수 있습니다. com/ company.html 을 방문하셨습니다.
마지막으로:
일반적으로 ThinkPHP6의 다중 애플리케이션은 ThinkPHP5에 비해 여전히 큰 개선 사항입니다. 비록 처음 사용하는 데 약간 번거롭고 작곡가 다운로드가 필요하지만 이는 우리의 선호에 영향을 미치지 않습니다. ThinkPHP6의 다중 응용 프로그램.
【추천 튜토리얼】
위 내용은 ThinkPHP6의 새로운 '다중 애플리케이션'과 ThinkPHP5의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

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

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

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

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

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

뜨거운 주제











Pagoda에 thinkphp5를 배포할 때 보고된 오류에 대한 해결 방법: 1. Pagoda 서버를 열고 php pathinfo 확장을 설치하고 활성화합니다. 2. "RewriteRule ^(.*)$ index.php 콘텐츠로 ".access" 파일을 구성합니다. ?s=/$1 [QSA ,PT,L]”; 3. 웹사이트 관리에서 thinkphp의 pseudo-static을 활성화하면 됩니다.

thinkphp5 URL 재작성이 작동하지 않는 해결 방법: 1. mod_rewrite.so 모듈이 httpd.conf 구성 파일에 로드되었는지 확인합니다. 2. AllowOverride None에서 None을 All로 변경합니다. 3. Apache 구성 파일 .htaccess를 "RewriteRule ^ (.*)$ index.php [L,E=PATH_INFO:$1]" 하고 저장하세요.

요청된 URL을 얻는 thinkphp5의 방법: 1. 현재 URL 정보를 얻기 위해 "\think\Request" 클래스의 "$request = Request::instance();" 방법을 사용합니다. 도메인 이름을 포함한 전체 URL 주소를 얻으려면 "$request-> url()" 함수를 사용하세요.

thinkphp5 제목 표시줄 아이콘을 제거하는 방법: 1. thinkphp5 프레임워크 공개에서 favicon.ico 파일을 찾습니다. 2. 파일을 삭제하거나 다른 사진을 선택하여 이름을 favicon.ico로 바꾸고 원본 favicon.ico 파일을 대체합니다.

thinkphp5 게시물은 TP5가 strpos 함수를 사용하여 헤더의 콘텐츠 유형 값에서 app/json 문자열을 찾기 때문에 값을 얻을 수 없습니다. 해결 방법은 헤더의 콘텐츠 유형 값을 app/json으로 설정하는 것입니다.

iframe 대신 Ajax 및 프런트엔드 프레임워크를 사용할 수 있습니다. 자세한 소개: 1. Ajax를 사용하여 비동기 요청을 통해 서버에서 반환된 데이터를 얻은 다음 JavaScript를 사용하여 지정된 DOM 요소에 데이터를 삽입하여 부분 새로 고침을 수행합니다. jQuery의 $.ajax() 메소드 또는 기본 XMLHttpRequest 객체를 사용하여 Ajax 요청을 보낼 수 있습니다. 2. 널리 사용되는 프런트 엔드 프레임워크를 사용하여 페이지의 상태와 구성 요소를 보다 효율적으로 관리하고 콘텐츠의 동적 로드 및 업데이트를 달성합니다.

컨트롤러가 존재하지 않는다고 메시지를 표시하는 thinkphp5에 대한 해결 방법: 1. 해당 컨트롤러의 네임스페이스가 올바르게 작성되었는지 확인하고 올바른 네임스페이스로 변경합니다. 2. 해당 tp 파일을 열고 클래스 이름을 수정합니다.

ThinkPHP5에서 어제의 데이터를 쿼리하는 방법: 1. ThinkPHP5 관련 파일을 엽니다. 2. "db('table')->whereTime('c_time', 'yesterday')->select();" 표현식을 통해 어제의 데이터를 쿼리할 수 있습니다. .
