ホームページ >バックエンド開発 >PHPチュートリアル >[ Lumen 5.2 ドキュメント ] 入門 -- アップグレードガイド

[ Lumen 5.2 ドキュメント ] 入門 -- アップグレードガイド

WBOY
WBOYオリジナル
2016-06-23 13:16:591240ブラウズ

Lumen5.2 はステートレス API の提供のみに重点を置いているため、セッションを使用したい場合は Laravel 5.2 に切り替える必要があります。

Lumen 5.2 から Laravel 5.2 へのアップグレードは非常に簡単です。ルーティングとアプリケーションで作成したクラスを Laravel にコピーするだけです。Laravel と Lumen は多くの基礎となるコンポーネントを共有しているため、自分で作成したクラスであってもコピーする必要はありません。大きな変化。

1. 依存関係をアップグレードします

laravel/lumen-framework 5.2.* を指すように、composer.json ファイルを更新します

2. アプリケーション

Lumen は、このタイプの依存関係の宣言を実装しなくなりました直接参照の LaravelLumenApplication クラスに更新する必要があります。

認証

Lumen はセッションをサポートしなくなったため、認証は完全に API トークンまたはリクエスト ヘッダーに基づいています。 Lumen での認証の実装と使用については、完全な認証ドキュメントを参照してください。

コレクション

3. Eloquent コレクション基本クラス

Eloquent コレクション インスタンスは、次のメソッドを提供するコレクション基本クラス (IlluminateSupportCollection) を返すようになりました: pluck、keys、zip、collapse、 flatten、flip。

キーの保持

スライス、チャンク、リバース メソッドでコレクション内のキーを保持できるようになりました。これらのメソッドでキーを保持したくない場合は、Collection インスタンスで value メソッドを使用できます。

4. データベース

MySQL 日付

MySQL 5.7 以降、0000-00-00 00:00:00 は有効な日付とみなされなくなり、厳密モードがデフォルトでオンになり、すべてのタイムスタンプ フィールドが無効になります。データベースにレコードを挿入するときは、有効なデフォルト値を受け取る必要があります。移行で useCurrent メソッドを使用してタイムスタンプ フィールドを現在のタイムスタンプにデフォルト設定することも、nullable メソッドを呼び出して null 値を許可することもできます:

$table->timestamp('foo')->nullable();$table->timestamp('foo')->useCurrent();$table->nullableTimestamps();

MySQLJSON field type

MySQL 5.7 では json フィールドのサポートが開始されるため、json フィールド タイプで json フィールドを作成し、それをデータベースに保存できるようになりました。5.7 より前の MySQL バージョンを使用している場合は、テキスト フィールドを使用して json データをフィールドに保存する必要があります。 。

5、Eloquent

日付変換

$casts に追加される日付または日時としてマークされたすべての属性は、モデルまたはコレクションで toArray メソッドを呼び出すときに文字列に変換されるようになり、それによって $dates Date との一貫性が保たれます。配列で定義された変換は一貫性を保ちます。

グローバル スコープ

グローバル スコープの実装は、使いやすくするために書き直されました。そのため、作成したコード内でこのメソッドが呼び出された場合は、削除する必要があります。

基礎となるクエリ ビルダー インスタンスにアクセスするために Eloquent クエリ ビルダーで getQuery メソッドを呼び出した場合は、それを toBase に変更する必要があります。

remove メソッドを呼び出す場合は、それを $eloquentBuilder->withoutGlobalScope($scope) に変更する必要があります。

Eloquent クエリ ビルダーに withoutGlobalScope メソッドと withoutGlobalScopes メソッドが追加されました。 $model->removeGlobalScopes($builder) へのすべての呼び出しを、より単純な $builder->withoutGlobalScopes() に変更する必要があります。

主キー

デフォルトでは、Eloquent は主キーが整数であると想定し、整数ではない主キーを設定するには、Eloquent モデルで $incrementing 属性を設定する必要があります。 false:

/** * Indicates if the IDs are auto-incrementing. * * @var bool */public $incrementing = true;

6. 例外処理

AppExceptionsHandler クラスの $dontReport 属性には、少なくとも次の例外タイプが含まれる必要があります:

use Illuminate\Validation\ValidationException;use Illuminate\Auth\Access\AuthorizationException;use Illuminate\Database\Eloquent\ModelNotFoundException;use Symfony\Component\HttpKernel\Exception\HttpException;/** * A list of the exception types that should not be reported. * * @var array */protected $dontReport = [    AuthorizationException::class,    HttpException::class,    ModelNotFoundException::class,    ValidationException::class,];

7. IronMQ キュー ドライバーが移動されました。 IronMQ を使用するには、コア フレームワークは独自のパッケージにその処理を含めません。 http://github.com/LaravelCollective/iron-queue を参照してください。ファイルシステム バインディングを登録する必要があります。Tianjia 次のコードは bootstrap/app.php に移動します:
$app->singleton('filesystem', function ($app) {    return $app->loadComponent(        'filesystems',        Illuminate\Filesystem\FilesystemServiceProvider::class,        'filesystem'    );});

9. Validation

Lumen コントローラーの基本クラスで使用される ValidatesRequeststrait が Providesコンビニエンスメソッドストレートにマージされました。

以前にコントローラーの基本クラスの外で ValidatesRequeststrait を使用したことがある場合は、5.1 ブランチからコピーするか、Providesコンビニエンスメソッドストレートを直接使用できます。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。