目次
PHP 用 Yii 2 フレームワーク、yii フレームワークの開発上の利点を列挙します
ホームページ バックエンド開発 PHPチュートリアル PHP の Yii 2 フレームワークの開発上の利点をリストする、yii Framework_PHP チュートリアル

PHP の Yii 2 フレームワークの開発上の利点をリストする、yii Framework_PHP チュートリアル

Jul 13, 2016 am 09:47 AM
php フレーム

PHP 用 Yii 2 フレームワーク、yii フレームワークの開発上の利点を列挙します

私たちは、Yii フレームワークがまだ RC (リリース候補) 段階にあったとき、つまり完全にリリース候補段階に達したばかりのときに、Yii フレームワークについて報告しました (現在は正式バージョンがリリースされました) このトピック、つまり Yii フレームワークを選択した理由について、もう一度議論する時期が来たと感じています。

1. インストールが簡単

Web 開発者にとって、時は金なりであり、複雑なインストールと構成のプロセスに貴重な時間を費やしたい人はいません。

インストールは Composer を使用して処理されます。インストール プロセスについて説明したい場合は、Sitepoint が最近ここで素晴らしい記事を公開しました。 Web サイトにフロントエンドとバックエンドのコンポーネントが分かれている場合でも、私は基本的なアプリケーション テンプレートを使用することが多いです。代わりに、Web サイトのバックエンド部分にモジュールを使用することにしました。 (Yii モジュールは、メインアプリケーション内に存在するミニアプリケーションとして説明するのが最も適切です)。

注: 以下の例では、単純なテンプレートからディレクトリ構造の使用まで、多くのディレクトリ参照が使用されています。

2. 最新のテクノロジーを活用する

Yii は純粋なオブジェクト指向フレームワークであり、遅延静的バインディング、SPL クラスとインターフェイス、匿名関数などの PHP のより高度な機能を利用しています。

すべてのクラスの名前空間。PSR-4 準拠のオートローダーを利用できます。これは、Yii の HTML ヘルパー クラスをインクルードするのは次のように簡単であることを意味します:

リーリー

Yii では、名前空間を簡素化するためにエイリアスを定義することもできます。 上記の例では、 use ステートメントは、デフォルトでディレクトリ /vendor/yiisoft/yii2/helpers に配置されるクラス定義をロードします。このエイリアスは、BaseYii クラスの 79 行目で定義されています。

リーリー

フレームワーク自体は拡張機能である Composer を使用してインストールされます。 拡張機能を公開するプロセスも、独自のcomposer.jsonを作成してコードをGithubにホストし、拡張機能をPackagistにリストするだけで簡単です。

3. 高い拡張性

Yii は見栄えの良いスーツのように見えますが、フレームワークのほぼすべてのコンポーネントは拡張可能です。簡単な例は、一意のプリンシパル ID をビューに追加することです。 (これを行う理由に興味がある場合は、この記事を読んでください)。

まず、appcomponents ディレクトリに View.php という名前のファイルを作成し、次のコードを追加します。


リーリー
次に、メイン レイアウト ファイル (appviewslayoutsmain.php) の body タグ内の HTML に次のコードを追加します。

リーリー
最後に、次のコードをメイン設定ファイルに追加して、Yii に独自のデフォルト クラスの代わりに拡張ビュー クラスの使用方法を知らせます。

リーリー


4. テストを奨励する

Yii フレームワークと Codeception フレームワークは緊密に統合されています。 Codeception は、単体テストと機能受け入れテストの作成プロセスを簡素化するのに役立つ優れた PHP テスト フレームワークです。 すべてのアプリケーションの自動テスト ケースを作成しているとします。 Codeception 拡張機能を使用すると、テスト中にアプリケーションを簡単に構成できます。 アプリケーションをテストするには、既存のファイル /tests/_config.php を編集するだけです。例:

リーリー

上記の構成を使用する場合は、次の点に注意する必要があります:

機能受け入れテスト中、送信されたすべての電子メールは実際に送信されるのではなく、ファイルに書き込まれて保存されます。

テスト中の URL の形式は、/controller/action ではなく、index.php/controller/action です。
  • テスト時には、運用データベースの代わりにテスト データベースを使用する必要があります。
  • Codeception には、Yii フレームワークのテストに特別に使用される特別なモジュールが含まれています。 これは、Active Record (Yii の ORM) が機能テスト中に適切に動作できることを保証するために、TestGuy クラスにいくつかのメソッドを追加します。 たとえば、登録フォームがユーザー名 testuser の User オブジェクトを正常に作成したかどうかを確認したい場合は、次のようにすることができます:
リーリー



5. 簡素化されたセキュリティ ソリューション


セキュリティはあらゆる Web アプリケーションの重要な部分であり、幸いなことに Yii には負担を軽減するための優れた機能が数多くあります。 Yii は、より安全なアプリケーションの作成に役立ついくつかのメソッドを公開するセキュリティ アプリケーション コンポーネントを提供します。より便利なメソッドのいくつかは次のとおりです。 generatePasswordHash: パスワードとランダムなソルトから安全なハッシュを生成します。このメソッドはランダムなソルトを作成し、PHP の crypt 関数を使用して指定された文字列に基づいてハッシュを作成します。

validatePassword: これは、generatePasswordHash とともに使用できるメソッドで、ユーザーが提供したパスワードが保存したハッシュ値と一致するかどうかを確認できます。

generateRandomKey: リバーシブルを使用すると、任意の長さのランダムな文字列を作成できます

Yii 会自动对所有非安全 HTTP 请求方法 (PUT, POST, DELETE) 的可用CSRF令牌进行检查, 并将在你使用 ActiveForm::begin() 方法创建你的开发表单标签时生成并输出一个令牌值. 这个特性可以通过编辑你的主配置文件,包含下面的代码来禁用:
 

  return [
    'components' => [
      'request' => [
        'enableCsrfValidation' => false,
      ]
  ];
ログイン後にコピー

为了堤防跨站脚本XSS的攻击,Yii提供了另外一个叫做 HtmlPurifier 的辅助类. 这个类有一个名为 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' => ['@']
        ]
      ]
    ];
  }
  // ...
}
ログイン後にコピー


上面的代码会告诉 DefaultControllerto 让访客用户访问login和view的action, 而不是create这个action. (问号 ? 是匿名用户的别名, 而 @ 表示的是已经被授权的用户).

RBAC 是一个可以在应用程序中指定那些用户可以执行特定的动作的强大方法. 它涉及为你的用户创建角色,为你的app定义权限,并然后为他们预期的角色使用这些角色. 如果你想要创建一个审核员(Moderator)的角色就可以使用这个方法, 并可以让所有分配到这个角色的用户可以对文章进行审核.

你也还可以使用 RBAC 定义规则, 它可以让你在特定条件下针对你应用程序的某些方面进行授权. 例如,你可以创建一个规则让用户可以编辑他们自己的文章, 而不能修改由其他人创建的文章.

6. 缩短开发时间

大多数的项目都包含了重复的任务,没有人想把时间浪费在这些重复工作上面。Yii 提供了一些工具来帮助你在这些任务上花费更少的时间,把大多数时间都用在定制应用来满足你客户的需求上。

其中最强大的一个工具就是“Gii”。Gii是一个基于web脚手架代码工具,它可以让你快速的创建一个代码模板如下所示:

  • Models
  • Controllers
  • Forms
  • Modules
  • Extensions
  • CRUD controller actions and views

Gii是高度可配置的。你可以设置它只从一个特定的环境加载。简单的编辑web配置文件如下:

 
if (YII_ENV_DEV) {
  // ...
  $config['modules']['gii'] = [
    'class' => 'yii\gii\Module',
    'allowedIPs' => ['127.0.0.1', '::1']
  ]
}
ログイン後にコピー

这确保了Gii只有设置了Yii的环境变量为(development)开发环境时才加载,并且只在通过本地环境访问的时候加载。


现在,让我们来看看模型的生成:

201573142815193.jpg (1366×914)

表格名称使用了一个响应敲击就会显示的小窗口来尝试给出对你的模型将会关联的表格的猜测, 并且所有的域值输入框都会有一个翻转效果显示出来的提示,提醒你如何完成对它们的填写. 你可以在让Gii输出代码之前先进行一下预览, 而所有的代码模板都是完全可定制的.

也有几个可以用于数据库迁移、消息翻译(I18N)以及生成用于自动化测试数据库道具的命令行辅助工具. 例如,你可以使用如下代码创建一个新的数据库迁移 文件:

yii migrate/create create_user_table
ログイン後にコピー

这将会在 {应用目录}/migrations 创建一个新的看起来像下面这样的迁移模板:

<&#63;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 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). 生成的配置模板如下所示:

<&#63;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
ログイン後にコピー

最后,修改你的web应用程序配置文件,使用压缩后的资源.

'components' => [
  // ...
  'assetManager' => [
    'bundles' => require '/app/assets_compressed.php'
  ]
]
ログイン後にコピー

注意: 你需要手动下载并安装这些额外的工具.

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1026547.htmlTechArticle列举PHP的Yii 2框架的开发优势,yii框架 当 Yii框架仍处于 RC(候选版)阶段时,我们 对它进行过报道,那时它刚刚全面达到候选版本阶段,...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホット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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

今まで知らなかったことを後悔している 7 つの PHP 関数 今まで知らなかったことを後悔している 7 つの PHP 関数 Nov 13, 2024 am 09:42 AM

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

母音を文字列にカウントするPHPプログラム 母音を文字列にカウントするPHPプログラム Feb 07, 2025 pm 12:12 PM

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? Apr 03, 2025 am 12:03 AM

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。

See all articles