ホームページ  >  記事  >  バックエンド開発  >  Zend Engine 2.0の設計図からPHPの未来を見る(1)_PHPチュートリアル

Zend Engine 2.0の設計図からPHPの未来を見る(1)_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-15 13:25:19858ブラウズ

雑談

まず、この記事を書いた当初の意図。 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 例外処理メカニズムの追加など、制御プロセスの変更、追加、削除です。文字列オフセットのインクリメント関数などの関数の削除。 (各タイプの改善の詳細については、参考資料に記載されているドキュメントを参照してください。) 1 番目と 2 番目のタイプの改善を通じて、PHP がオブジェクト指向プログラミング言語として徐々に改善されていることがわかります。

しかし、ここで問題が発生します:

良い面としては、今日のプログラミングの世界では、オブジェクト指向機能を備えた言語がより歓迎されています (言語自体がオブジェクト指向ベースで構築されていない場合でも、 Defined オブジェクトの追加などにより、言語がトレンドに乗り遅れることを防ぐことができます) - その意味では、Zend Engine 2.0 により、PHP のオブジェクト指向のサポートは、現在の暫定的なサポートから将来の完全なサポートに変更されるようです。さらに、エンタープライズレベルのアプリケーションを構築する場合 (これは現在、PHP がしばしば批判されています)、オブジェクト指向のモデリングと実装の使用が事実上の標準になっています。 PHP の改善により、このニーズに応え、この分野における言語自体の弱点に対処できる可能性があります。

マイナス面としては、より Java に近い PHP の新しいバージョンを開発者に提供することはほとんど意味がないようです。 PHP が広く使用されている理由は、オープン ソース コードとクロスプラットフォームに加えて、おそらく、インターネット Web サイト構築の単純かつ高速な Web プログラミングの特性に適応するための重要なポイントでもあります。非常に短い学習時間、フレンドリーな言語スタイル (特に C に精通している場合)、および多数の拡張クラス ライブラリ関数は、その言語の強力さを証明するのに十分ですが、そのような言語の次のバージョンが同様のオブジェクトに変換されると、多くの既存の開発者が短期間で挫折するだけでなく、新しい開発者を引き付ける上でも非常に悪影響を及ぼします。Java のような言語があるのに、なぜわざわざ PHP を学ぶ必要があるのでしょうか。

上記は私自身の「客観的」分析の一部です。いわゆる「客観的」とは、肯定的な側面について書くとき、否定的な側面について書くときは Zend Engine 2.0 の忠実な支持者であるように装っていることを意味します。その逆です(私の分析を読んで、かなり客観的に感じていただければ幸いです)。しかし、「客観的」は実際には私の「主観的」議論への道を開くだけです -

将来、PHP はどうなると予想されますか?

実際、問題の鍵は、PHP がどの方向に発展すると予想されるか、または PHP がどの分野に焦点を当てるかにあるかもしれません。

特に商用サポートがほとんどない状況で、PHP がこれほど人気が​​ある理由 (Zend は現在 PHP のサポートを提供していますが、その強みは Microsoft や Sun と比較すると本当に微々たるものです。) ASP と競争できるようになった、そしてプログラミングJSP が競合する言語は、JSP が完全に現実世界の高速 Web プログラミング環境を指向しているためです。この状況は、多くの PHP チュートリアルではっきりと見られます。いくつかの一般的な Web 関数を実装するには、PHP を使用すると、多くの場合、コードと複雑さが軽減されます。同時に、特定の分野のプログラミングでは、PHP には拡張モジュールの機能も利用できます。 (商用サポートはありませんが、PHP は多くのオープンソース ソフトウェアの支持者からサポートを受けています。彼らは PHP の生成と開発に貢献しただけでなく、さまざまな拡張モジュール機能も提供しました。)、非常に便利です。言い換えれば、開発者にとって、すぐに使える無料の関数ライブラリが増えれば、必要なのは関数マニュアルを参照して適切に使用することだけです。 PHP の競合製品は少し「衒学的」なようです。柔軟性が十分ではなく、厳密性が高いのかもしれません。おそらく、大手営利企業の製品はハッカーの傑作ほど使いやすくはありません。

しかし、実際の高速な Web プログラミング環境に適応するために、PHP は利便性と使いやすさを重視していくつかのことを放棄しました。たとえば、開発者独自のモジュール (非ソース コード レベル) の記述とカプセル化、オブジェクト指向機能 (既存のバージョンでは一部の機能が完全にサポートされていないだけ) など - PHP に欠けているものは、競合他社が持っているものです (たとえば、ASP は COM コンポーネントと通信でき、JSP は Java Beans を簡単に使用できます。JSP は誕生しました) Java (完全なオブジェクト指向言語など) の開発では、PHP はエンタープライズ アプリケーションを構築するための候補リストから除外されることがよくあります。

問題の核心は比較的明らかになりました - PHP の現在の開発は岐路に立っています。高速 Web プログラミング言語としての特性を最大限に発揮し続けるべきなのか、それとも、それ自体を改良して修正すべきなのか本格的なビジネス環境のニーズに適応するプログラミング言語でしょうか? 1

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/446695.html技術記事いくつかの雑感は、まず第一に、この記事を書く本来の目的です。 Zend Engine 2.0 に関する設計図ドキュメントを入手してからしばらく経ちましたが、それを読んだ後、レビューを書きたくなったのです。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。