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

このチュートリアルでは、エラー処理、構成ファイルの使用、単体テスト、および 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 までご連絡ください。
PHPの継続的な使用:その持久力の理由PHPの継続的な使用:その持久力の理由Apr 19, 2025 am 12:23 AM

まだ人気があるのは、使いやすさ、柔軟性、強力なエコシステムです。 1)使いやすさとシンプルな構文により、初心者にとって最初の選択肢になります。 2)Web開発、HTTP要求とデータベースとの優れた相互作用と密接に統合されています。 3)巨大なエコシステムは、豊富なツールとライブラリを提供します。 4)アクティブなコミュニティとオープンソースの性質は、それらを新しいニーズとテクノロジーの傾向に適応させます。

PHPおよびPython:類似点と相違点を調査しますPHPおよびPython:類似点と相違点を調査しますApr 19, 2025 am 12:21 AM

PHPとPythonはどちらも、Web開発、データ処理、自動化タスクで広く使用されている高レベルのプログラミング言語です。 1.PHPは、ダイナミックウェブサイトとコンテンツ管理システムの構築によく使用されますが、PythonはWebフレームワークとデータサイエンスの構築に使用されることがよくあります。 2.PHPはエコーを使用してコンテンツを出力し、Pythonは印刷を使用します。 3.両方ともオブジェクト指向プログラミングをサポートしますが、構文とキーワードは異なります。 4。PHPは弱いタイプの変換をサポートしますが、Pythonはより厳しくなります。 5. PHPパフォーマンスの最適化には、Opcacheおよび非同期プログラミングの使用が含まれますが、PythonはCprofileおよび非同期プログラミングを使用します。

PHPおよびPython:さまざまなパラダイムが説明されていますPHPおよびPython:さまざまなパラダイムが説明されていますApr 18, 2025 am 12:26 AM

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPとPython:彼らの歴史を深く掘り下げますPHPとPython:彼らの歴史を深く掘り下げますApr 18, 2025 am 12:25 AM

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

PHPとPythonの選択:ガイドPHPとPythonの選択:ガイドApr 18, 2025 am 12:24 AM

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

PHPとフレームワーク:言語の近代化PHPとフレームワーク:言語の近代化Apr 18, 2025 am 12:14 AM

PHPは、多数のWebサイトとアプリケーションをサポートし、フレームワークを通じて開発ニーズに適応するため、近代化プロセスで依然として重要です。 1.PHP7はパフォーマンスを向上させ、新機能を紹介します。 2。Laravel、Symfony、Codeigniterなどの最新のフレームワークは、開発を簡素化し、コードの品質を向上させます。 3.パフォーマンスの最適化とベストプラクティスは、アプリケーションの効率をさらに改善します。

PHPの影響:Web開発などPHPの影響:Web開発などApr 18, 2025 am 12:10 AM

phphassiblasifly-impactedwebdevevermentandsbeyondit.1)itpowersmajorplatformslikewordpratsandexcelsindatabase interactions.2)php'sadaptableability allowsitale forlargeapplicationsusingframeworkslikelavel.3)

スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?Apr 17, 2025 am 12:25 AM

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

See all articles

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

ホットツール

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SublimeText3 中国語版

SublimeText3 中国語版

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

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール