찾다
PHP 프레임워크YIIyii 프레임워크를 선택하는 이유는 무엇인가요?

yii 프레임워크를 선택하는 이유는 무엇인가요?

yii 프레임워크를 선택해야 하는 7가지 이유:

(추천 튜토리얼: yii Framework)

1. 쉬운 설치

웹 개발자에게는 시간이 돈입니다. 누구도 지루한 설치와 구성에 시간을 낭비하고 싶어하지 않습니다.

Composer가 설치 과정을 처리합니다. 글쎄, 설치 프로세스에 대한 설명을 원하신다면 Sitepoint는 최근 이에 대한 기사를 게시했습니다. 아래에서 읽을 수 있습니다. 내 사이트에 별도의 프런트엔드 및 백엔드 구성 요소가 있더라도 기본 앱 템플릿을 고수하는 것을 선호합니다. 대신 내 사이트의 백엔드 부분에 모듈을 사용하기로 결정했습니다. (Yii 모듈은 기본 애플리케이션에 내장되도록 설계된 미니 애플리케이션을 가장 잘 표현한 것입니다.)

참고: 아래 많은 예제의 디렉터리 참조는 간단한 템플릿의 디렉터리 구조를 사용합니다.

2. 최신 기술 사용

Yii는 지연된 정적 바인딩, SPL 클래스 및 인터페이스, 익명 기능을 포함한 PHP의 고급 기능 중 일부를 최대한 활용하는 순수 OOP 프레임워크입니다.

모든 클래스는 네임스페이스가 있으며 이를 통해 PSR-4 호환 자동 로더를 활용할 수 있습니다. 즉, Yii에 HTML 보조 클래스를 포함시키는 것은 매우 간단합니다.

use yii\helpers\Html;

Yii는 네임스페이스를 단순화하는 데 도움이 되는 별칭을 정의할 수도 있습니다. 위의 예에서 use 문은 클래스 정의를 로드하고 디렉터리의 기본 경로는 /vendor/yiisoft/yii2/helpers입니다. 이 별칭은 79행의 BaseYii 클래스에 정의되어 있습니다.

public static $aliases = ['@yii' => __DIR__];

프레임워크 자체는 확장 기능과 마찬가지로 Composer를 사용하여 설치됩니다. 확장 기능을 게시하는 것은 작곡가.json을 생성하고, Github에서 코드를 호스팅하고, Packagist에 확장 기능을 나열하는 것만큼 간단합니다. Yii는 또한 네임스페이스를 단순화하는 데 도움이 되는 별칭을 정의할 수도 있습니다. 위의 예에서 use 문은 클래스 정의를 로드하고 디렉터리의 기본 경로는 /vendor/yiisoft/yii2/helpers입니다. 이 별칭은 BaseYii 클래스의 79번째 줄에 정의되어 있습니다:

3. 높은 확장성

Yii는 양복과 같아서 커 보이지만 실제로는 필요에 맞게 조정하기 쉽습니다. 프레임워크의 거의 모든 구성요소는 확장 가능합니다. 간단한 예는 뷰에 고유한 본문 ID를 추가하는 것입니다. (이 작업을 수행하려는 이유가 궁금하다면 이 기사를 확인하세요.)

먼저 app 구성 요소에 View.php라는 파일을 만들고 다음 내용을 추가하겠습니다.

namespaceapp\components;
 
classView extendsyii\web\View {
 
    public$bodyId;
 
    /* Yii allows you to add magic getter methods by prefacing method names with "get" */
 
    publicfunction getBodyIdAttribute() {
        return($this->bodyId !='') ?'id="' . $this->bodyId .'"' : '';
    }
 
}

그런 다음 기본 레이아웃 파일(appviewslayoutsmain.php)에서 HTML의 body 태그에 다음을 추가하고 싶습니다.

BodyIdAttribute?> ;>

마지막으로 Yii가 기본 클래스 대신 확장된 View 클래스를 사용할 수 있도록 다음 콘텐츠를 기본 구성 파일에 추가하고 싶습니다.

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',
        ],
    ],
];

使用该配置,将会发生如下几种情况:

1、 在功能测试和验收测试期间发送的任何一封邮件,将会被写入一个文件中,而不是被发送。使用该配置,将会发生如下这种情况:

2、 在你测试中的URLs将会采取这种格式: index.php/controller/action 而不是这种:/controller/action

3、 测试将会使用你的测试数据库,而不是你的产品数据库。

存在Yii框架中的特殊模块,同样也存在Codeception内。它TestGuy类中增加了几个方法,协助你在功能测试中的活动记录(Yii中的ORM)。举例来说,如果你想看看是否成功创建了一个用户名为“testuser”的新user,你可以做以下几点:

$I->amOnPage('register');
$I->fillField('username','testuser');
$I->fillField('password','qwerty');
$I->click('Register');
$I->seeRecord('app\models\User',array('name'=> 'testuser'));

5、简化安全性

安全性是任何一个web应用的重要组成部分,幸运的是,Yii有一些很棒的功能可以帮你解决这方面的烦恼。
Yii带有一个安全应用组件,其中公开的几个方法可以帮助创建一个更安全的应用。其中一些比较有用的方法如下:

·generatePasswordHash: 从一个密码和随机因子生成一个安全的单向散列函数。这种方法为你编译了一个随机因子,然后通过PHP crypt函数功能提供的字符串创建了一个单项散列函数。

·validatePassword:对于generatePasswordHash,这是一个伴侣功能,并且允许你检查用户提供的密码是否与你存储的散列函数相匹配。

·generateRandomKey:允许你创建一个任意长度的随机字符串。

Yii会对所有不安全的HTTP请求方法(PUT,POST,DELETE)进行自动检查,当你使用ActiveForm::begin()方法创建开放表单标签时,它会生成并输出一个token。通过编辑你的主配置文件可以禁止此功能,方法如下:

return[
    'components'=> [
        'request'=> [
            'enableCsrfValidation'=> false,
        ]
];

为了防止XSS,Yii提供了一个叫HtmlPurifier的辅助类。这个类有一个名为process的静态方法,并且会使用popular filter library过滤出同名的输出库。

Yii还包括备用类,用来进行用户身份验证和授权。授权分为两种类型:ACF(访问控制过滤器)和RBAC(基于角色的访问控制)。

这两种授权方法,较简单的要数ACF了,它是通过在你的控制器中添加以下行为方法来实现的:

useyii\filters\AccessControl;
 
classDefaultController extendsController {
    // ...
    publicfunction behaviors() {
        return[
            // ...
            'class'=> AccessControl::className(),
            'only'=> ['create','login','view'],
                'rules'=> [
                [
                    'allow'=> true,
                    'actions'=> ['login','view'],
                    'roles'=> ['?']
                ],
                [
                    'allow'=> true,
                    'actions'=> ['create'],
                    'roles'=> ['@']
                ]
            ]
        ];
    }
    // ...
}

上面的代码用于区分DefaultControllerto,允许guest用户的访问login 和view行为,而不是create 行为。(? 是一个匿名用户别名,@ 指的是已认证用户)。

RBAC是指那些用户可以在整个应用中执行特定操作行为的更有效的方法。包括为用户创建角色,定义app权限,然后使这些权限试用于相应的角色。如果你想创建一个Moderator的角色,并允许分配给该角色的所有用户批准文章。

你也可以使用RBAC定义角色,它允许你在特定条件下,授权访问应用的某些方面的自定义规则。例如,你可以创建一个规则,即允许用户编辑自己的文章,而不是那些其他人创建的。

6、缩短开发时间

大多数项目都会涉及一定的重复任务,没有人愿意浪费时间。而Yii提供的一些工具可以帮助你减少在这些任务中所花费的时间,将更多的时间用于定制让客户满意的应用。

在这些工具中,其中有一个名为“Gii”的工具最为强大。Gii是一个基于web的基架代码工具,可以让你快速创建代码模板:

·模型

·控制器

·形式

·模块

·扩展

·CRUD控制器行为和视图

Gii是高度可配置的。你可以将其设置为仅在特定的环境下加载。只需简单编辑下你的web配置文件即可,方法如下:

if (YII_ENV_DEV) {
    // ...
    $config['modules']['gii'] = [
        'class' => 'yii\gii\Module',
        'allowedIPs' => ['127.0.0.1', '::1']
    ]
}

这样就可以确保党Yii的环境设置为开发的时候,Gii仅支持加载,并且它只通过本地主机访问时才会加载。

现在,让我们来看下模型生成器吧:


表名使用的是一个预输入控件,来试图猜测哪个表格与你的模型相关联,并且所有领域都有一个翻转工具,提示你如何填写出来。在用Gii生成它之前,你可以预览代码,并且所有代码模板是完全可以自定义的。

还有几个命令行工具可以帮你为你的自动化测试创建数据库迁移,信息翻译(I18N:国际化)和数据库fixtures 代码模板。例如,你可以使用如下命令创建一个新的数据库迁移文件:

yii migrate/create create_user_table

这将会在 {appdir}/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.\n";
 
            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);
}

然后,保证我可以反向迁移,下面我将添加down 方法:

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 数据缓存。

默认情况下,如果你正在使用Active Record,然后Yii会运行一个额外的查询,来确定表参与生成模型的架构。你可以通过编辑注配置文件设置应用程序,从而缓存这些架构:

return [
    // ...
    'components' => [
        // ...
        'db' => [
            // ...
            'enableSchemaCache' => true,
            'schemaCacheDuration' => 3600,
            'schemaCache' => 'cache',
        ],
        'cache' => [
            'class' => 'yii\caching\FileCache',
        ],
    ],
];

最后,Yii有一个命令行工具,使前端资源极简化更容易。只需运行以下命令来生成配置模板:

./yii asset/template config.php

然后,编辑该配置来指定工具,达到你想要的简化效果(如关闭编译器, YUI Compressor,或UglifyJS)。生成的配置模板,如下所示:

<?php     return [
        &#39;jsCompressor&#39; => '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' => '',
        ],
    ];

接着,运行此控制台命令来实现压缩:

'components' => [
    // ...
    'assetManager' => [
        'bundles' => require '/app/assets_compressed.php'
    ]
]

注意:你必须要手动下载和安装这些外部工具。

结论:

像任何一个好的框架一样,Yii能够帮助你快速创建流行的web应用,并确保它们可以做的很好。通过做许多繁琐的事情,它帮你你创建安全的和可测试的网站。你可以轻松的使用它提供的大部分功能,或者你也可以修改其中任何一个来适应你的需求。真心建议你在你的下一个web项目中考虑一下它!

위 내용은 yii 프레임워크를 선택하는 이유는 무엇인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 csdn에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
使用Yii框架创建电影网站使用Yii框架创建电影网站Jun 21, 2023 am 09:04 AM

随着互联网的普及以及人们对电影的热爱,电影网站成为了一个受欢迎的网站类型。在创建一个电影网站时,一个好的框架是非常必要的。Yii框架是一个高性能的PHP框架,易于使用且具有出色的性能。在本文中,我们将探讨如何使用Yii框架创建一个电影网站。安装Yii框架在使用Yii框架之前,需要先安装框架。安装Yii框架非常简单,只需要在终端执行以下命令:composer

Yii框架简介:了解Yii的核心概念Yii框架简介:了解Yii的核心概念Jun 21, 2023 am 09:39 AM

Yii框架是一个高性能、高扩展性、高可维护性的PHP开发框架,在开发Web应用程序时具有很高的效率和可靠性。Yii框架的主要优点在于其独特的特性和开发方法,同时还集成了许多实用的工具和功能。Yii框架的核心概念MVC模式Yii采用了MVC(Model-View-Controller)模式,是一种将应用程序分为三个独立部分的模式,即业务逻辑处理模型、用户界面呈

为什么Yii框架比其他框架更好用?为什么Yii框架比其他框架更好用?Jun 21, 2023 am 10:30 AM

Yii框架是一个高性能、可扩展、安全的PHP框架。它是一个优秀的开发工具,能够让开发者快速高效地构建复杂的Web应用程序。以下是几个原因,让Yii框架比其他框架更好用。高性能Yii框架使用了一些先进的技术,例如,延迟加载(lazyloading)和自动加载机制(automaticclassloading),这使得Yii框架的性能高于许多其他框架。它还提

Yii框架中的ViewState:实现数据保护Yii框架中的ViewState:实现数据保护Jun 21, 2023 am 09:02 AM

ViewState是ASP.NET中的一种机制,用于保护页面的隐私数据。而在Yii框架中,ViewState同样也是实现页面数据保护的重要手段。在Web开发中,随着用户界面操作的复杂度增加,前端与后端之间的数据传输也愈发频繁。但是,不可避免的会有恶意用户通过网络抓包等手段截获数据。而未加保护的数据可能含有用户隐私、订单信息、财务数据等重要资料。因此,加密传输

Yii框架中的队列:高效地处理异步操作Yii框架中的队列:高效地处理异步操作Jun 21, 2023 am 10:13 AM

随着互联网的快速发展,应用程序对于处理大量并发请求和任务变得越来越重要。在这样的情况下,处理异步任务是必不可少的,因为这可以使应用程序更加高效,并更好地响应用户请求。Yii框架提供了一个方便的队列组件,使得处理异步操作更加容易和高效。在本篇文章中,我们将探讨Yii框架中队列的使用和优势。什么是队列队列是一种数据结构,用于处理数据的先进先出(FIFO)顺序。队

Yii框架中的分页机制:优化数据展示效果Yii框架中的分页机制:优化数据展示效果Jun 21, 2023 am 08:43 AM

在现今互联网时代,数据的处理和展示对于各种应用而言都是至关重要的。对于一些数据量较大的网站,其展示效果直接影响用户体验,而优秀的分页机制可以使得数据展示更加清晰,提高用户的使用体验。在本文中,我们将介绍Yii框架中的分页机制,并探讨如何通过优化分页机制来改进数据展示效果。Yii框架是一种基于PHP语言的高性能、适用于Web应用的开发框架。它提供

Yii框架中的扩展:使用外部库Yii框架中的扩展:使用外部库Jun 21, 2023 am 10:11 AM

Yii是一款优秀的PHP框架,它提供了很多丰富的功能和组件来加快Web应用程序的开发。其中一个非常重要的特性就是可以方便地使用外部库进行扩展。Yii框架中的扩展可以帮助我们快速完成许多常见的任务,例如操作数据库、缓存数据、发送邮件、验证表单等等。但是有时候,我们需要使用一些其他的PHP类库来完成特定的任务,例如调用第三方API、处理图片、生成PDF文件等等。

Yii框架中的身份认证与授权:保障应用程序的安全性Yii框架中的身份认证与授权:保障应用程序的安全性Jun 21, 2023 am 09:57 AM

在Web应用程序开发领域,身份认证和授权是保障应用程序安全性必不可少的两个环节,而Yii框架提供了完善的身份认证和授权机制,帮助开发者轻松实现这些功能,保障应用程序的安全性。一、身份认证1.1基础认证Yii框架中的基础认证机制采用HTTPBasic认证的方式实现。当用户在浏览器中访问需要认证的页面时,服务器会发送一个401Unauthorized响应,

See all articles

핫 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를 무료로 생성하십시오.

뜨거운 도구

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구