目次
コードライブラリの移行
Laravelアプリケーションでは、主に統合テストを実施して、リクエストハンドラーが正しい応答を返すかどうかを確認します。全体的なテストカバレッジは非常に低いです。これは、主に緊密なカップリングのためであり、これが主に私自身の欠点です。同じアプリを2回目に書くことはここで役立ちます。
なぜPHPから行くために移行することを検討する必要があるのですか?
PHPから移動するのはどれくらい難しいですか?
私が行くことを学ぶのに役立つリソースは何ですか?
PHPで行うようにWeb開発に行くことはできますか?
PHPと比較して、Go Goはどのように並行性を処理しますか?
PHPとGOのパフォーマンスの違いは何ですか?
大規模で複雑なプロジェクトに適していますか?
GoのコミュニティとエコシステムはPHPとどのように比較されますか?
PHPから移動する際にどのような課題が発生する可能性がありますか?
ホームページ バックエンド開発 PHPチュートリアル PHPからGOにジャンプする:冒とく、勇敢な、または常識?

PHPからGOにジャンプする:冒とく、勇敢な、または常識?

Feb 10, 2025 am 11:51 AM

Jumping from PHP to Go: Blasphemy, Bravado or Common Sense?

コアポイント

  • PHPからのBoxzillaアプリケーションの基礎となるLaravelアプリケーションは、最初は潜在的なビジネスリスクを抱えているにもかかわらず、より効率的なパフォーマンス、展開、より高いテストカバレッジを備えています。
  • GOは、PHPよりも優れた標準ライブラリを備えたコンパイルされた言語であり、外部依存関係が考慮されていても、コードの行が少ないより速く、より少ないアプリケーションを生成できます。 PHPからGOへの変換は、新しい構文と機能に適応する必要がありますが、最終結果は価値があると考えられています。
  • PHPのより大きなコミュニティと豊富なリソースにもかかわらず、GOの人気、シンプルさ、優れたパフォーマンス機能の高まりにより、開発者がコンバージョンを検討することが強力な競争相手になります。著者は、将来、多数の開発者がPHP、Python、JavaScriptなどの動的にタイプされた言語から移行して行くと予測しています。

PHPからGoへの移行に関するこの記事は、もともと他の場所で公開され、著者の許可を得てここで再現されました。


Jumping from PHP to Go: Blasphemy, Bravado or Common Sense?

今年の初めに、私は間違いなく悪いビジネス上の決定を下しました。

しかし、私はそれを後悔していません。

Jumping from PHP to Go: Blasphemy, Bravado or Common Sense?

わずか数週間後、GOアプリを展開しました。数ヶ月で最も幸せな時間でしたが、私は多くのことを学び、古いアプリケーションよりも大幅に改善されました。

アプリケーションは、ユーザーがログインして製品をダウンロードしたり、請求書を表示したり、支払い方法を更新したりできるかなりシンプルなデータベース駆動型APIおよびアカウントエリアです。

StripeとBraintreeは、サブスクリプションの支払いを受け入れるために使用されます。請求書はMoneyBirdを使用して処理され、一部のトランザクションメールはMailGunを使用して送信されます。

Laravelは十分に走っていますが、私は常にいくつかのことが複雑すぎると感じています。そして、数か月ごとにリリースされている新しい「メイン」バージョンで何が起こっているのでしょうか?新しいバージョンに大幅な改善が含まれている場合は幸せですが、私の意見では、多くの場合、名前とディレクトリ構造にいくつかの小さな変更を加えます。

なぜGOを選ぶのですか?

昨年、私はいくつかのサービスを移動するように移動したので、私は言語に完全に新しいものではありませんでした。 WordPressベースの製品を販売している開発者として、私の仕事の一部は、エンドユーザーに焦点を当てた古いテクノロジースタックに対処することです。

私が自営業者でなければ、この「セクシーな」テクノロジーの欠如を補うために新しい仕事を申請します。私自身の上司として、より多くの直接的な利益を追求するだけでなく、私の毎日の仕事を楽しくすることは私の責任です。収入が許可されている(そしてそうする)場合、なぜ楽しんでみませんか?

Goコードを書くことは、驚くべきツールを備えた快適なものであり、迅速な開発だけでなく、最終結果は通常非常に高速です。 GOプロジェクトの目的を読んで、この言語に恋をしました。

今後数年間で、PHP、Python、JavaScriptなどの動的にタイプされた言語から移動するのはかなりの数の人々が行くと思います。

コードライブラリの移行

Golangへのコードの移行には、主にデータベースインタラクションを正しく行い、BladeテンプレートをGOで使用できるものに移植することが含まれます。

ormは常に私の邪魔をするので、シミュレート可能なデータアクセスレイヤーと通常のSQLクエリを選択しました。 Meddlerは、クエリの結果を構造にスキャンするいくつかのボイラープレートコードを削除するために使用されます。

レイヤードテンプレートと部分的なテンプレートをサポートするために、Goの標準HTML/テンプレートパッケージの周りの小さなラッパーであるオープンソースGreenerです。これにより、同じ階層と部分テンプレートを使用できるため、Bladeテンプレートファイルを比較的簡単に移動することができます。

Stripeとの統合については、公式のStripe-goパッケージがあります。 Braintreeの場合、しばらく見落とされてきたが、最近新しい注目を集めている非公式のBraintree-Goパッケージがあります。 MoneyBirdで請求書を管理するためのGoパッケージはないので、私はMoneyBird-go-Goを組み立ててオープンしました。

リンゴとオレンジを比較

Goはコンパイルされた言語であり、その標準ライブラリはPHPよりもはるかに優れているため、私がやろうとしている2つの言語を比較することは公平ではありません。とはいえ、いくつかの数字を共有するのは楽しいと思います。

パフォーマンス

WRKは、両方のアプリケーションでいくつかの簡単なHTTPベンチマークを実行するために使用され、ログインページのHTMLを返します。

sconrency番号 平均遅延 リクエスト/second 転送/second

laravel 13.87ms261.48 1.27mb laravel100108.86ms917.276.04MB 1 325.72μs7365.4834.27mb 11.63ms 19967.31 92.91MB go 200 37.68ms 22653.22 105.41MB

残念ながら、「ユーザー」の数を100以上に増やすと、Laravelアプリケーション(またはPHP-FPMソケット)がクラッシュし続けます。

NetDataは、サーバーがそのような負荷に耐える方法を確認するために、次のチャートを提供します。

言語に行くと、同時接続の数は100 laravel、同時接続の数は100 アプリケーションが実行されるのと同じマシンからベンチマークを実行するため、これは両方のチャートに深刻な影響を与えることに注意してください。

コードの行の数Jumping from PHP to Go: Blasphemy, Bravado or Common Sense?

すべてのベンダー依存関係を含む、両方のアプリケーションのコードの行の数を比較しましょう。

Laravelバージョンには、156,000行以上のコードが含まれています。これには、Laravelがテストなどを実行するために必要な開発依存関係は含まれません。

一方、Golangバージョンには33,000行のコードが含まれています。これは、同じ関数コードの5分の1です。
<code>find . -name '*.php' | xargs wc -l
156289 total
</code>
ログイン後にコピー

Laravelアプリケーションの外部依存関係を除外して、実際に書いたコードの行の数を知るようにしましょう。

<code>find . -name '*.go' | xargs wc -l
33624 total
</code>
ログイン後にコピー
ゴーランの場合。

コードの管理行列の数のみを表示する場合、結果はよりバランスが取れます。それでも、それは同じ機能を備えたアプリケーションであり、コードの量が半分です。

<code>find . -name '*.php' -not -path "./vendor/*" | xargs wc -l
13921 total
</code>
ログイン後にコピー
テストカバレッジ

Golangでは、テストは一流の市民であり、テストファイルは実際のソースファイルの横にあります。

<code>find . -name '*.go' -not -path "./vendor/*" | xargs wc -l
6750 total
</code>
ログイン後にコピー

これにより、アプリケーションテスト駆動型開発が非常に便利になります。

Laravelアプリケーションでは、主に統合テストを実施して、リクエストハンドラーが正しい応答を返すかどうかを確認します。全体的なテストカバレッジは非常に低いです。これは、主に緊密なカップリングのためであり、これが主に私自身の欠点です。同じアプリを2回目に書くことはここで役立ちます。

tldr

<code>license.go
license_test.go
subscription.go
subscription_test.go</code>
ログイン後にコピー
私はあなたが決してすべきではないことをしました:私はそのように感じたので、私は別の言語でアプリを書き直しました。その結果、より小さく、より速いアプリととても楽しいものになります。

PHPからGO

への移行に関するよくある質問

PHPとGOの主な違いは何ですか?

PHPとGOはどちらも強力なプログラミング言語ですが、いくつかの重要な違いがあります。 PHPは主にWeb開発に使用されるスクリプト言語であり、Goは効率とシンプルさを改善するために設計された静的に型付けられたコンパイルされた言語です。 GOは、スピードとメモリの使用量で優れたパフォーマンスを提供し、そのシンプルさと強いタイプされた性質のために維持しやすくなります。ただし、PHPにはコミュニティが大きく、より利用可能なリソースがあり、学習と使用が容易になります。

なぜPHPから行くために移行することを検討する必要があるのですか?

PHPからGOに移行することを検討する理由はいくつかあります。 GOは優れたパフォーマンスを提供します。これは、高速と効率を必要とするアプリケーションにとって重要です。また、よりシンプルで直接的であり、コードを維持しやすくすることができます。さらに、GOは同時プログラミングを強くサポートしています。これは、一部のタイプのアプリケーションにとって大きな利点になる可能性があります。

PHPから移動するのはどれくらい難しいですか?

PHPから移行することの難しさは、プログラミングの概念に精通していることと、新しい言語を学ぶ意欲によって異なります。 Goのデザインはシンプルで理解しやすいですが、適応するのに時間がかかるユニークな機能がいくつかあります。ただし、ある程度の努力と実践により、ほとんどの開発者は変換を完了できるはずです。

私が行くことを学ぶのに役立つリソースは何ですか?

あなたが行くことを学ぶのに役立つ多くのリソースがあります。公式GO Webサイトには包括的なチュートリアルとドキュメントが提供されており、利用可能なオンラインコースとチュートリアルがたくさんあります。さらに、GOコミュニティは積極的で協力的であり、質問をして助けを得ることができる多くのフォーラムやディスカッショングループがあります。

PHPで行うようにWeb開発に行くことはできますか?

はい、Web開発にはGoを使用できます。 GOには、Webアプリケーションを簡単に構築できるようにするネット/HTTPパッケージが組み込まれており、GOに利用できるWebフレームワークがいくつかあります。ただし、GOは共通言語であることを忘れないでください。そのため、PHPなどのWeb開発には特別に使用されていません。

PHPと比較して、Go Goはどのように並行性を処理しますか?

Goは、PHPよりも主な利点の1つである同時プログラミングを強くサポートしています。 GoのGoroutineとチャンネルにより、同時コードの書き込みが簡単になり、言語の設計により、このコードの効率とセキュリティが保証されます。対照的に、PHPには組み込みの並行性サポートはありませんが、他のツールやライブラリを使用して実装できます。

PHPとGOのパフォーマンスの違いは何ですか?

GOは通常、PHPよりも優れたパフォーマンスを提供します。これはコンパイルされた言語です。つまり、マシンのハードウェアで直接実行されるため、実行時間が短縮されます。 GOには、より効率的なメモリ管理システムもあり、メモリの使用量を削減できます。ただし、小規模で単純なアプリケーションでは、パフォーマンスの違いは明らかではない場合があることを忘れないでください。

大規模で複雑なプロジェクトに適していますか?

はい、大規模で複雑なプロジェクトに適しています。そのシンプルさと強力なタイプされた機能により、大きなコードベースを維持しやすくなり、パフォーマンス機能により、高負荷アプリケーションに適しています。さらに、同時プログラミングに対するGOのサポートは、高レベルの並列性を必要とするプロジェクトにとって大きな利点になる可能性があります。

GoのコミュニティとエコシステムはPHPとどのように比較されますか?

PHPには、より大きなコミュニティとより利用可能なリソースがあり、学習と使用を容易にします。ただし、GOコミュニティは急速に成長しており、すでに多くのライブラリとツールが利用可能です。さらに、GOのシンプルさとパフォーマンスの特性により、多くのハイテク企業の間で人気があり、成長する生態系にも貢献しています。

PHPから移動する際にどのような課題が発生する可能性がありますか?

新しい構文やプログラミングパラダイムの学習、ゴロウチンやチャネルなどのGOのユニークな機能に適応し、ニーズに合った適切なライブラリとツールを見つけるなど、PHPからGOに移行する際には、いくつかの課題があるかもしれません。しかし、これらの課題は、ある程度の努力と適切なリソースで克服することができます。

以上がPHPからGOにジャンプする:冒とく、勇敢な、または常識?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

PHPでの安全なパスワードハッシュ(例:Password_hash、password_verify)を説明します。 MD5またはSHA1を使用してみませんか? PHPでの安全なパスワードハッシュ(例:Password_hash、password_verify)を説明します。 MD5またはSHA1を使用してみませんか? Apr 17, 2025 am 12:06 AM

PHPでは、Password_hashとpassword_verify関数を使用して安全なパスワードハッシュを実装する必要があり、MD5またはSHA1を使用しないでください。 1)password_hashセキュリティを強化するために、塩値を含むハッシュを生成します。 2)password_verifyハッシュ値を比較して、パスワードを確認し、セキュリティを確保します。 3)MD5とSHA1は脆弱であり、塩の値が不足しており、最新のパスワードセキュリティには適していません。

PHPとPython:2つの一般的なプログラミング言語を比較します PHPとPython:2つの一般的なプログラミング言語を比較します Apr 14, 2025 am 12:13 AM

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

アクション中のPHP:実際の例とアプリケーション アクション中のPHP:実際の例とアプリケーション Apr 14, 2025 am 12:19 AM

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

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

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

PHPの永続的な関連性:それはまだ生きていますか? PHPの永続的な関連性:それはまだ生きていますか? Apr 14, 2025 am 12:12 AM

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。

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

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

PHPでのSQL注入をどのように防止しますか? (準備された声明、PDO) PHPでのSQL注入をどのように防止しますか? (準備された声明、PDO) Apr 15, 2025 am 12:15 AM

PHPで前処理ステートメントとPDOを使用すると、SQL注入攻撃を効果的に防ぐことができます。 1)PDOを使用してデータベースに接続し、エラーモードを設定します。 2)準備方法を使用して前処理ステートメントを作成し、プレースホルダーを使用してデータを渡し、メソッドを実行します。 3)結果のクエリを処理し、コードのセキュリティとパフォーマンスを確保します。

PHPおよびPython:コードの例と比較 PHPおよびPython:コードの例と比較 Apr 15, 2025 am 12:07 AM

PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。

See all articles