PHP 의 Yii 2 프레임 워 크 의 개발 장점 을 열거 합 니 다.
1.설치 하기 쉽다
웹 개발 자 에 게 시간 은 돈 이 고 귀중 한 시간 을 복잡 한 설치 와 배치 과정 에 쓰 려 는 사람 은 없다.
설치 처리 사용Composer.만약 당신 이 설치 과정 을 묘사 하고 싶다 면,Sitepoint 는 최근 에 아주 좋 은 글 을 발 표 했 습 니 다.여기비록 내 사이트 에 단독 전단 과 백 엔 드 구성 요소 가 있 더 라 도 기본 적 인 응용 프로그램 템 플 릿 을 사용 하 는 경향 이 있다.반대로 나 는 모듈 을 사용 하여 내 사이트 의 백 스테이지 부분 을 선택 했다.Yii 모듈 은 가장 좋 은 설명 입 니 다.작은 응용 프로그램 이 주 응용 프로그램 에 남아 있 습 니 다).
메모:많은 디 렉 터 리 의 인용 은 뒤의 예제 에서 간단 한 템 플 릿 에서 디 렉 터 리 의 구 조 를 사용 합 니 다.
2.현대 기술 활용
Yii 는 순수한 대상 을 대상 으로 하 는 프레임 워 크 이 며,PHP 의 일부 고급 기능 을 이용 하여 정적 연결 지연,SPL 류 와 인터페이스,익명 함 수 를 포함한다.
모든 클래스 이름 공간 은 PSR-4 호 환 자동 로 더 를 사용 할 수 있 습 니 다.이것 은 Yii 의 HTML 도움말 류 와 같은 간단 함 을 의미 합 니 다.
use yii\helpers\Html;
Yii 도 네 임 스페이스 를 간소화 하 는 데 도움 을 줄 별명 을 정의 할 수 있 습 니 다.위의 예제 에서 use 문 구 는 클래스 정 의 를 불 러 옵 니 다.기본 디 렉 터 리/vendor/yiisoft/yii 2/helpers. 이 별명 은BaseYii클래스 가 79 줄 에서 정의 합 니 다.
public static $aliases = ['@yii' => __DIR__];
프레임 자체 의 설 치 는 Composer 를 사용 합 니 다.확장 입 니 다.심지어 출판 과정 이 확장 되 는 것 처럼 자신의 coposer.json 을 만 들 기 쉬 우 며,Github 위탁 관리 코드 에서 확장 자 를 Packagist 에 표시 합 니 다.3.고도 확장 성
Yii 는 스타일 이 좋 은 양복 처럼 보이 지만 당신 의 요구 에 따라 맞 춤 형 제작 이 용이 합 니 다.실제 프레임 의 모든 구성 요 소 는 확장 이 가능 합 니 다.하나의 간단 한 예 는 보기 에 유일한 주체 ID 를 추가 하 는 것 입 니 다.(당신 이 왜 이렇게 하려 고 하 는 지 에 관심 이 있다 면 이 글 을 보 세 요).
우선,제 app\components 디 렉 터 리 에 View.php 라 는 파일 을 만 들 고 다음 코드 를 추가 하 겠 습 니 다.
namespace app\components;
class View extends yii\web\View {
public $bodyId;
/* Yii allows you to add magic getter methods by prefacing method names with "get" */
public function getBodyIdAttribute() {
return ($this->bodyId != '') ? 'id="' . $this->bodyId . '"' : '';
}
}
그 다음 에 제 홈 레이아웃 파일(app\views\layouts\main.php)에서 다음 코드 를 제 HTML 에 body 태그 에 추가 하 겠 습 니 다.
<body <?=$this->BodyIdAttribute?>>
마지막 으로,Yii 가 기본 클래스 가 아 닌 확장 보기 클래스 를 사용 하 는 방법 을 알 수 있 도록 다음 코드 를 추가 합 니 다.
return [
// ...
'components' => [
// ...
'view' => [
'class' => 'app\components\View'
]
]
];
4.테스트 장려Yii 프레임 워 크 와 Codeception 프레임 워 크 가 긴밀 하 게 통합 되 어 있 습 니 다.Codeception 은 단원 테스트,기능 검수 테스트 를 만 드 는 절 차 를 간소화 하 는 데 도움 을 주 는 우수한 PHP 테스트 프레임 워 크 입 니 다.조건 은 모든 응용 프로그램 을 위해 자동 화 된 테스트 용례 를 작성 하 는 것 입 니 다.그 렇 죠?
Codeception 확장 은 테스트 할 때 프로그램 설정 을 간단하게 합 니 다.테스트 프로그램,존재 하 는 파일/tests/ 만 편집 하면 됩 니 다.config.php。예 를 들 면:
return [
'components' => [
'mail' => [
'useFileTransport' => true,
],
'urlManager' => [
'showScriptName' => true,
],
'db' => [
'dsn' => 'mysql:host=localhost;dbname=mysqldb_test',
],
],
];
위의 설정 을 사용 하려 면 다음 사항 을 주의해 야 합 니 다.
$I->amOnPage('register');
$I->fillField('username', 'testuser');
$I->fillField('password', 'qwerty');
$I->click('Register');
$I->seeRecord('app\models\User', array('name' => 'testuser'));
5.간소 화 된 안전 방안안전성 은 모든 웹 애플 리 케 이 션 의 중요 한 구성 부분 입 니 다.다행히도 Yii 는 부담 을 줄 일 수 있 는 좋 은 특성 이 많 습 니 다.
Yii 는보안 응용 프로그램 구성 요소를 가 져 왔 습 니 다.더 안전 한 프로그램 을 만 드 는 데 도움 이 되 는 방법 을 드 러 냈 습 니 다.그 중에서 상대 적 으로 더 유용 한 방법 은 다음 과 같 습 니 다.
generatePasswordHash:암호 와 무 작위 소금 값 으로 안전 한 해시 값 을 만 듭 니 다.이 방법 은 무 작위 소금 값 을 만 들 고 PHP 의 crypt 함 수 를 사용 하여 제공 하 는 문자열 에 따라 해시 값 을 만 듭 니 다.
validatePassword:generatePassword Hash 와 함께 사용 할 수 있 는 방법 입 니 다.사용자 가 제공 한 비밀번호 가 저 장 된 해시 값 과 일치 하 는 지 확인 할 수 있 습 니 다.
generateRandomKey:모든 길이 의 무 작위 문자열 을 만 들 수 있 습 니 다.
Yii 는 모든 보안 이 아 닌 HTTP 요청 방법(PUT,POST,DELETE)의 사용 가능 한 CSRF 토 큰 을 자동 으로 검사 하고,ActiveForm::begin()방법 으로 개발 폼 탭 을 만 들 때 토 큰 값 을 생 성하 고 출력 합 니 다.이 기능 은 홈 프로필 을 편집 하여 다음 코드 를 포함 하여 비활성화 할 수 있 습 니 다.
return [
'components' => [
'request' => [
'enableCsrfValidation' => false,
]
];
제방 스 크 립 트 XSS 공격 을 위해 Yii 는 Html Purifier 라 는 또 다른 보조 클래스 를 제공 합 니 다.이 클래스 는 process 라 는 정적 방법 이 있 으 며,같은 이름 의 유행 필터 라 이브 러 리 를 사용 하여 출력 을 걸 러 냅 니 다.Yii 는 사용자 인증 과 권한 수여 에 사용 할 수 있 는 클래스 도 포함 되 어 있 습 니 다.권한 수 여 는 두 가지 유형 으로 나 뉘 어 있 습 니 다.ACF(액세스 제어 필터)와 RBAC(캐릭터 접근 기반 제어)입 니 다.
둘 중 더 나 은 것 은 ACF 입 니 다.컨트롤 러 에 다음 과 같은 행동 방법 을 추가 하 는 것 입 니 다.
use yii\filters\AccessControl;
class DefaultController extends Controller {
// ...
public function behaviors() {
return [
// ...
'class' => AccessControl::className(),
'only' => ['create', 'login', 'view'],
'rules' => [
[
'allow' => true,
'actions' => ['login', 'view'],
'roles' => ['?']
],
[
'allow' => true,
'actions' => ['create'],
'roles' => ['@']
]
]
];
}
// ...
}
위의 코드 는 default Controller to 에 게 방문객 사용자 가 create 가 아 닌 login 과 view 의 action 에 접근 하도록 알려 줍 니 다.(물음표?익명 사용자 의 별명 입 니 다.@은 권한 을 수 여 받 은 사용 자 를 표시 합 니 다).RBAC 는 사용자 가 특정한 동작 을 수행 할 수 있 도록 프로그램 에서 지정 할 수 있 는 강력 한 방법 입 니 다.이 방법 은 사용자 에 게 캐릭터 를 만 들 고,app 에 권한 을 정의 한 다음,사용자 가 원 하 는 캐릭터 에 사용 할 수 있 는 강력 한 방법 입 니 다.심사 위원(Moderator)역할 을 만 들 려 면 이 방법 을 사용 하 십시오.또한 이 역할 에 배 치 된 모든 사용자 가 글 을 심사 할 수 있 도록 할 수 있다.
RBAC 정의 규칙 도 사용 할 수 있 습 니 다.특정한 조건 에서 프로그램의 어떤 부분 에 대해 권한 을 부여 할 수 있 습 니 다.예 를 들 어 다른 사람 이 만 든 글 을 수정 하지 않 고 사용자 가 자신의 글 을 편집 할 수 있 도록 규칙 을 만 들 수 있 습 니 다.
6.개발 기간 단축
대부분의 프로젝트 는 반복 되 는 임 무 를 포함 하고 있 으 며,아무 도 반복 되 는 일 에 시간 을 낭비 하고 싶 어 하지 않 는 다.Yii 는 이러한 임무 에 더 적은 시간 을 들 이 고 대부분의 시간 을 맞 춤 형 응용 프로그램 으로 고객 의 수 요 를 만족 시 키 는 데 사용 할 수 있 도록 도 구 를 제공 했다.
그 중 가장 강력 한 도 구 는'지 이'다.Gii 는 웹 비계 코드 도구 입 니 다.코드 템 플 릿 을 빠르게 만 들 수 있 습 니 다.다음 과 같 습 니 다.
if (YII_ENV_DEV) {
// ...
$config['modules']['gii'] = [
'class' => 'yii\gii\Module',
'allowedIPs' => ['127.0.0.1', '::1']
]
}
이 는 Gii 가 Yii 의 환경 변 수 를(development)개발 환경 으로 설정 할 때 만 불 러 오고 로 컬 환경 을 통 해 접근 할 때 만 불 러 오 는 것 을 확보 합 니 다.이제 모델 의 생 성 을 살 펴 보 자.
표 이름 은 응답 을 두 드 리 면 표시 되 는 작은 창 을 사용 하여 모델 이 연 결 될 표 에 대한 추측 을 시도 합 니 다.또한 모든 도 메 인 값 입력 상자 에 반전 효과 가 나타 나 는 알림 이 있 습 니 다.작성 을 완료 하 는 방법 을 알려 줍 니 다.Gii 출력 코드 를 사용 하기 전에 미리 보 기 를 할 수 있 습 니 다.모든 코드 템 플 릿 은 완전히 맞 춤 형 입 니 다.
데이터베이스 이전,메시지 번역(I18N)및 자동화 테스트 데이터베이스 도 구 를 만 드 는 명령 행 보조 도구 도 몇 개 있 습 니 다.예 를 들 어 다음 코드 를 사용 하여 새로운 데이터베이스 이전 파일 을 만 들 수 있 습 니 다.
yii migrate/create create_user_table
이것 은{응용 디 렉 터 리}/migrations 에서 아래 와 같은 이전 템 플 릿 을 만 들 것 입 니 다.
<?php
use yii\db\Schema;
class m140924_153425_create_user_table extends \yii\db\Migration
{
public function up()
{
}
public function down()
{
echo "m140924_153425_create_user_table cannot be reverted.
";
return false;
}
}
그렇다면 이 시계 에 열 을 추가 하고 싶다 면 아래 코드 를 up 방법 에 간단하게 추가 하면 됩 니 다.
public function up()
{
$this->createTable('user', [
'id' => Schema::TYPE_PK,
'username' => Schema::TYPE_STRING . ' NOT NULL',
'password_hash' => Schema:: TYPE_STRING . ' NOT NULL'
], null);
}
그리고 내 가 이전 할 수 있 는 역방향 조작 을 확보 하기 위해 다운 방법 을 편집 할 것 이다.
public function down()
{
$this->dropTable('user');
}
표를 만 드 는 것 은 명령 줄 에서 명령 을 실행 할 때 까지 간단 한 디자인 일 수 있 습 니 다.
./yii migrate
표 삭 제 는 다음 명령 입 니 다:
./yii migrate/down
7.조정 을 통 해 더 좋 은 성능 을 얻 기 쉽다모든 사람들 이 느릿느릿 한 사이트 가 불만 을 품 은 많은 사용 자 를 만 들 수 있다 는 것 을 알 고 있 기 때문에 Yii 는 응용 프로그램 이 더 빠 른 속 도 를 얻 을 수 있 도록 도 구 를 제공 했다.
모든 Yii 캐 시 구성 요 소 는yii/caching/Cache에서 확 장 됩 니 다.공공 API 를 사용 하 는 동시에 임의의 캐 시 시스템 을 선택 할 수 있 습 니 다.여러 개의 캐 시 구성 요 소 를 동시에 등록 할 수 있 습 니 다.Yii 는 현재 데이터베이스 와 파일 시스템 캐 시 를 지원 합 니 다.또한 APC,Memcache,Redis,WinCache,XCache,Zend Data Cache 도 지원 합 니 다.
기본 적 인 상황 에서 Active Record 를 사용한다 면 Yii 는 모델 을 만 드 는 표 의 구 조 를 확인 하기 위해 조 회 를 추가 로 실행 합 니 다.아래 와 같이 메 인 프로필 을 편집 하여 프로그램 을 설정 하여 표 구 조 를 캐 시 할 수 있 습 니 다.
return [
// ...
'components' => [
// ...
'db' => [
// ...
'enableSchemaCache' => true,
'schemaCacheDuration' => 3600,
'schemaCache' => 'cache',
],
'cache' => [
'class' => 'yii\caching\FileCache',
],
],
];
마지막 으로 Yii 는 전단 필드 를 축소 할 수 있 는 명령 행 도구 가 있 습 니 다.아래 명령 을 간단하게 실행 하면 설정 템 플 릿 을 만 들 수 있 습 니 다.
./yii asset/template config.php
그리고 이 설정 을 편집 합 니 다.축소 작업 을 수행 할 도구(예:Closure Compiler,YUI Compressor,UglifyJS)를 지정 합 니 다.생 성 된 설정 템 플 릿 은 다음 과 같 습 니 다.
<?php
return [
'jsCompressor' => 'java -jar compiler.jar --js {from} --js_output_file {to}',
'cssCompressor' => 'java -jar yuicompressor.jar --type css {from} -o {to}',
'bundles' => [
// 'yii\web\YiiAsset',
// 'yii\web\JqueryAsset',
],
'targets' => [
'app\config\AllAsset' => [
'basePath' => 'path/to/web',
'baseUrl' => '',
'js' => 'js/all-{hash}.js',
'css' => 'css/all-{hash}.css',
],
],
'assetManager' => [
'basePath' => __DIR__,
'baseUrl' => '',
],
];
다음은 압축 을 수행 하기 위해 이 콘 솔 명령 을 실행 합 니 다.
yii asset config.php /app/assets_compressed.php
마지막 으로 웹 프로그램 프로필 을 수정 하고 압축 된 자원 을 사용 합 니 다.
'components' => [
// ...
'assetManager' => [
'bundles' => require '/app/assets_compressed.php'
]
]
메모:이 추가 도 구 를 수 동 으로 다운로드 하고 설치 해 야 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
laravel에 yo에서 angularJs&coffeescript를 사용할 수 있도록 한다.먼저 yo 명령을 사용할 수 있어야하므로 아래에서 설치 global에 설치한 곳에서 laravel의 프로젝트 루트로 이동. 클라이언트 코드를 관리하는 디렉토리를 만들고 이동합니다. 클라이언트 환경 만들기 이것으로 히...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.