이제 우리는 기본 응용 프로그램이 실행되었으므로 일부 축하가 순서대로 진행됩니다…
감사합니다! 지금까지 로켓 과학이 없습니다.
시작 페이지, 정적 페이지, 연락처 페이지 및 로그인 페이지로 시작합니다. 연락처 페이지 및 로그인 양식에는 이전과 동일한 기능이 있습니다. CARTCHA 코드, 양식 검증 및 로그인에 사용할 수있는 두 사용자. 로그인은 이전과 동일합니다. 아무것도 가깝습니다. 그래도 좋은 출발입니다.
기본 응용 프로그램의 디자인은 극적으로 변경되었습니다. 이전에는 Blueprint CSS 프레임 워크에 대한 응용 프로그램을 구축했지만 이제는 Twitter Bootstrap으로 시작합니다. 개선? 아마도 Blueprint와 비교 될 것입니다. 그러나 Bootstrap은 Blueprint가 시도한 것보다 훨씬 더 많습니다.
Bootstrap은 모든 종류의 응용 프로그램 구성 요소를 제공하고 응용 프로그램 구축 속도를 높입니다. 다른 한편으로는 모든 사이트가 부트 스트랩과 동일하게 보이고 (테마는 부분적으로 만 수정) 사이트를 더 큰 크기로 만들 것이라고 주장 할 수도 있습니다. 어느 쪽이든, YII 2.0과의 통합은 YII2- 부트 스트랩 확장으로 수행됩니다. 이렇게하면 뷰에서 부트 스트랩 구성 요소를 쉽게 통합 할 수 있습니다.
또 다른 것은 바닥의 디버그 막대입니다. Symfony와 마찬가지로 기본적으로 설치 및 활성화됩니다. 구성, 요청 및 애플리케이션 로깅에 대한 많은 정보에 빠르게 액세스 할 수 있습니다. 디버그 정보가 포함 된 요청 이력을 유지합니다.
yii는 일반적으로 PHP와 다른 오류를 처리합니다. YII는 모든 오류 (치명적 및 비 치명적)를 예외로 변환합니다. 그것들은 당신이 엉망이 된 지점을 향한 통찰력있는 출력을 렌더링하여 처리됩니다. YII 1.1이 기본 PHP 오류로 돌아가는 오류조차도 코드의 개요를 잘 렌더링합니다. 이것은 우리 대부분이 감사 할 것입니다.
gii도 다시 존재하고 기본적으로 활성화됩니다
gii는 개발 속도를 높이는 데 도움이되는 또 다른 훌륭한 도구 인 코드를 시작할 수있는 코드를 생성함으로써 도움이 될 것입니다. 그것은 당신을 위해 모델과 컨트롤러를 생성합니다. CRUD 생성기는 한 걸음 더 나아가 모든 작업에 대한 완전한 MVC 세트를 생성합니다. GII는 또한 필요한 위치에 YII :: T () 함수를 즉시 삽입하여 국제화에 더 적합한 코드를 생성합니다.
기본 응용 프로그램에는 이제 구축 할 수있는 간단한 명령 줄 응용 프로그램도 제공됩니다. Yii 1.1은 이미 이것을 지원했지만 위키에서 예제를 얻어야합니다.
그것이 기본 응용 프로그램에서 찾을 수있는 것입니다. 또한 advanced 응용 프로그램 예제도 있습니다. 구조가 다소 다르지만 상자 밖으로 응용 프로그램에 더 많은 기능을 추가합니다.
사용자 인증, 인증 및 비밀번호 복원
응용 프로그램은 전면 및 백엔드로 분리됩니다.
기본 버전을 계속 살펴보면 자세히 살펴보고 코드를 다이빙해 봅시다… 무엇이 바뀌 었습니까?
많은 것이 바뀌 었습니다. 일부 변경 사항은 처음에는 혼란 스러울 수 있지만 대부분의 변경 사항은 의미가 있고 수용하기 쉽습니다. 다음은 흥미롭고 재미 있거나 당황한 변화가 있습니다.
PHP 5.4 요구 사항은 일부 변경을 가능하게했다. 배열 짧은 태그를 사용할 수 있습니다. 더 이상 구성 설정에 의존하지 않기 때문에 Echo Short 태그를보기에서도 안전합니다.
작은 변화이지만, 당신은 빠르게 달려갑니다. 전에는 yii :: app ()를 사용하여 응용 프로그램 인스턴스에 액세스하고 구성 요소에 액세스합니다. Yii 2.0에서 이것은 정적 함수에서 정적 변수 yii :: $ app로 변경되었습니다.
번역 함수 yii :: t ()는 여전히 우리와 함께 있습니다. YII는 I18N 구성 요소를 사용하여 제공된 텍스트를 현재 사용 된 현재 언어로 변환하도록 지시합니다. 변수를 대체하도록 지시 할 수도 있습니다
자리 표시 자 형식 및 스타일링이 심각하게 재 작업되어 더 많은 서식 옵션이 허용됩니다. 몇 가지 예 :
이 자리 표시 자 형식으로 인해 DateTimeFormatter가 사라졌습니다
이 기능은 ICU 라이브러리에서 제공합니다. YII 문서는 이것에 대한 원본 문서를 호출합니다. 나는 당신이 그것을 읽고 그것을 이해하려고 노력합니다… YII 문서에 더 읽기 쉬운 버전이 포함되기를 바랍니다.
컨트롤러
이전에는 accessControl ()이 YII Access 컨트롤 기능을 사용하려면 컨트롤러의 기능입니다. yii 2.0의 경우 액세스 제어는 컨트롤러 동작의 일부입니다 () :
composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic
로그인 후 복사
로그인 후 복사
이것은 YII 1.1의 방식과 거의 동일합니다.
나는 예제 코드 (프레임 워크 자체가 아님)에 많은 docblocks가없고 @inheritdoc 댓글이 많다는 것을 알았습니다. 이것은 예에서 기대할 수있는 것이 아니지만 시간이 지남에 따라 고정 될 것이라고 가정합니다. .
모델
기본 모델 (이전 CModel)은 크게 변하지 않았습니다. 시나리오를 사용하면 검증 규칙의 시행을 변경할 수 있습니다. 현재 시나리오 (즉, 전면 또는 백엔드에서 사용될 때 다른 규칙을 가진 모델)에 따라 검증해야 할 사항을 변경할 수 있습니다.
파생 된 Activerecord는 심각한 변화를 겪었습니다. ActivereCord를 검색하기위한 구문은 CDBCriceria가 사라 졌기 때문에 쿼리를 쓰는 것과 비슷해졌습니다. 정보 검색을 더 쉽게하는 ActiveQuery로 대체되었습니다.
관계 정의도 극적으로 변경되었습니다. 예를 들어 사용자가 댓글을 달린 기사를 게시하는 블로거가있는 사이트를 예로 들어 보겠습니다. 저자 표에 대한 관계 정의는 다음과 같습니다. YII 1.1 : 에서 어떻게 보이는지 시작하겠습니다composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic
로그인 후 복사
로그인 후 복사
보시다시피, 활성 레코드의 모든 관계를 큰 배열에서 정의합니다. YII 2.0에서는 모든 관계에 대해 활성 쿼리 객체를 반환하는 getter 메소드를 정의해야합니다. 중개자 테이블 사이의 관계를 정의하기 위해‘Through’키워드를 사용해야합니다.
이제이를 정의 할 수있는 두 가지 옵션이 있습니다. 일반적으로 관계 함수에서 VIA () 메소드를 사용합니다. 피벗 테이블 다음 테이블에 데이터 만 필요한 경우 viatable () 메소드를 사용하여 관계를 정의 할 수도 있습니다. 위와 동일한 예이지만 현재 YII 2.0 : 의 경우
이것은 다소 간단한 예입니다. ActiveQuery 객체를 반환하는 Getter 기능을 통해 관계를 정의하면 훨씬 더 많은 것이 가능합니다. 예를 들어, 반환 된 ActiveQuery에서 () 호출을 추가하여> 50 개의 댓글을 얻는 게시물에 대한 쿼리를 수행하는 특정 함수를 추가 할 수 있습니다.
흥미로운 추가는 교차 DBMS 관계를 정의 할 수 있다는 것입니다. 예를 들어 MySQL과 MongoDB 또는 Redis 간의 관계를 정의하고 응용 프로그램에서 하나의 객체로 사용할 수 있습니다.
뷰
뷰에서 주목해야 할 것은 $ $는 더 이상 컨트롤러 인스턴스를 참조하지 않는다는 것입니다. 보기에서 $ $는 yiiwebview 객체의 인스턴스입니다. 컨트롤러는 $ this-> 컨텍스트를 통해 액세스 할 수 있습니다. RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
로그인 후 복사
내가 전에 말했듯이; PHP 5.4는 짧은 에코 태그를 일관되게 사용할 수있게합니다. 이것은 혼합 PHP와 HTML로 구성된 견해를 더 읽을 수있게합니다.
render () 및 RenderPartial () 함수도 변경되었습니다. 렌더링 된 출력을 자동으로 반영하기 전에 렌더링 된 출력을 문자열로 가져 오려면 추가 매개 변수를 추가해야합니다. Yii 2.0은 항상 render ()에서 문자열을 반환합니다. 통화는 위젯이 작동하는 방식과 더 일치하는 전화와 마찬가지로.
yii 1.1 에서 업그레이드
yii 1.1 신청서를 YII 2.0으로 업그레이드하는 것을 고려해야합니까?
Bruno Škvorc는 최근 Sitepoint에서 레거시 코드에 대해 썼습니다. 그는 2 개월 안에 수행 할 수있는 재 작성을 고려해야한다고 주장합니다. 나는 그에게 동의하고 당신이 당신의 응용 프로그램에 대해 진지하게 느끼고 YII 1.1의 수명이 끝날 때까지 유지하고 싶다면 그것을 고려할 것을 제안 할 것입니다. 그러나 항상 그렇듯이; 그것은 당신의 상황에 달려 있습니다.
YII 웹 사이트에서 YII를 업그레이드하는 데 전용되는 특별 페이지가 있습니다. 현재 가장 큰 문제는 확장입니다. 많은 확장에 의존한다면 커뮤니티가 YII 2.0의 확장을 작성하는 데 시간이 걸리기 때문에 어려움을 겪게됩니다. 당신이 진짜 프로라면, 당신은 당신이 사용하고있는 확장을 진지하게 살펴보고 그것을 고려할 수 있습니다. 마이그레이션 매뉴얼에는 응용 프로그램에서 Yii 1.1 및 Yii 2.0을 함께 실행하는 섹션이 있습니다. 대규모 프로젝트의 경우 이것은 안전한 마이그레이션 경로를 만드는 좋은 방법입니다. 일반 코드를 YII 2.0으로 마이그레이션하고 더 복잡하거나 확장 된 부품에서 시간을 내십시오.
결론
YII 2.0에 대한 결정적인 가이드를 넘어서는 것은 YII 2.0을 시작하기 위해 점점 더 열정적으로 얻을 수 있습니다. 사전 제작 코드에 문제가 발생할 수 없었기 때문에 이미 새 프로젝트에서 사용하는 것을 막아야했습니다.
YII 2.0의 문서 품질은 YII 1.1에서 개선되었습니다. 몇 년 전에 YII 1.1을 시작했을 때 물건을 알아내는 데 어려움을 겪었고 문서가 이전보다 더 광범위하다고 생각합니다.
이미 YII 2.0을 보았습니까? 당신이 무엇을 발견했는지 알려주세요. 나는 당신의 경험을 알고 싶습니다!
yii 2.0 에 대한 질문이 자주 묻습니다
이전 버전과 비교하여 YII 2.0의 새로운 기능은 무엇입니까? yii 2.0에는 전임자보다 많은 새로운 기능과 개선이 제공됩니다. 이제 네임 스페이스 사용을 지원하여 코드 구성을 훨씬 쉽게 만듭니다. 또한보다 유연하고 강력한 새로운 라우팅 시스템도 소개합니다. ActivereCord 클래스는 NOSQL 데이터베이스를 포함한 더 많은 데이터베이스 유형을 지원하도록 재 설계되었습니다. 이 프레임 워크에는 또한 새로운 RESTFUL API 개발 지원이 포함되어있어 API를 쉽게 구축 할 수 있습니다. 또한 YII 2.0은 내장 CSRF (크로스 사이트 요청 위조) 보호를 포함하여 보안 기능이 향상되었습니다.
YII 2.0 국제화 (I18N)를 어떻게 처리 할 수 있습니까? yii 2.0은 강력합니다. 국제화 (I18N) 지원. 동일한 메시지의 여러 번역을 다른 언어로 저장할 수 있습니다. 로케일에 따라 날짜, 숫자 및 통화를 포맷 할 수도 있습니다. Yii 2.0은 컨텍스트에 따라 복수형 형태 및 메시지 선택을 지원합니다. YII 2.0 디버거는 무엇이며 어떻게 작동합니까?
yii 2.0 디버거는 디버그에 도움이되는 강력한 도구입니다. 귀하의 응용 프로그램. 실행 된 SQL 쿼리, 요청 및 응답 데이터 및 성능 타이밍 데이터를 포함하여 응용 프로그램에 대한 각 요청에 대한 정보를 수집하고 표시합니다. 응용 프로그램 페이지 하단의 패널을 통해이 정보에 액세스 할 수 있습니다.
타사 확장자로 YII 2.0을 어떻게 확장 할 수 있습니까?
yii 2.0은 타사 확장자 사용을 지원합니다. Composer 패키지 관리자를 사용하여 설치할 수 있습니다. 일단 설치되면 YII의 내장 기능과 마찬가지로 이러한 확장을 사용할 수 있습니다. YII 커뮤니티는 사용자 인증, 양식 검증 및 데이터베이스 추상화와 같은 추가 기능을 제공하는 광범위한 확장 기능을 개발했습니다. yii 2.0 데이터베이스 마이그레이션을 처리하는 방법은 무엇입니까? yii 2.0은 데이터베이스 변경을 버전 제어 할 수있는 강력한 데이터베이스 마이그레이션 도구를 제공합니다. YII Migrate/Create 명령을 사용하여 새 마이그레이션을 만들 수 있습니다. 마이그레이션 스크립트에는 마이그레이션을 적용하고 되 돌리는 방법이 포함됩니다. 그런 다음 YII Migrate/Up 명령을 사용하여 마이그레이션을 적용 할 수 있습니다.
YII 2.0은 RESTFUL API 개발을 어떻게 지원합니까? yii 2.0은 편안한 API를 개발하는 데 도움이되는 일련의 도구를 제공합니다. 라우팅, 요청 처리, 응답 형식 및 오류 처리에 대한 지원이 포함됩니다. ActiveController 클래스를 사용하여 API에 대한 CRUD (작성, 읽기, 업데이트, 삭제) 작업을 신속하게 생성 할 수 있습니다.
yii 2.0 양식 검증 방법은 어떻게 되나요?
YII 2.0 양식 검증 시스템. 모델 클래스에서 양식 필드에 대한 유효성 검사 규칙을 정의 할 수 있습니다. 양식이 제출되면 YII는이 규칙에 대한 입력 데이터를 자동으로 검증하고 적절한 오류 메시지를 생성합니다.
YII 2.0은 사용자 인증을 어떻게 처리합니까? yii 2.0은 유연한 사용자 인증 시스템을 제공합니다. . 전통적인 사용자 이름/비밀번호 인증과 Oauth 및 OpenID와 같은보다 현대적인 방법을 지원합니다. 또한 내장 사용자 모델을 확장하여 고유 한 인증 방법을 추가 할 수 있습니다. YII 2.0은 오류 처리 및 로깅을 어떻게 처리합니까? yii 2.0은 강력한 오류 처리 및 로깅 시스템을 제공합니다. PHP 오류와 예외를 모두 포착하고 처리 할 수 있습니다. 오류는 다른 형식으로 로그인하여 파일, 이메일 및 브라우저와 같은 다른 대상으로 보낼 수 있습니다.
YII 2.0 응용 프로그램을 어떻게 테스트 할 수 있습니까? yii 2.0은 테스트 프레임 워크를 제공합니다. phpunit 및 셀레늄을 기반으로합니다. 단위 테스트 및 기능 테스트를 모두 지원합니다. 테스트 케이스를 작성하여 모델, 뷰 및 컨트롤러를 테스트 할 수 있습니다. 테스트 프레임 워크는 또한 사용자 입력을 시뮬레이션하고 출력을 확인하는 메소드를 제공합니다.