起源
私は PHP 言語を長年使用してきました。ここ数年、PHP を使用して大きなプロジェクトを開発することはありませんでしたが、小さな作業には PHP を使用するようになり、PHP の開発に注目していました。なぜ私は PHP 言語にこれほど興味を持ったのでしょうか?理由は 2 つあります:
PHP はオープンソース言語であり、その言語とライブラリは両方ともオープンソースです。また、PHP には成熟したオープンソース コミュニティがあり、テクノロジー開発者にとって大きなサポートとなります。PHP は完全に Web 開発向けの言語です。 PHP は Web 開発に重点を置いているため、この言語には Web 開発において他の言語では真似できない利点が与えられています。たとえば、PHP は軽量の Web Web サイトを作成できるだけでなく、大規模で過負荷な Web アプリケーションもサポートします。 PHP には、多くの汎用言語では対応できない明確で簡潔なソリューションが Web 上に数多くあります。たとえば、私が好きなもう 1 つのオープンソース言語である Python も、Web アプリケーションの開発に使用できます。しかし、Python の目標は明らかに Web 開発に限定されないため、Web 開発において Python は PHP よりも生産的ではありません。
上記は個人的な意見ですが、実用的なアプリケーションの観点から見ると、Web アプリケーションで最も人気のある言語は明らかに PHP です。多くの有名な Web サイトは PHP で構築されています。
私が過去数年間に経験した Web 開発は、依然として .Net プラットフォームに焦点を当てていました。そのため、PHP に関しては個人的な宝物に過ぎず、実用的なプロジェクトへの応用はあまりありません。しかし、今年から、オープンソース ソフトウェアのトレンドの発展に伴い、Web 上で PHP を使用するプロジェクトがますます増えています。私の友人の何人かは PHP プロジェクトを開発していますが、数年前には見るのが難しかったです。この変化を見ることができてとても嬉しいです。オープンソースの発展はソフトウェア業界の発展に大きな影響を与えることは間違いなく、より多くのより豊富なソフトウェアリソースが生産され、私たちはもはや「Wintel」の世界に直面することはなくなります、それは良いことです...
それでは、何年にもわたっていくつかの PHP 技術ノートが編集され、セルフ Web 開発への道の足がかりとして使用されてきました。この石を作る前は、私はちょっとした PHP 愛好家でしたが、この石の後は、PHP テクノロジーをより深く探究し、PHP の世界で一生懸命働くつもりです。
PHP基本構文の印象PHPはアプリケーション指向の言語です。複数の言語からインスピレーションを得ており、多くの言語的特異性が含まれています。したがって、C、C++、Java などの言語に慣れている人にとって、PHP 言語は習得しやすい言語です。そして、最も直接的な埋め込み方法の 1 つを使用します??。この埋め込み方法は、HTML および XHTML との接触を最大限に維持し、エンジニアリングの観点から非常に経済的です。このため、その年に PHP が登場すると、MS はこのメソッドを IIS に導入し、ASP 言語を開発することができました。
もちろん、直接埋め込み方法には多くの問題がありますが、最も重要なのは拡張できないことです。小規模な HomePage なら問題ありませんが、複数人のチームで運用する Web アプリケーションは困難です。 PHP は C/C++ から include メソッドを借用し、include、require、require_once などのキーワードに基づいて複数ドキュメントの関連付けを実行します。 PHP4/5 では、フロントエンドとバックエンドの分離がより重視され、MVC デザイン パターンが Web プログラムの構築に使用されます。長年の開発を経て、PHP 言語は大規模な Web プログラムを開発できるようになりました。
PHP 言語の中核は次のようにあるべきだと思います:
ライブラリとフレームワーク: C/C++ の経験を引用すると、ライブラリ学習は PHP の中核です。 PHP には、Core と Extend という 2 種類のライブラリがあります。コア ライブラリの文字列操作、配列操作、日付操作、正規表現操作は慎重に検討する必要があります。これらのライブラリの多くは Web UI に基づいており、Web プログラムの入出力は非常に重要なテクノロジであり、多くの作業が必要になります。ユーザーエクスペリエンスやその他の問題を含む、セキュリティと安定性の問題。拡張ライブラリは開発に便利です。 PHP には、PECL 拡張や PEAR 拡張、あるいは sf.net 上の多数の PHP プログラム モジュールなど、豊富な拡張ライブラリ リソースがあり、それらはすべて調査して学ぶことができる財産です。 Smarty や Drupal など、一部の成熟したライブラリまたはプログラムは安定したフレームワークになっています。これらのフレームワークを使用すると、プロジェクト開発の速度と品質が大幅に向上し、これらのフレームワークを読むと、PHP スキルが大幅に向上します。ライブラリとフレームワークに時間とエネルギーを費やすことが最も価値があります。 OOP の開発と設計パターン: OOP の設計は PHP5 までサポートされていませんでしたが、PHP4 では「コールバック関数 (callback function)」を使用してクラスの動的モデルをシミュレートできます。今や OOP 開発は基礎技術となっており、複数人で行う大規模なプロジェクトプログラムであっても、1 人で行う小規模なプログラムであっても、OOP 方式で実行する必要があります。 PHP の最も単純なコールバック関数は、以下に示すように関数変数です。
過去数年間に蓄積した PHP テクノロジーのいくつかを分類しました。主なものは次のとおりです。
文字列ライブラリ: Java と .Net にも同様の文字列処理関数ライブラリがあります。Unicode 文字処理ライブラリ、mbstring 拡張ライブラリ、配列処理: C/C++ とは異なり、PHP 配列処理テクノロジは非常に複雑であり、密接に関連しています。ページの効率化に。たとえば、 shuffle() または array_rand() を使用して要素をランダムに抽出し、配列を走査するために for の代わりに foreach を使用してみてください。さらに重要なのは、PHP 配列が構成オブジェクトとストレージ オブジェクトの役割を果たすことです。多くのライブラリやフレームワークを使用する前に、構成配列をカスタマイズした構成に設定する必要があります。その効率はサーバーとネットワーク環境に関連している可能性があります。したがって、PHP プログラムのテストでは、クライアント側の Javascript をタイミングに使用する必要があります。これは、PHP サーバー側のタイミングと比較するとより便利です。 正規表現とサーバー変数: PHP では、攻撃を防ぐために正規表現とサーバー変数が使用されます。 HTTP アクセスをフィルタリングおよび検証するための最も基本的なツール。私のアプローチは、開発前に正規表現とサーバー変数に基づいて myFilter クラスを開発することです。このクラスは、情報をフィルタリングし、最も基本的な保護機能を実現するために使用されます。 DB/PDO や ADODB などの抽象化レイヤー ライブラリを十分に理解していること。これにより、データベースプログラムの移植性が向上する。私が ADODB を選択した主な理由は、.Net アーキテクチャとの類似性と、Python をサポートする機能です。 セッション管理: Web2 環境では、セッションよりも Cookie 管理の方が重要です。 PHP プロジェクトのコア ビジネス ステップでは、Ajax は使用されず、セッションが管理に使用されます。その他の非コア ビジネス (主にクエリ) では、Cookie メソッドを使用して一部の Javascript プログラムを Cookie に送信できます。これは非常に役立ちます。顧客体験の向上のために。 国際化とローカリゼーション: PHP プロジェクトでは Utf-8 エンコーディング (ページとデータ) に従う必要があり、プログラム UI を作成するときは、多言語サポートのために gettext 拡張ライブラリを使用する必要があります。私のアプローチは、Drupal フレームワークに基づいて PHP を開発し、国際化とローカライゼーションのために Drupal が提供する t 関数を最大限に活用することです。 キャッシュと暗号化: PHP には優れたキャッシュ テクノロジと暗号化テクノロジがあり、関連ライブラリには ob_ ライブラリ、MD5、SHA1、Cracklib 拡張ライブラリ、mycrypt 拡張ライブラリなどがあります。キャッシュおよび暗号化テクノロジを使用すると、特にコア データ処理において、システム パフォーマンスを効果的に向上させることができます。ユーザーエクスペリエンスに関しては、私は Ajax テクノロジーとテストおよびデータマイニング作業の組み合わせに重点を置いています。PHP には画像処理のための優れた技術ソリューションがあり、GD2、Ming、ImageMagick はすべて良い選択肢です。