ホームページ バックエンド開発 PHPチュートリアル Laravel 大規模プロジェクトチュートリアルシリーズ (6) 最適化、単体テスト、デプロイメント

Laravel 大規模プロジェクトチュートリアルシリーズ (6) 最適化、単体テスト、デプロイメント

Aug 08, 2016 am 09:29 AM
apache app error exception laravel

このチュートリアルでは、エラー処理、構成ファイルの使用、単体テスト、および Apache サーバーへのデプロイメントについて説明します。

1. エラー処理

ユーザーがアクセスした URL が存在しない場合、またはサーバーにエラーがある場合、エラー ページを返すのではなく、簡単にできるわかりやすいプロンプト ページを返したいと考えています。 Laravel で実装されている、Laravel 非常に単純なエラーとログの処理があります。サーバー側でエラーが発生した場合、app/start/global.php にはデフォルトですべての例外を処理する例外ハンドラーがあります。

<code><span>App</span><span>::error(function(Exception</span> $<span>exception</span>)
<span>{
    <span><span>Log</span>:<span>:<span>error($exception)</span></span></span>;
<span>}</span></span>);</code>
ログイン後にコピー
app/start/global.php里默认有一个处理所有异常的异常处理程序:
<code><span>$ </span>php artisan <span>generate:</span>view error</code>
ログイン後にコピー

它会把异常信息写到日志中,日志文件默认是app/storage/logs/laravel.log

如果要显示一个友好的错误提示页面,我们可以创建一个视图:

<code><span>@extends</span>(<span>'_layouts.default'</span>)

<span>@section</span>(<span>'main'</span>)
    Sorry, there <span>is</span> an error!
        <span>return</span> Index

<span>@stop</span></code>
ログイン後にコピー

修改error.blade.php

<code><span>return</span> Response<span>::view</span>(<span>'error'</span>, <span>array</span>(), <span>500</span>);</code>
ログイン後にコピー

App::error(function(Exception $exception)中增加:

<code>$ php artisan generate:view <span>not</span><span>Found</span></code>
ログイン後にコピー

现在当访问出现错误时,就会出现错误提示页面:

2.404处理

当访问的URL不存在时,我们也可以返回一个友好的提示页面,先创建一个视图:

<code><span>@extends</span>(<span>'_layouts.default'</span>)

<span>@section</span>(<span>'main'</span>)

    <span>Sorry</span>, the page you requested does <span>not</span> exist!
        <span>return</span><span>Index</span><span>@stop</span></code>
ログイン後にコピー

修改notFound.blade.php

<code>App::missing(<span><span>function</span><span>(<span>$exception</span>)</span>
{</span><span>return</span> Response::view(<span>'notFound'</span>, <span>array</span>(), <span>404</span>);
});</code>
ログイン後にコピー

app/start/global.php中增加:

<code><span>return</span><span>array</span>(
    <span>'page_size'</span> => <span>10</span>,
);</code>
ログイン後にコピー

现在当你访问的URL不存在时就会出现下面这样的页面:

3.配置文件

有时候我们可能需要一些事先就设定好的值,程序执行的时候只需要引用这个值,例如分页显示时每页显示的数量,我们可以使用配置文件,在Laravel中使用配置文件也很方便,我们可以在app/config下新建一个名为custom.php,在其中添加:

<code><span><span>class</span><span>MyTest</span><span>extends</span><span>TestCase</span> {</span><span>public</span><span><span>function</span><span>testIndex</span><span>()</span>
    {</span><span>$this</span>->call(<span>'GET'</span>, <span>'/'</span>);
        <span>$this</span>->assertResponseOk();
        <span>$this</span>->assertViewHas(<span>'articles'</span>);
        <span>$this</span>->assertViewHas(<span>'tags'</span>);
    }

    <span>public</span><span><span>function</span><span>testNotFound</span><span>()</span>
    {</span><span>$this</span>->call(<span>'GET'</span>, <span>'test'</span>);
        <span>$this</span>->assertResponseStatus(<span>404</span>);
    }
}</code>
ログイン後にコピー

现在你就可以在程序中使用了,把paginate(10)改成paginate(Config::get('custom.page_size')就行,其中custom对应app/config下的文件名,page_size对应相应配置文件中的键名,配置文件也可以根据你是开发环境还是生产环境进行不同的配置,详细的可以查看官方文档。

4.单元测试

在网站上线前,我们通常需要进行单元测试,Laravel提供了很方便的单元测试模块。我这里仅实现一个例子,我们可以先在app/tests下创建一个名为MyTest.php的文件,在里面定义一个名为MyTest的类,切记要继承TestCase类,然后就可以写测试代码了:

<code><span>"phpunit/phpunit"</span>: <span>"3.7.*"</span></code>
ログイン後にコピー

测试代码写完之后,我们需要安装一个phpunit组件,在composer.jsonrequire-dev中添加:

<code>$ <span>sudo</span> a2enmod rewrite</code>
ログイン後にコピー

然后composer update安装,完成后执行vendor/bin/phpunit,稍等一会就会出现测试结果,在我们测试的时候如果想要做一些初始化操作,例如数据库迁移和填充等,可以定义在setUp方法中,切记要先执行parent::setUp,测试完成之后如果想要恢复现场,可以在tearDown方法中进行,如果在测试的时候想要使用特定的配置文件,我们可以在app/config/testing目录下创建,测试时它会自动覆盖原来的配置。

5.部署至Apache

测试通过后,我们可以把网站部署到应用服务器了,在生产环境中,我们应该把app/config/app.php中的debug设为false。这里讲解怎么部署到Apache服务器上。首先声明我这里的LAMP环境是通过tasksel安装的,我们先安装mod_rewrite模块

<code>$ sudo chmod -R <span>777</span> /<span>var</span><span>/www/</span></code>
ログイン後にコピー

然后把/var/www目录的权限设为777,这个目录是存放网站的目录:

<code><span>$ </span>cd /var/www/
<span>$ </span>cp -r ~<span>/laravel-project/blog</span><span>/ .</span></code>
ログイン後にコピー

然后把我们开发的项目文件夹复制到这个文件夹中,我这里是blog文件夹:

<code><span>$ </span>cd blog/app/
<span>$ </span>chmod -<span>R</span><span>777</span> storage/</code>
ログイン後にコピー

上面的开发项目路径要跟你自己的一样,之后我们需要把app/storage目录的权限改为777,因为storage文件夹中会存放日志等,涉及到写操作:

<code>$ sudo vim /etc/apache2/sites-enabled/<span>000</span>-<span><span>default</span>.conf </span></code>
ログイン後にコピー

下面配置服务器:

<code>$ <span>sudo</span> vim /etc/apache2/apache2.conf</code>
ログイン後にコピー

DocumentRoot/var/www/html改成DocumentRoot /var/www/blog/public,再修改apache2.conf

<code>AllowOverride <span>all</span></code>
ログイン後にコピー

<code>Options Indexes FollowSymLinks
AllowOverride <span>None</span><span>Require</span><span>all</span> granted</code>
ログイン後にコピー

加到

<code>$ <span>sudo</span> service apache2 start</code>
ログイン後にコピー

之后,现在启动Apache服务器:

<code><span>$ </span>git clone <span>https:</span>/<span>/github.com/shiyanlou</span><span>/laravel-blog-6.git</span></code>
ログイン後にコピー
ログイン後にコピー

在浏览器中访问localhost或者127.0.0.1例外情報を処理してログに書き込みます。デフォルトのログ ファイルは app/storage/logs/laravel.log です。

わかりやすいエラー プロンプト ページを表示したい場合は、次のビューを作成できます:

rrreee🎜Modify error.blade.php: 🎜rrreee🎜In App::error(function( $Exception) に例外が追加されました: 🎜rrreee🎜 アクセス エラーが発生すると、エラー メッセージ ページが表示されます: 🎜🎜🎜🎜2.404 処理🎜🎜 アクセスされた URL が存在しない場合、わかりやすいプロンプト ページを返し、最初にビューを作成することもできます: 🎜rrreee🎜Modification notFound.blade.php: 🎜rrreee🎜 app/start/global.php に追加されました: 🎜rrreee🎜 アクセスした URL が存在しない場合、次のように表示されます次のようなページ: 🎜🎜🎜🎜3.ファイル 🎜🎜 場合によっては、プログラムの実行時に、ページング表示中に各ページに表示される数値を参照するだけで済みます。 Laravel で設定ファイルを使用するのも簡単です。便宜上、app/config の下に custom.php という名前の新しいファイルを作成し、次のように追加します。これをプログラムで使用するには、paginate(10) を paginate(Config::get('custom.page_size') に置きます。ここで、custom は <code>app/config に対応します。 および page_size の下のファイル名は、対応する構成ファイルのキー名に対応します。構成ファイルは、次のいずれかに応じて異なる構成にすることもできます。詳細については、公式ドキュメントをご覧ください。🎜🎜 Web サイトをオンラインにする前に、Laravel は非常に便利な単体テスト モジュールを提供します。ここでは例を実装するだけです。まず、app/tests という名前のファイルを作成し、MyTest という名前のクラスを定義します。 > その中で、TestCase クラスを継承することを忘れないでください。これで、テスト コードを書くことができます: 🎜rrreee🎜 テスト コードが書かれた後、phpunit をインストールする必要があります> コンポーネント、composer.jsonrequire-dev Add in code>: 🎜rrreee🎜 次に、<code>composer update をインストールします。 完了したら、 を実行します。 >vendor/bin/phpunit。しばらくすると、テスト結果が表示されます。データベースの移行や充填などの初期化操作を実行したい場合は、setUp で定義できます。 メソッドを使用します。テストが完了した後、シーンを復元したい場合は、tearDown で実行することを忘れないでください。 > メソッド。テスト中に特定の構成ファイルを使用したい場合は、それを app/config/testing ディレクトリに作成できます。テスト中に元の構成が自動的に上書きされます。 🎜🎜5. Apache へのデプロイ🎜🎜 テストに合格したら、運用環境では、app/config/app.php を配置する必要があります。 > debugfalse に設定されます。ここではApacheサーバーへのデプロイ方法を説明します。まず、LAMP 環境が tasksel を通じてインストールされていることを宣言します。まず mod_rewrite モジュール をインストールします: 🎜rrreee🎜 次に /var /www ディレクトリの権限は 777 に設定されています。このディレクトリは Web サイトが保存されているディレクトリです: 🎜rrreee🎜 次に、開発したプロジェクト フォルダーをこのフォルダーにコピーします。ここに があります。 blog フォルダー: 🎜rrreee🎜 上記の開発プロジェクトのパスは自分のものと同じである必要があります。次に、app/storage ディレクトリの権限を 777 に変更する必要があります。 >storage フォルダー 書き込み操作を含むログなどを保存します: 🎜rrreee🎜 以下のサーバーを構成します: 🎜rrreee🎜 DocumentRoot/var/www/htmlDocumentRoot / に変更します。 var/www/blog/public を変更し、apache2.conf を変更します: 🎜rrreee🎜 🎜rrreee🎜 を 🎜rrreee🎜 に追加した後、Apache サーバーを起動します: 🎜rrreee🎜Visit localhost または <code>127.0.0.1 から Web サイトが表示され、展開が完了しました。 🎜🎜6.まとめ🎜

本节教程讲了错误处理优化、配置文件的使用、单元测试以及怎么部署到Apache服务器,你可以买一个域名和一个服务器,最好买VPS云服务器,虚拟空间非常有局限性,然后把你自己写的网站部署到服务器让大家一起访问。

最后的代码下载:

<code><span>$ </span>git clone <span>https:</span>/<span>/github.com/shiyanlou</span><span>/laravel-blog-6.git</span></code>
ログイン後にコピー
ログイン後にコピー

本文详细出自http://www.shiyanlou.com/courses/123,转载请注明出处

以上就介绍了laravel大型项目系列教程(六)之优化、单元测试以及部署,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Laravelを学ぶ方法Laravelを無料で学ぶ方法 Laravelを学ぶ方法Laravelを無料で学ぶ方法 Apr 18, 2025 pm 12:51 PM

Laravelフレームワークを学びたいが、資源や経済的圧力に苦しんでいないのですか?この記事では、Laravelの無料学習を提供し、オンラインプラットフォーム、ドキュメント、コミュニティフォーラムなどのリソースを使用して、PHP開発の旅から習得するための堅実な基盤を築く方法を教えてくれます。

Laravel Frameworkインストール方法 Laravel Frameworkインストール方法 Apr 18, 2025 pm 12:54 PM

記事の概要:この記事では、Laravelフレームワークを簡単にインストールする方法について読者をガイドするための詳細なステップバイステップの指示を提供します。 Laravelは、Webアプリケーションの開発プロセスを高速化する強力なPHPフレームワークです。このチュートリアルは、システム要件からデータベースの構成とルーティングの設定までのインストールプロセスをカバーしています。これらの手順に従うことにより、読者はLaravelプロジェクトのための強固な基盤を迅速かつ効率的に築くことができます。

Laravelのバージョンは何ですか?初心者向けのLaravelのバージョンを選択する方法 Laravelのバージョンは何ですか?初心者向けのLaravelのバージョンを選択する方法 Apr 18, 2025 pm 01:03 PM

初心者向けのLaravel Frameworkバージョンの選択ガイドでは、この記事は、多くのバージョンの中で初心者が情報に基づいた選択を行うのを支援するように設計されたLaravelのバージョンの違いに分かれています。各リリースの主要な機能に焦点を当て、長所と短所を比較し、初心者がスキルレベルとプロジェクトの要件に基づいてLaravelの最も適切なバージョンを選択できるように便利なアドバイスを提供します。初心者の場合、Laravelの適切なバージョンを選択することは、学習曲線と全体的な開発経験に大きな影響を与える可能性があるため、重要です。

Laravelユーザーログイン機能 Laravelユーザーログイン機能 Apr 18, 2025 pm 12:48 PM

Laravelは、ユーザーモデル(Eloquentモデル)の定義、ログインフォームの作成(ブレードテンプレートエンジン)、ログインコントローラーの作成(認証\ログインコントローラーの継承)、ログイン要求の検証(Auth ::試行)の検証など、ユーザーログイン機能を実装するための包括的なAuthフレームワークを提供します。ヘッダー。さらに、AUTHフレームワークは、パスワードのリセット、電子メールの登録と検証などの機能も提供します。詳細については、Laravelのドキュメントを参照してください:https://laravel.com/doc

Laravelのバージョン番号を表示する方法は? Laravelのバージョン番号を表示する方法 Laravelのバージョン番号を表示する方法は? Laravelのバージョン番号を表示する方法 Apr 18, 2025 pm 01:00 PM

Laravelフレームワークには、開発者のさまざまなニーズを満たすためにバージョン番号を簡単に表示するための組み込みの方法があります。この記事では、Composer Command Lineツールの使用、.ENVファイルへのアクセス、PHPコードを介したバージョン情報の取得など、これらの方法について説明します。これらの方法は、Laravelアプリケーションのバージョン化の維持と管理に不可欠です。

LaravelとThinkPhpの違い LaravelとThinkPhpの違い Apr 18, 2025 pm 01:09 PM

LaravelとThinkPhpはどちらも人気のあるPHPフレームワークであり、開発における独自の利点と短所を持っています。この記事では、2つの深さを比較し、アーキテクチャ、機能、パフォーマンスの違いを強調して、開発者が特定のプロジェクトのニーズに基づいて情報に基づいた選択を行うのに役立ちます。

PHPフレームワークLaravelを使用する最新の方法 PHPフレームワークLaravelを使用する最新の方法 Apr 18, 2025 pm 12:57 PM

Laravelは、エレガントな構文と強力な機能で開発者の間で人気のあるPHPベースのWebアプリケーションフレームワークです。その最新バージョンは、開発エクスペリエンスとアプリケーションのパフォーマンスを向上させるために設計された多くの改善と新機能を紹介します。この記事は、Laravelの最新のアプローチに飛び込み、これらの更新を活用してより強力で効率的なWebアプリケーションを構築する方法に焦点を当てます。

Laravel vs. Python(フレームワーク付き):比較分析 Laravel vs. Python(フレームワーク付き):比較分析 Apr 21, 2025 am 12:15 AM

Laravelは、チームがPHPに精通しており、豊富な機能を必要とするプロジェクトに適していますが、Python Frameworksはプロジェクトの要件に依存します。 1.Laravelは、迅速な開発と柔軟性を必要とするプロジェクトに適したエレガントな構文とリッチな機能を提供します。 2。Djangoは、「バッテリー包含」の概念のため、複雑なアプリケーションに適しています。 3.Flaskは、高速プロトタイプや小規模プロジェクトに適しており、柔軟性が非常に高くなります。

See all articles