ホームページ >バックエンド開発 >PHPチュートリアル >ZendEngine2.0_PHP チュートリアルのドラフト設計図から PHP の将来を展望するのは、あなたが予想したことですか?
雑感 まず、この記事を書いた当初の意図。 Zend Engine 2.0 に関する設計図ドキュメントを入手してからしばらく経ちました (参考資料のアドレスからダウンロードして参照することもできます)。それを読んだ後、レビューを書きたくなったのです。ドキュメントへ 次世代の PHP の記述は、既存のオブジェクト指向開発習慣により沿った言語となり、少なくともより多くのオブジェクト指向機能が与えられることになります。しかし、それに伴う疑問は、迅速な Web 開発を当初の目標とする PHP のような言語が、包括的なものになるようにそれ自体を修正する価値があるかどうかということです。この問題については、いくつかのレビュー記事で議論する必要があると思われるので、私自身の意見を述べてみたいと思います。しかし、色々なことがあり、その衝動が少しずつお腹に戻ってきて、最近になって初めてそのことを思い出し、設計図の資料を何度も読み返してこの記事を思いつきました。 (最初にこの英語の文書を入手したとき、私はこの設計図文書を中国語に翻訳する予定でしたが、第一に、これは最終的な設計図ではないこと、第二に、全員が原文を直接読む習慣を身につける必要があること、第三に、翻訳は常に不明確になるため、当面はあきらめます。ただし、この記事を書いたとき、私はそれを「危険を冒して」翻訳することにしました。もしあれば、お気軽に修正してください。意味が正確に伝わりません。) 2 つ目は、この記事の焦点の説明です --このレビューでは、主に、今後 PHP で大幅に強化されるオブジェクト指向の機能についてレビューします。あなたが PHP 開発者であれば、PHP 言語のオブジェクト指向機能のいくつかを知っているはずだと思いますが、PHP は一般に「非常に高速な開発環境」で使用されるため (これは私が自分で作った造語で、一部の顧客を指します)指向の Web サイト開発は、構築期間が非常に短く、顧客の要件が不明確であることが特徴です)。そのため、そのオブジェクト機能を実際に広範囲に使用する開発者や開発プロジェクトは多くありません。また、既存の PHP オブジェクト モデルは、C++ や C++ に比べて比較的弱いです。 Java の弱点により、この機能の使用も制限されます。ただし、PHP の将来のバージョンでは、言語のオブジェクト指向モデルに焦点が当てられ、既存のバージョンの多くの悪い機能が改善され、他の機能が追加される予定です。したがって、PHP の将来について説明する場合は、PHP のオブジェクト指向機能について説明することに重点を置きます。 さて、本題に取り掛かり、Zend Engine 2.0 の新機能を見てみましょう。 Zend Engine 2.0 の設計図 (草案) の要約 設計図 (草案) から、次世代の Zend Engine が新しいオブジェクト指向モデルに基づいていることが非常に明確にわかります。既存の PHP 4 のオブジェクト指向機能を使用したことがある場合は、Java または C++ を少し見つけると少しぎこちなく感じるかもしれません。オブジェクト指向構文がないだけでなく、予期しない結果が得られることもあります。結果 - これはすべて、PHP 4 をサポートする既存の Zend Engine 1.0 のオブジェクト指向モデルがあまり洗練されていないためです。 簡単に言えば、次世代の Zend Engine は Java に近づき、そのオブジェクト指向モデルを大きく活用することになります。改善された機能の種類から判断すると、3 つのカテゴリに分類できます。 1 つ目のカテゴリは、ビルダーとデストラクターの定義、プライベート メンバー変数と静的メンバーの追加を含む、既存のオブジェクト指向モデルの改良と強化です。変数、多重継承、オーバーロードなどのオブジェクト指向の機能。2 番目のカテゴリは、try/catch/throw 例外処理メカニズムの追加など、制御プロセスの変更、追加です。 、文字列オフセットの Increment 関数などの関数の削除。 (各タイプの改善の詳細については、参考資料に記載されているドキュメントを参照してください。) 1 番目と 2 番目のタイプの改善を通じて、PHP がオブジェクト指向プログラミング言語として徐々に改善されていることがわかります。 しかし、ここで問題が発生します。良い面として、オブジェクト指向機能を備えた言語は、今日のプログラミングの世界ではより歓迎されています (言語自体がオブジェクト指向ベースで構築されていない場合でも、追加することで改善できます) - この意味で、Zend Engine 2.0 は、PHP のオブジェクト指向サポートを現在の暫定的なサポートから将来の完全サポートに変更します。これは、より一致していると思われます。プログラミング言語の開発傾向に加えて、エンタープライズレベルのアプリケーションを構築する場合 (これは現在、PHP がよく批判されています)、オブジェクト指向のモデリングと実装の使用が事実上の標準になっており、PHP のこの改善により、このニーズに応え、この分野における言語自体の弱点に対処します。 マイナス面としては、より Java に近い PHP の新しいバージョンを開発者に提供することにほとんど意味がないようです。 PHP が広く使用されている理由は、オープン ソース コードとクロスプラットフォームに加えて、おそらく、インターネット Web サイト構築の単純かつ高速な Web プログラミングの特性に適応するための重要なポイントでもあります。非常に短い学習時間、フレンドリーな言語スタイル (特に C に精通している場合)、および多数の拡張クラス ライブラリ関数は、その言語の強力さを証明するのに十分ですが、そのような言語の次のバージョンが同様のオブジェクトに変換されると、多くの既存の開発者が短期間で挫折するだけでなく、新しい開発者を引き付ける上でも非常に悪影響を及ぼします。Java のような言語があるのに、なぜわざわざ PHP を学ぶ必要があるのでしょうか。 上記は私自身の「客観的」分析の一部です。いわゆる「客観的」とは、肯定的な側面について書くとき、否定的な側面について書くときは Zend Engine 2.0 の忠実な支持者であるように装うことを意味します。その逆です(私の分析を読んで客観的に感じていただければ幸いです)。しかし、「客観的」という言葉は、実際には私の「主観的」な議論、つまり問題の鍵となるものへの道を開くだけであり、PHP は将来どのようになるのでしょう? 実際、問題の鍵は、PHP がどの方向に発展すると予想されるか、あるいは PHP がどの分野に焦点を当てるかにあるかもしれません。 PHP がこれほど人気がある理由は、商用サポートがほとんどないときに ASP や JSP と競合できるようになったためです (現在、Zend は PHP をサポートしていますが、その強みは Microsoft や Sun に比べて微々たるものです)。は、現実世界の高速 Web プログラミング環境を完全に指向しています。この状況は、多くの PHP チュートリアルではっきりと見られます。いくつかの一般的な Web 関数を実装するには、PHP を使用すると、多くの場合、コードと複雑さが軽減されます。同時に、特定の分野のプログラミングでは、PHP には拡張モジュールの機能も利用できます。 (商用サポートはありませんが、PHP は多くのオープンソース ソフトウェアの支持者からサポートを受けています。彼らは PHP の生成と開発に貢献しただけでなく、さまざまな拡張モジュール機能も提供しました。)、非常に便利です。言い換えれば、開発者にとって、すぐに使える無料の関数ライブラリが増えれば、必要なのは関数マニュアルを参照して適切に使用することだけです。 PHP の競合製品は少し「衒学的」なようです。柔軟性が十分ではなく、厳密性が高いのかもしれません。おそらく、大手営利企業の製品はハッカーの傑作ほど使いやすくはありません。 しかし、実際の高速な Web プログラミング環境に適応するために、PHP は利便性と使いやすさを重視していくつかのことを放棄しました。たとえば、開発者独自のモジュール (非ソース コード レベル) の記述とパッケージ化、オブジェクト指向の機能 (既存のバージョンは一部の機能を完全にサポートしていない) など - PHP に欠けているものは、競合他社にあるものです (たとえば、ASP は COM コンポーネントと通信でき、JSP は Java Beans を簡単に使用できます。JSP は以下から生まれました) Java などの完全なオブジェクト指向言語など)そのため、PHP はエンタープライズ レベルのアプリケーションを構築するための候補リストから除外されることがよくあります。 問題の核心は比較的明らかになってきました。PHP の現在の開発は分かれ道に直面しています。高速 Web プログラミング言語としての特性を最大限に発揮し続けるべきなのか、それとも、それ自体を改良してプログラミング言語として修正すべきなのかです。深刻なビジネス環境のニーズに適応する言語? 正確には、Zend Engine 2.0 の設計図から判断すると、PHP の作成者と保守者は後者の戦略を選択したようです。解釈エンジンのオブジェクト指向モデルをほぼ書き直し、オブジェクトを強化します。言語の特徴の指向性。個人的には、この選択には一定の理由があると考えています。PHP は高速 Web プログラミングにうまく適応しているようで、既存の言語アーキテクチャに基づいてこの点を大幅に変更することは不可能です (できることは変更することだけです) 、いくつかのコア関数を追加または削除し、さらに拡張関数ライブラリを段階的に追加します)、PHP は開発する必要があります... J ほとんどの人は PHP の限界を認識しており、その作成者と保守者はさらに認識しています - PHP が得られるかどうかエンタープライズレベルのアプリケーションでの牽引力はさらに大きな勝利となるでしょう (おそらく、オープンソース ソフトウェアの支持者にとってはさらに大きな勝利となるでしょう)。この分野での競争力を向上させる近道は、Zend Engine 2.0 の設計図に示されているものかもしれません。これは、この比較的伝統的なプロセス指向言語に新しいオブジェクト指向モデルを追加し、開発者がオブジェクト指向プログラミング手法を簡単に採用できるようにするものです。 しかし、エンタープライズレベルのコンピューティングの分野に参入しようとしている PHP には、まだ不十分な点が多すぎるのが残念です。商業的なサポートが十分ではなく、多数の拡張モジュールが実験段階にあり、そのうちのいくつかは改良が必要です。エンタープライズ レベルのアプリケーションで重要なタスクを実行するために使用されるシステム アーキテクチャなどの計画とサポートが不十分であり、おそらく最も重要なのは、ビジネス コミュニティの概念が商用サポートされているプログラミング言語ではなくオープン ソースを受け入れることができるかどうかです。商用システム全体を構築することです (Linux アプリケーションには良い見通しが見えていますが、それは単なる見通しにすぎません)。楽観的な PHP 支持者 (私のような) でさえ、青写真に記載されているように Zend Engine 2.0 が発売された後でも、エンタープライズ コンピューティングでの PHP の使用には依然として懐疑的です。 したがって、私は Zend Engine 2.0 を使用する PHP の新しいバージョンにはあまり期待していません。そのアプリケーションは依然として、インターネット Web サイトなどの高速 Web プログラミング環境にあり、重要なビジネス システムを構築するための主要なサポート言語として PHP を選択する必要があります。非常に慎重です。Zend Engine 2.0 はオブジェクト指向機能の強化に重点を置いていますが (おそらく PHP の作成者や保守者もオブジェクト指向機能の使用を強く推奨するでしょう)、ほとんどの既存の PHP 開発者にとって、現在のプロセス指向スタイルで PHP プログラムを作成するのは簡単ではありません。 (Zend Engine 2.0 は下位互換性の問題も非常に慎重に考慮しています) - つまり、表面的には、PHP はオブジェクト指向の機能を備えているため、より強力になります。実際、ほとんどの場合、PHP はより強力になります。開発 読者の手に渡れば、Zend Engine 2.0 バージョンと 1.0 バージョン (現在の PHP 4 をサポートする解釈エンジン) を使用する PHP に違いはありません。 もちろん、まだ期待できることはあります。高速な Web プログラミング環境には優れたモデリングも必要であり、オブジェクト指向の設計と実装は、プロセス指向やページ指向の方法よりもはるかに優れています。一部の PHP 開発者 (PHP の作成者やメンテナを含む) は、すでに言語自体のオブジェクト指向機能の使用を強く主張しています (PEAR がその良い例です)。Zend Engine 2.0 は彼らに朗報をもたらすでしょう。オブジェクト指向モデルはより優れたものになるでしょう。オブジェクト指向の設計と実装を使用すると、ほとんど制限なく設計および実装できます (現在の PHP はオブジェクト指向のサポートが非常に不完全であるため、これを行うことができません)。同時に、オブジェクトのパフォーマンスをある程度向上させることができます。 例外処理メカニズムの導入は、PHP プロジェクトに一定のプラスの影響を与え、コード効率を効果的に向上させ、適切なエラー処理を促進します。 Zend Engine 2.0 のオブジェクト指向モデルの改良により、PHP が外部コンポーネント (COM や Java Beans など) を呼び出すことがより便利かつ合理的になり、効率も向上します。この改善により、異種システム(Javaで開発されたシステムなど)のフロントエンドとしてPHPが利用される可能性が高まる可能性があります(国内のminij2eeプロジェクトがその典型例です)。 PHP 開発者へのアドバイス: まず第一に、PHP の将来について心配する必要はありません。あなたが持っている開発スキルは新しいバージョンでも引き続き適用でき、うまく機能します (これを聞くと、Microsoft .net の Visual Basic を思い出します)。恥ずかしい立場 - PHP はこうはなりません)。オブジェクト指向について何も知らなくても、従来の方法で開発できます (これは、市販されている PHP 開発を教えるほとんどの書籍で紹介されているテクニックでもあります)。 次に、PHP のオブジェクト指向機能に興味がある場合、またはすでに積極的に検討している場合は、将来の PHP がよりあなたの好みに適しているでしょう。オブジェクト指向の手法を完全に使用してプロジェクトを分析できます。それから
)