📜  yii2 语言 (1)

📅  最后修改于: 2023-12-03 14:48:41.095000             🧑  作者: Mango

Yii2语言简介

Yii2

什么是Yii2?

Yii2是一种基于PHP语言开发的Web应用程序框架。它是一个高度模块化,高性能的Php框架,其提供了诸如MVC,懒加载,I18N/L10N,数据库访问(Active Record),缓存,自动验证等丰富的功能。

为什么使用Yii2?

Yii2框架提供了许多功能,这些功能能够大大降低Web应用程序开发的时间和成本。以下是一些使用Yii2的好处:

  • 高性能:Yii2的性能比其他流行的PHP框架的性能更高,这是由其优化和缓存机制所决定的。

  • 简单易用:Yii2框架被设计成简单易用的,这就使得Yii2更易于学习和使用。

  • MVC功能:Yii2采用了MVC的开发模式,其中模型负责数据处理,视图负责显示数据,控制器则负责逻辑控制。

  • 数据库访问:Yii2通过Active Record机制使得数据库的访问更加容易。

  • 安全性:Yii2框架提供了许多安全性方面的特性,如CSRF保护、XSS过滤、input验证等等。

Yii2的安装

Yii2框架的安装可以通过以下步骤来完成:

  1. Yii2采用Composer进行安装,确保你已经安装好Composer。
composer create-project --prefer-dist yiisoft/yii2-app-basic <your_project_name>
  1. 安装完成之后,进入项目文件夹
cd your_project_name
Yii2应用程序结构

来看一下Yii2应用程序的应用结构:

your_project_name/                  应用程序根目录
    vendor/                         composer包目录
    assets/                         存放应用程序提供的资源文件
    commands/                       控制台命令文件目录
    config/                         应用程序配置文件目录
        console.php                 控制台配置文件
        web.php                     web应用程序配置文件
    controllers/                    控制器文件目录
    mail/                           邮箱布局文件目录
    models/                         模型文件目录
    runtime/                        应用程序运行时目录
    tests/                          应用程序测试目录
    views/                          视图文件目录
    web/                            静态页面资源目录
        assets/                     静态页面资源文件目录
        index.php                   入口文件

在Yii2应用程序中,入口文件为web/index.php,从这里可以开始分发Web请求和返回响应的处理。

Yii2应用程序基础
Yii2路由

Yii2的路由方式非常简单,在路由文件(config/web.php)中进行配置即可。以下是一个简单的路由配置示例:

return [
    'id' => 'app',
    'basePath' => dirname(__DIR__),
    'components' => [
        'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [
                'site/<action>' => 'site/<action>',
            ],
        ],
    ],
];

在该配置示例中,路由将会在site/之后获取一个处理动作参数,它会将其转发到SiteController的特定行动中,其类名为SiteController。

class SiteController extends Controller
{
    public function actionIndex()
    {
        return $this->render('index');
    }

    public function actionAbout()
    {
        return $this->render('about');
    }

    public function actionContact()
    {
        return $this->render('contact');
    }
}
Yii2控制器和视图

Yii2中的控制器和视图是实现MVC模式的重要组成部分。在Yii2应用程序中,控制器是处理Web请求的层,视图定义了Web页面的外观和更新逻辑。

以下是一个简单视图的示例:

<h1><?= Html::encode($this->title) ?></h1>

<?php if (Yii::$app->session->hasFlash('contactFormSubmitted')): ?>

<div class="alert alert-success">
    Thank you for contacting us. We will respond to you as soon as possible.
</div>

<?php else: ?>

<div class="row">
    <div class="col-lg-5">

        <?php $form = ActiveForm::begin(['id' => 'contact-form']); ?>

            <?= $form->field($model, 'name')->textInput(['autofocus' => true]) ?>

            <?= $form->field($model, 'email') ?>

            <?= $form->field($model, 'subject') ?>

            <?= $form->field($model, 'body')->textarea(['rows' => 6]) ?>

            <?= $form->field($model, 'verifyCode')->widget(Captcha::className(), [
                'template' => '<div class="row"><div class="col-lg-3">{image}</div><div class="col-lg-6">{input}</div></div>',
            ]) ?>

            <div class="form-group">
                <?= Html::submitButton('Submit', ['class' => 'btn btn-primary', 'name' => 'contact-button']) ?>
            </div>

        <?php ActiveForm::end(); ?>

    </div>
</div>

<?php endif; ?>
Yii2模型

Yii2应用程序中的模型用于处理与应用程序相关的业务逻辑。以下是一个简单的模型类的示例:

class ContactForm extends Model
{
    public $name;
    public $email;
    public $subject;
    public $body;
    public $verifyCode;

    public function rules()
    {
        return [
            [['name', 'email', 'subject', 'body'], 'required'],
            ['email', 'email'],
            ['verifyCode', 'captcha'],
        ];
    }

    public function attributeLabels()
    {
        return [
            'verifyCode' => 'Verification Code',
        ];
    }

    public function contact($email)
    {
        if ($this->validate()) {
            Yii::$app->mailer->compose()
                ->setTo($email)
                ->setFrom([$this->email => $this->name])
                ->setSubject($this->subject)
                ->setTextBody($this->body)
                ->send();

            return true;
        } else {
            return false;
        }
    }
}

由上述示例代码可以看出,模型参数的声明是可选的,然而,每个模型必须要实现rules()方法,该方法定义了模型的验证规则。

Yii2组件

Yii2框架还提供了大量的组件,这些组件都可以被导入并使用其中的方法或属性。以下是Yii2中常用的一些组件:

  • 缓存(Cache): 可以使用缓存组件将数据存储在内存或其他缓存设备中,以避免重复执行一些操作和加快代码进行。

  • 数据库(Database): Wrapper for database ORM models, including migrations and database schema analysis.

  • 视图(View): 可以使用该组件生成网页的HTML代码,亦可以像Twig等模板引擎一样赋值。

  • 邮件(Mailer): 可以方便的进行邮件发送,例如注册成功之后的欢迎邮件等。

Yii2插件

由于Yii2框架的高度可扩展性,许多插件和扩展配件可用于扩展应用程序已有功能,以及添加新的功能。以下是为Yii2框架设计的一些插件:

  • User管理: 提供用户登录注册,密码重置等功能。

  • PHP Debug Bar: 显示了处理请求及每个请求花费的时间,每次响应发送的MySQL查询数及总执行时间,页面中包含的最大内存和当前占用的内存等信息。

  • Yii Gii: 提供Web界面,用于生成ActiveRecord,Model,Controller等代码,生成的代码会遵循Yii2框架的标准命名及最佳实践。

Yii2总结

Yii2是一款功能强大且简单易用的基于PHP语言的Web应用程序开发框架。在Yii2应用程序的开发过程中,开发者可以使用各种功能强大且灵活的组件和插件,以及其良好的MVC支持、内置缓存和Active Record等功能。以上这些,都会让Web应用程序的开发变得更加容易和高效。