te16

2019 年の PHP – Stitcher.io

(jp) =

人気のある「PHP: 悪い設計のフラクタル」というブログ記事を覚えていますか? 初めて読んだとき、私は多くのレガシー PHP プロジェクトを抱えたくだらない場所で働いていました。 この記事を読んで、私はプログラミングをやめて、プログラミングとはまったく違うことをするべきかどうか疑問に思いました。

幸運なことに、その後すぐに転職することができました。さらに重要なことに、PHP は 5.* の時代からかなりの進化を遂げました。 今日、私はもう PHP でプログラミングを行っていないか、レガシー プロジェクトに行き詰まっている人々に向けて話したいと思います。

ネタバレ: ほとんどすべてのプログラミング言語に癖があるのと同じように、今日でもいくつかのことはうまくいきません。 多くのコア関数には依然として一貫性のないメソッド シグネチャがあり、構成設定は依然として混乱しており、くだらないコードを書いている多くの開発者がいまだにいます。

今日は、明るい面を見てみたいと思います。変更された点と、クリーンで保守しやすい PHP コードを作成する方法に焦点を当てましょう。 ほんの数分間、偏見を脇に置いてください。

その後は、以前とまったく同じように PHP について自由に考えることができます。 おそらく、ここ数年で PHP に加えられたいくつかの改善に驚かれることでしょう。

# TL;DR

  • PHP は、毎年新しいリリースで積極的に開発されています
  • PHP 7.4 は、これまでで最も機能満載のリリースの 1 つです。
  • PHP 5 時代以降のパフォーマンスは、3 倍とは言わないまでも 2 倍になりました
  • フレームワーク、パッケージ、プラットフォームの非常にアクティブなエコシステムがあります
  • PHP には、過去数年間で多くの新機能が追加されており、言語は進化し続けています。
  • 静的アナライザーのようなツールはここ数年で成熟し、成長を続けています

更新: 実際のコードを見せてほしいと頼まれました。 それが可能だと言ってうれしいです! PHP と Laravel で書かれた私の趣味のプロジェクトの 1 つのソース コードを次に示します。 これは、私たちのオフィスで管理している数百の OSS パッケージのリストです。 どちらも最新の PHP プロジェクトがどのようなものかを示す良い例です。

はじめましょう。

tpyoに気づきましたか? PR を送信して修正することができます。 このブログの最新情報を知りたい場合は、私をフォローしてください。 ツイッター または私のニュースレターを購読してください:

# 歴史まとめ

参考までに、今日の PHP のリリース サイクルを簡単に振り返ってみましょう。 現在は PHP 7.4 であり、その後の次のバージョンは PHP 8.0 になります。

5.* 時代の後半以降、コア チームは毎年のリリース サイクルを維持するよう努めており、過去 4 年間、これに成功しています。

一般に、すべての新しいリリースは 2 年間アクティブにサポートされ、さらに 1 年間は「セキュリティ修正のみ」が提供されます。 目標は、PHP 開発者ができるだけ最新の状態を維持するように動機付けることです。たとえば、5.4 から 7.0 にジャンプするよりも、毎年小さなアップグレードを行う方がはるかに簡単です。

PHP のタイムラインのアクティブな概要については、こちらを参照してください。

最後に、PHP 5.6 が最新の 5.* リリースで、7.0 が次のリリースです。 PHP 6 に何が起こったのか知りたい場合は、PHP Roundtable ポッドキャストを聞くことができます。

それが邪魔にならないようにして、最近の PHP に関するいくつかの一般的な誤解を正しましょう。

# PHP のパフォーマンス

5.* の時代には、PHP のパフォーマンスは…せいぜい平均的でした。 ただし、7.0 では、PHP のコアの大部分がゼロから書き直され、パフォーマンスが 2 倍または 3 倍向上しました。

言葉が足りませんが。 ベンチマークを見てみましょう。 幸いなことに、他の人々が PHP のパフォーマンスのベンチマークに多くの時間を費やしています。 Kinstaには適切な更新リストがあることがわかりました.

7.0 のアップグレード以来、パフォーマンスは向上しただけです。 PHP Web アプリケーションのパフォーマンスは、他の言語の Web フレームワークと同等 (場合によってはそれ以上) です。 この広範なベンチマーク スイートをご覧ください。

確かに、PHP フレームワークが C や Rust より優れているわけではありませんが、Django、Rails、または Express と同等のパフォーマンスを発揮します。

# フレームワークとエコシステム

フレームワークといえば、PHP はもはや単なる WordPress ではありません。 プロの PHP 開発者として一言言わせてください。WordPress は現代のエコシステムを代表するものではありません。

一般に、2 つの主要な Web アプリケーション フレームワークと、Symfony と Laravel といういくつかの小さなフレームワークがあります。 確かに、現在ラミナスと呼ばれている Zend もあります。 Yii、Cake、Code Igniter など — しかし、最新の PHP 開発がどのようなものか知りたい場合は、最初の 2 つのうちの 1 つが適切です。

どちらのフレームワークにも、パッケージと製品の大規模なエコシステムがあります。 管理パネルや CRM からスタンドアロン パッケージ、CI からプロファイラー、Web ソケット サーバー、キュー マネージャー、支払い統合などの多数のサービスにまで及びます。 正直なところ、リストするには多すぎます。

ただし、これらのフレームワークは実際の開発を目的としています。 純粋なコンテンツ管理が必要な場合、WordPress や CraftCMS などのプラットフォームはますます改善されています。

PHP のエコシステムの現在の状態を測定する 1 つの方法は、PHP のメイン パッケージ リポジトリである Packagist を調べることです。 それは指数関数的な成長を見てきました。 1 日 ±2,500 万回のダウンロードがあり、PHP エコシステムはかつてのように小さな弱者ではなくなったと言っても過言ではありません。

このグラフを見てください。時間の経過に伴うパッケージとバージョンの量がリストされています。 また、Packagist の Web サイトでも見つけることができます。

アプリケーション フレームワークと CMS に加えて、ここ数年で非同期フレームワークの台頭も見てきました。 これらは、ユーザーが真の非同期 PHP を実行できるようにする、PHP または他の言語で作成されたフレームワークとサーバーです。 いくつかの例には、Swoole、Amp、ReactPHP などがあります。

非同期の世界に足を踏み入れて以来、Web ソケットや大量の IO を使用するアプリケーションなどは、実際に PHP の世界に関連するようになりました。

internals メーリング リスト (コア開発者が言語の開発について話し合う場所) でも、libuv をコアに追加するという話がありました。 libuv を知らない人のために: これは、Node.js がすべての非同期性を許可するために使用するライブラリと同じです。

# 言語自体

その間 asyncawait はまだ利用できませんが、過去数年間で言語自体に多くの改良が加えられました。 以下は、PHP の新機能の非網羅的なリストです。

言語機能のトピックについて話している間、言語が今日どのように開発されているかについても話しましょう。 コミュニティは RFC を提案することができますが、言語を前進させる活動的なボランティアのコア チームがあります。

次に、これらの RFC は「内部」メーリング リストで議論されます。これはオンラインでも読むことができます。 新しい言語機能が追加される前に、投票が必要です。 少なくとも 2/3 の過半数を占める RFC のみがコアで許可されます。

最近、コードが実際に存在する GitHub に RFC の議論を移動する取り組みが行われています。 PHP に積極的に投資している少数の開発者グループが参加しているようです。 ここでプロセスについて読むことができます。 一部の人々は GitHub を好まないため、まだ進行中の作業です。 ただし、最も積極的な貢献者が決定に賛成していることは明らかであるため、RFC の議論プロセスは来年かそこら内に完全に GitHub に移されると言っても過言ではありません。

RFC が議論されると、投票段階に入ります。 RFC ごとに投票する必要はありませんが、おそらく 100 人ほどが投票できます。 もちろん、コア チームのメンバーは投票することができますが、コード ベースを維持する必要があります。 彼らのほかに、PHP コミュニティから個別に選ばれた人々のグループがいます。 これらの人々には、PHP ドキュメントの管理者、PHP プロジェクト全体への貢献者、PHP コミュニティの著名な開発者が含まれます。

コア開発のほとんどは自発的に行われますが、コア PHP 開発者の 1 人である Nikita Popov は、最近 JetBrains に採用され、フルタイムで言語に取り組んでいます。 もう 1 つの例は、最近 Laminas と呼ばれる Zend フレームワークへの投資を決定した Linux 財団です。 このような雇用と買収により、PHP の将来の開発の安定性が保証されます。

PHP のコアに追加された多くの機能と改善に加えて、過去数年間、PHP に関連するツールが増加しています。 頭に浮かぶのは、Vimeo によって作成された Psalm のような静的アナライザーです。 ファンと PHPStan。

これらのツールは、PHP コードを静的に分析し、型エラーやバグの可能性などを報告します。何らかの方法で、それらが提供する機能は TypeScript と比較できますが、現時点では言語はトランスパイルされていないため、カスタム構文は許可されていません。

これは docblock に依存する必要があることを意味しますが、PHP の最初の作成者である Rasmus Lerdorf は、コアに静的分析エンジンを追加するというアイデアについて言及しました。 多くの可能性がありますが、それは巨大な事業です。

トランスパイルといえば、JavaScript コミュニティにインスパイアされています。 ユーザーランドで PHP 構文を拡張する取り組みが行われています。 Pre と呼ばれるプロジェクトはまさにそれを行います: 通常の PHP コードにトランスパイルされる新しい PHP 構文を許可します。 このアイデアは JavaScript の世界で証明されていますが、適切な IDE と静的解析のサポートが提供されている場合にのみ PHP で機能します。 これは非常に興味深いアイデアですが、「主流」と呼べるまでには成長しなければなりません。

# 最後に

とはいえ、PHP はくだらない言語だと考えて構いません。 この言語には間違いなく欠点があり、20 年間の遺産があります。 私はそれを使って仕事をするのが楽しいと自信を持って言えます。

私の経験では、信頼性が高く、保守しやすく、高品質のソフトウェアを作成できます。 私が働いているクライアントは、最終結果に満足しています.

同意しませんか? 理由を教えてください! あなたは私に連絡することができます ツイッター または電子メール。

次の投稿
カーネーション vs. バラ: どちらの花が良いですか?
前の投稿
アーロン・カーターは死ぬ前に「誰からも距離を置いた」

ノート:

AZ: 動物の世界、ペット、ペット、野生の自然に関するカテゴリー記事…
SP:スポーツカテゴリー。
New vs Ne: ニュースコラム。
Te: テクノロジー カテゴリ。
Gt:エンターテインメントカテゴリー。
Bt: 占い、星占い、超常現象、超常現象。
Ta:人生コラム。