Yiiは、基本テンプレートや高度なテンプレートに含まれる機能を使用せずに簡単に使用できます。つまり、Yiiは既にマイクロフレームワークです。Yiiを使用するために、テンプレートによって提供されるディレクトリ構造は必要ありません。
これは、アセットやビューなど、事前に定義されたテンプレートコードをすべて必要としない場合に特に便利です。そのようなケースの1つは、JSON APIの構築です。以降のセクションでは、その方法を示します。
プロジェクトファイル用のディレクトリを作成し、作業ディレクトリをそのパスに変更します。例で使用されているコマンドはUnixベースですが、Windowsにも同様のコマンドが存在します。
mkdir micro-app
cd micro-app
注記:続行するには、Composerの知識が少し必要です。Composerの使い方をまだ知らない場合は、Composerガイドを読んでください。
好きなエディターを使用してmicro-app
ディレクトリの下にcomposer.json
ファイルを作成し、次を追加します。
{
"require": {
"yiisoft/yii2": "~2.0.0"
},
"repositories": [
{
"type": "composer",
"url": "https://asset-packagist.org"
}
]
}
ファイルを保存し、composer install
コマンドを実行します。これにより、すべての依存関係を含むフレームワークがインストールされます。
フレームワークをインストールしたら、アプリケーションのエントリポイントを作成します。エントリポイントは、アプリケーションを開こうとしたときに最初に実行されるファイルです。セキュリティ上の理由から、エントリポイントファイルを別のディレクトリに配置し、Webルートにすることをお勧めします。
web
ディレクトリを作成し、次の内容を含むindex.php
をその中に配置します。
<?php
// comment out the following two lines when deployed to production
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
require(__DIR__ . '/../vendor/autoload.php');
require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');
$config = require __DIR__ . '/../config.php';
(new yii\web\Application($config))->run();
また、アプリケーションの設定をすべて含むconfig.php
というファイルも作成します。
<?php
return [
'id' => 'micro-app',
// the basePath of the application will be the `micro-app` directory
'basePath' => __DIR__,
// this is where the application will find all controllers
'controllerNamespace' => 'micro\controllers',
// set an alias to enable autoloading of classes from the 'micro' namespace
'aliases' => [
'@micro' => __DIR__,
],
];
情報:設定は
index.php
ファイルに保持することもできますが、別々に持つことをお勧めします。こうすることで、以下に示すように、コンソールアプリケーションにも使用できます。
これでプロジェクトはコーディングの準備ができました。名前空間を遵守する限り、プロジェクトディレクトリ構造は自由に決めることができます。
controllers
ディレクトリを作成し、パス情報のないリクエストを処理するデフォルトのコントローラーであるSiteController.php
ファイルを追加します。
<?php
namespace micro\controllers;
use yii\web\Controller;
class SiteController extends Controller
{
public function actionIndex()
{
return 'Hello World!';
}
}
このコントローラーに別の名前を使用する場合は、名前を変更し、それに応じてyii\base\Application::$defaultRouteを設定します。たとえば、DefaultController
の場合は'defaultRoute' => 'default/index'
となります。
この時点で、プロジェクト構造は次のようになります。
micro-app/
├── composer.json
├── config.php
├── web/
└── index.php
└── controllers/
└── SiteController.php
ウェブサーバーをまだ設定していない場合は、ウェブサーバー設定ファイルの例を参照することをお勧めします。別のオプションとして、PHP組み込みのウェブサーバーを使用する`yii serve`コマンドを使用できます。これは`micro-app/`ディレクトリから実行できます。
vendor/bin/yii serve --docroot=./web
ブラウザでアプリケーションのURLを開くと、「Hello World!」が表示されます。これは`SiteController::actionIndex()`で返されたものです。
情報: この例では、デフォルトのアプリケーション名前空間`app`を`micro`に変更して、(そう思っていた場合に備えて)その名前に縛られていないことを示しています。その後、コントローラーの名前空間を調整し、正しいエイリアスを設定しました。
"micro framework"の使用法を示すために、投稿のためのシンプルなREST APIを作成します。
このAPIがデータを提供するには、まずデータベースが必要です。アプリケーション設定にデータベース接続設定を追加します。
'components' => [
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'sqlite:@micro/database.sqlite',
],
],
情報: ここでは簡潔にするためにsqliteデータベースを使用しています。その他のオプションについては、データベースガイドを参照してください。
次に、投稿テーブルを作成するためのデータベースマイグレーションを作成します。上記のように、別々の設定ファイルがあることを確認してください。以下のコンソールコマンドを実行する必要があります。以下のコマンドを実行すると、データベースマイグレーションファイルが作成され、マイグレーションがデータベースに適用されます。
vendor/bin/yii migrate/create --appconfig=config.php create_post_table --fields="title:string,body:text"
vendor/bin/yii migrate/up --appconfig=config.php
`models`ディレクトリと、そのディレクトリ内の`Post.php`ファイルを作成します。これがモデルのコードです。
<?php
namespace micro\models;
use yii\db\ActiveRecord;
class Post extends ActiveRecord
{
public static function tableName()
{
return '{{post}}';
}
}
情報: ここで作成されたモデルは、`post`テーブルのデータを表すActiveRecordクラスです。詳細については、アクティブレコードガイドを参照してください。
APIで投稿を提供するには、`controllers`に`PostController`を追加します。
<?php
namespace micro\controllers;
use yii\rest\ActiveController;
class PostController extends ActiveController
{
public $modelClass = 'micro\models\Post';
public function behaviors()
{
// remove rateLimiter which requires an authenticated user to work
$behaviors = parent::behaviors();
unset($behaviors['rateLimiter']);
return $behaviors;
}
}
この時点で、APIは次のURLを提供します。
/index.php?r=post
- すべての投稿をリストする/index.php?r=post/view&id=1
- IDが1の投稿を表示する/index.php?r=post/create
- 投稿を作成する/index.php?r=post/update&id=1
- IDが1の投稿を更新する/index.php?r=post/delete&id=1
- IDが1の投稿を削除するここから、アプリケーションをさらに開発するために、次のガイドを参照することをお勧めします。
タイプミスを見つけた場合、またはこのページの改善が必要と思われる場合は、
Githubで編集する !
コメントするにはサインアップするかログインしてください。