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.json
的require-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🎜Modifyerror.blade.php
: 🎜rrreee🎜In App::error(function( $Exception)
に例外が追加されました: 🎜rrreee🎜 アクセス エラーが発生すると、エラー メッセージ ページが表示されます: 🎜🎜
notFound.blade.php
: 🎜rrreee🎜 app/start/global.php
に追加されました: 🎜rrreee🎜 アクセスした URL が存在しない場合、次のように表示されます次のようなページ: 🎜🎜
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.json
の require-dev Add in code>: 🎜rrreee🎜 次に、<code>composer update
をインストールします。 完了したら、 を実行します。 >vendor/bin/phpunit
。しばらくすると、テスト結果が表示されます。データベースの移行や充填などの初期化操作を実行したい場合は、setUp で定義できます。
メソッドを使用します。テストが完了した後、シーンを復元したい場合は、tearDown
で実行することを忘れないでください。 > メソッド。テスト中に特定の構成ファイルを使用したい場合は、それを app/config/testing
ディレクトリに作成できます。テスト中に元の構成が自動的に上書きされます。 🎜🎜5. Apache へのデプロイ🎜🎜 テストに合格したら、運用環境では、app/config/app.php
に を配置する必要があります。 > debug
は false
に設定されます。ここではApacheサーバーへのデプロイ方法を説明します。まず、LAMP
環境が tasksel
を通じてインストールされていることを宣言します。まず mod_rewrite モジュール
をインストールします: 🎜rrreee🎜 次に /var /www ディレクトリの権限は 777 に設定されています。このディレクトリは Web サイトが保存されているディレクトリです: 🎜rrreee🎜 次に、開発したプロジェクト フォルダーをこのフォルダーにコピーします。ここに があります。 blog
フォルダー: 🎜rrreee🎜 上記の開発プロジェクトのパスは自分のものと同じである必要があります。次に、app/storage
ディレクトリの権限を 777 に変更する必要があります。 >storage フォルダー 書き込み操作を含むログなどを保存します: 🎜rrreee🎜 以下のサーバーを構成します: 🎜rrreee🎜 DocumentRoot/var/www/html
を DocumentRoot / に変更します。 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教程有兴趣的朋友有所帮助。

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

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

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

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

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

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

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

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


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

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

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

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

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

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