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

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

Jul 15, 2016 pm 01:25 PM
php zend 書き込み 見て デザイン

雑談

まず、この記事を書いた当初の意図。 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 までご連絡ください。

ホット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の継続的な使用:その持久力の理由 PHPの継続的な使用:その持久力の理由 Apr 19, 2025 am 12:23 AM

まだ人気があるのは、使いやすさ、柔軟性、強力なエコシステムです。 1)使いやすさとシンプルな構文により、初心者にとって最初の選択肢になります。 2)Web開発、HTTP要求とデータベースとの優れた相互作用と密接に統合されています。 3)巨大なエコシステムは、豊富なツールとライブラリを提供します。 4)アクティブなコミュニティとオープンソースの性質は、それらを新しいニーズとテクノロジーの傾向に適応させます。

session_start()が複数回呼び出されるとどうなりますか? session_start()が複数回呼び出されるとどうなりますか? Apr 25, 2025 am 12:06 AM

session_start()への複数の呼び出しにより、警告メッセージと可能なデータ上書きが行われます。 1)PHPは警告を発し、セッションが開始されたことを促します。 2)セッションデータの予期しない上書きを引き起こす可能性があります。 3)session_status()を使用してセッションステータスを確認して、繰り返しの呼び出しを避けます。

IISとPHPの互換性:ディープダイビング IISとPHPの互換性:ディープダイビング Apr 22, 2025 am 12:01 AM

IISとPHPは互換性があり、FastCGIを通じて実装されています。 1..phpファイル要求を構成ファイルを介してFastCGIモジュールに転送します。 2. FASTCGIモジュールは、PHPプロセスを開始して、パフォーマンスと安定性を改善するための要求を処理します。 3。実際のアプリケーションでは、構成の詳細、エラーデバッグ、パフォーマンスの最適化に注意する必要があります。

作曲家:AIを介したPHP開発の援助 作曲家:AIを介したPHP開発の援助 Apr 29, 2025 am 12:27 AM

AIは、作曲家の使用を最適化するのに役立ちます。特定の方法には次のものが含まれます。1。依存関係管理の最適化:AIは依存関係を分析し、最適なバージョンの組み合わせを推奨し、競合を減らします。 2。自動コード生成:AIは、ベストプラクティスに準拠したComposer.jsonファイルを生成します。 3.コードの品質を改善する:AIは潜在的な問題を検出し、最適化の提案を提供し、コードの品質を向上させます。これらの方法は、開発者が効率とコードの品質を向上させるのに役立つ機械学習および自然言語処理技術を通じて実装されています。

session_start()関数の重要性は何ですか? session_start()関数の重要性は何ですか? May 03, 2025 am 12:18 AM

session_start()iscrucialinphpformangingusersions.1)itInitiateSanewsessionifnoneExists、2)resumesanexistingsession、および3)SetSessionCookieforcontinuityAcrossRequests、ApplicationslicationSliviseSlikeUserauthicationAnticatent。

Laravelの使用:PHPでWeb開発を合理化します Laravelの使用:PHPでWeb開発を合理化します Apr 19, 2025 am 12:18 AM

Laravelは、次のようなWeb開発プロセスを最適化します。1。ルーティングシステムを使用してURL構造を管理します。 2。ブレードテンプレートエンジンを使用して、ビュー開発を簡素化します。 3.キューを介して時間のかかるタスクを処理します。 4. Eloquentormを使用して、データベース操作を簡素化します。 5.ベストプラクティスに従って、コードの品質と保守性を向上させます。

PHPとIIS:それらを一緒に動作させる PHPとIIS:それらを一緒に動作させる Apr 21, 2025 am 12:06 AM

IISでPHPの構成と実行には、次の手順が必要です。1)PHPをダウンロードしてインストールする、2)IISの構成とFastCGIモジュールの追加、3)アプリケーションプールの作成とセットアップ4)Webサイトを作成してアプリケーションプールにバインドします。これらの手順を通じて、スケーリングと最適化パフォーマンスを構成することにより、WindowsサーバーにPHPアプリケーションを簡単に展開し、アプリケーションの安定性と効率を向上させることができます。

データ処理と計算にMySQL関数を使用する方法 データ処理と計算にMySQL関数を使用する方法 Apr 29, 2025 pm 04:21 PM

MySQL関数は、データ処理と計算に使用できます。 1.基本的な使用には、文字列処理、日付計算、数学操作が含まれます。 2。高度な使用法には、複数の関数を組み合わせて複雑な操作を実装することが含まれます。 3.パフォーマンスの最適化では、Where句での機能の使用を回避し、GroupByおよび一時テーブルを使用する必要があります。

See all articles