PHP+Java 開発経験: オブジェクト指向になりすぎない_PHP チュートリアル
オブジェクト指向と言えば、現在多くの言語にいくつかのオブジェクト指向があります。 Java は伝統的なオブジェクト指向言語であり、PHP にもある程度のオブジェクト指向がありますが、あまり優れていません。特定のプロジェクト (この記事は Web 開発プロジェクトです) では、完全にオブジェクト指向であることが最善の選択ではない場合があります。この記事の著者は最終的に PHP+Java のモデルを選択し、彼自身の経験のいくつかを共有しました。
私は高校時代に C++ に触れ、より早くオブジェクト指向の考え方を受け入れました。オブジェクト指向の考え方は人間の考え方に近く、カプセル化や継承などの機能により一部の作業が簡素化されることがよくあります。最も重要なことは、アイデアがより明確に見えることです。私はオブジェクト指向の考え方を強く信じていましたが、ある日、WEB プロジェクトで混乱してしまいました。
私の以前の仕事も WEB 開発に関連しており、通常、プロジェクトはインターフェイス、実装、サービス層、DAO 層でした。時間が経つにつれて、私はこのパターンに慣れてきました。その後、私は自分のウェブサイトを作成し始めました(自分で運営します)が、これもこのモデルに従いました。それを取り出して実行できるようになるまでに時間がかかり、問題が発生しました。ご存知のとおり、ポータルのようなもの、特に成長段階にある Web サイトは、しばしば変更や拡張に直面することがあります。これは、書かれたプログラムのセットを継続的に使用できる、安定モードで動作するエンタープライズ プロジェクトや Web サイトとは異なります。しかし、JAVAのものを変更するのは少し面倒です。
第一: プロジェクトでは多くのインターフェースが使用されており、ビジネスの変更時にインターフェースに触れる必要が生じることがよくあります。 需要が満たされていないからだと言う人もいるかもしれません。そうお考えになるかもしれませんが、前提があります。需要は 1 つのステップで満たすことができません。そうしないと、需要分析が完了すると、花は枯れてしまいます。この古典的なプロセスを思い出してください。機能を追加するには、まずサービス インターフェイスを追加または変更し、次に必要に応じて DAO レイヤー インターフェイスを追加または変更します。に対応します。最終的には実装を追加または変更する必要がありますが、実際に変更したいのは単なる SQL ステートメントであることがよくあります。
この一連の作業が面倒です。ポータルサイトは基本的に情報を表示し、そのビジネスロジックは基本的にSQL文に反映されます。考えてみてください、Web サイトに何が表示されているか、それをどのように並べ替えるか、どのように集計するか、これらはすべて対応する SQL ステートメントに対応しているのではないでしょうか?基本的な追加、削除、変更として DAO 層を記述し、その後、本来 SQL ステートメントに対応するビジネス ロジックを実装するためにサービス層で大騒ぎする必要があるとしたら、一体何の意味があるのでしょうか?純粋にレイヤリングのためのレイヤリングですか?オブジェクト指向のためのオブジェクト指向?インターフェースが山積みになると、作業負荷が無駄に増加することは言うまでもありません。もちろん、プログラミング的思考におけるインターフェイスの重要性を否定するつもりはありませんが、従来の JAVA WEB プログラミングにおける一連のインターフェイスは本当に合理的なアプリケーションなのでしょうか?多くの場合はそうではないと思います。その後、PHP を使用してプロジェクト内の関数の大部分を書き直しました。これには、階層化やインターフェイスを使用せずに、わずか数日しかかかりませんでした。これによる作業効率の向上は本当に嬉しいですね!
2 番目: JAVA WEB プロジェクトのリリースでは通常、サービスの再起動が必要となり、WEB 操作が中断されます。 ホット デプロイメントが最終的にどのレベルに到達できるかはわかりませんが、ファイルがいつでも変更でき、いつでも有効になる PHP とは異なると思います。サービスを中断しないように、通常はクラスターを形成し、順番にリリースすることを選択します。これによって依然として問題が発生する可能性がありますが、アプリケーションを中断するよりははるかに優れています。ただし、クラスタリングすると公開時に問題が発生するため、クラスタ自体が本当に必要なものではない可能性があります。
それに伴う小さな問題もいくつかあります。たとえば、プロジェクトに多数のファイルを保存するフォルダーが含まれている場合、公開するときにそれらに特別に対処する必要があり、非常に不快です。ソフトリンクを作成したとしても、公開する際には必然的に余分な作業が必要になります。もちろん、これらの問題にはもっと良い解決策があると信じており、個人的にはまだ模索中です。
上記の問題に直面して、私はついにオブジェクト指向に固執するのをやめました。プロジェクトを PHP 以前および Java 以降の形式に変更しました。 PHP はフロントエンドとしてははるかに柔軟であるようで、リビジョン全体では PHP のロジック部分にはあまり時間がかからず、すべての時間を Java バックエンドが安定性と効率性を確保するために費やされました。簡単に安全に設計できます。ここから、私はついに「あまり面と向かってしないでください」という感嘆の声を発しました。他人の考えに従うことは、カルトに参加することと何ら変わりません。
JAVA バックエンド部分については、プラグインのホット ロードと削除ができるプラグイン ベースの CMS バックエンド システムをまだ検討中です。ああ、上記の理由から、棒で人を殴り殺すことはできません。
しかし、何はともあれ、著者の説明を読んだ後は、PHP と Java の組み合わせを試してみるとよいでしょう。オブジェクト指向を放棄することでどのようなメリットがもたらされるかを見てみましょう。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











この AI 支援プログラミング ツールは、急速な AI 開発のこの段階において、多数の有用な AI 支援プログラミング ツールを発掘しました。 AI 支援プログラミング ツールは、開発効率を向上させ、コードの品質を向上させ、バグ率を減らすことができます。これらは、現代のソフトウェア開発プロセスにおける重要なアシスタントです。今日は Dayao が 4 つの AI 支援プログラミング ツールを紹介します (すべて C# 言語をサポートしています)。皆さんのお役に立てれば幸いです。 https://github.com/YSGStudyHards/DotNetGuide1.GitHubCopilotGitHubCopilot は、より少ない労力でより迅速にコードを作成できるようにする AI コーディング アシスタントであり、問題解決とコラボレーションにより集中できるようになります。ギット

Go 言語開発モバイル アプリケーション チュートリアル モバイル アプリケーション市場が活況を続ける中、ますます多くの開発者が Go 言語を使用してモバイル アプリケーションを開発する方法を検討し始めています。シンプルで効率的なプログラミング言語として、Go 言語はモバイル アプリケーション開発でも大きな可能性を示しています。この記事では、Go 言語を使用してモバイル アプリケーションを開発する方法を詳しく紹介し、読者がすぐに始めて独自のモバイル アプリケーションの開発を開始できるように、具体的なコード例を添付します。 1. 準備 始める前に、開発環境とツールを準備する必要があります。頭

世界初の AI プログラマー Devin の誕生から 1 か月も経たない 2022 年 3 月 3 日、プリンストン大学の NLP チームはオープンソース AI プログラマー SWE-agent を開発しました。 GPT-4 モデルを利用して、GitHub リポジトリの問題を自動的に解決します。 SWE ベンチ テスト セットにおける SWE エージェントのパフォーマンスは Devin と同様で、平均 93 秒かかり、問題の 12.29% を解決しました。専用端末と対話することで、SWE エージェントはファイルの内容を開いて検索したり、自動構文チェックを使用したり、特定の行を編集したり、テストを作成して実行したりできます。 (注: 上記の内容は元の内容を若干調整したものですが、原文の重要な情報は保持されており、指定された文字数制限を超えていません。) SWE-A

Android 開発は多忙で刺激的な仕事であり、開発に適した Linux ディストリビューションを選択することが特に重要です。数多くある Linux ディストリビューションの中で、Android 開発に最適なのはどれでしょうか?この記事では、この問題をいくつかの側面から検討し、具体的なコード例を示します。まず、現在人気のある Linux ディストリビューション (Ubuntu、Fedora、Debian、CentOS など) をいくつか見てみましょう。これらにはそれぞれ独自の利点と特徴があります。

MySQL クエリ結果の配列をオブジェクトに変換する方法は次のとおりです。 空のオブジェクト配列を作成します。結果の配列をループし、行ごとに新しいオブジェクトを作成します。 foreach ループを使用して、各行のキーと値のペアを新しいオブジェクトの対応するプロパティに割り当てます。新しいオブジェクトをオブジェクト配列に追加します。データベース接続を閉じます。

Go 言語は、高速で効率的なプログラミング言語として、バックエンド開発の分野で広く普及しています。ただし、Go 言語をフロントエンド開発と結びつける人はほとんどいません。実際、フロントエンド開発に Go 言語を使用すると、効率が向上するだけでなく、開発者に新たな視野をもたらすことができます。この記事では、フロントエンド開発に Go 言語を使用する可能性を探り、読者がこの分野をよりよく理解できるように具体的なコード例を示します。従来のフロントエンド開発では、ユーザー インターフェイスの構築に JavaScript、HTML、CSS がよく使用されます。

大規模モデルの継続的な最適化に基づいて、LLM エージェント - これらの強力なアルゴリズム エンティティは、複雑な複数ステップの推論タスクを解決する可能性を示しています。自然言語処理から深層学習に至るまで、LLM エージェントは徐々に研究や業界の焦点になりつつあります。LLM エージェントは、人間の言語を理解して生成するだけでなく、戦略を策定し、多様な環境でタスクを実行し、API 呼び出しやコーディングを使用して構築することもできます。ソリューション。この文脈において、AgentQuest フレームワークの導入はマイルストーンであり、LLM エージェントの評価と進歩のためのモジュール式ベンチマーク プラットフォームを提供するだけでなく、研究者にこれらのエージェントのパフォーマンスを追跡および改善するための強力なツールも提供します。より細かいレベル

「VSCode について: このツールは何に使用されますか?」 》初心者でも経験豊富な開発者でも、プログラマーとしてはコード編集ツールを使わずにはいられません。数ある編集ツールの中でも、Visual Studio Code (略して VSCode) は、オープンソースで軽量かつ強力なコード エディターとして開発者の間で非常に人気があります。では、VSCode は正確に何に使用されるのでしょうか?この記事では、VSCode の機能と使用法を詳しく説明し、読者に役立つ具体的なコード例を提供します。
