PHP については、多くの賢明な人々からも多くの苦情が寄せられています。 Jeff Atwood が PHP について別の苦情を書いた後、私は PHP の良い面について考えました。
これらの苦情の最大の問題は、古いバージョンの PHP をまだ使用している多くの人々からの苦情であることです。彼らは、PHP が言語レベルとコミュニティ レベルの両方で急速に進化していることを気にしたくない、または認めたくないのかもしれません。実際、他のどの言語や Web プラットフォームよりも速く進化しています。いつもそうだったわけではありませんが、PHP は過去 5 年間にわたって素晴らしい歩みを続けてきました。
PHP コミュニティの最近の驚くべき成果について話す前に、いくつかの興味深い数字を見てみましょう。PHP は、サーバーサイド プログラミング言語が知られている Web サイトの 77.9% で使用されています。 WordPress は世界中の Web サイトの 16.6% で使用されています。使用率が最も高い 3 つの CMS ウェブサイト構築システムは、WordPress のシェアが 54.3%、Joomla のシェアが 9.2%、Drupal のシェアが 6.8% です。 3 つの製品はすべて PHP で書かれています。
PHP は何か正しいことをしているはずですよね?
さて、PHP のユニークなスキルは、何年にもわたって変化してきたにもかかわらず、依然として技術者以外の人にとって最も簡単に学習できる言語であるということです。PHP を使用すると、動的な Web サイトを他のテクノロジーよりも速く構築できます。 、手間をかけずにウェブサイトをホストすることもできます。 PHP は世界で最も優れた設計言語ではないかもしれませんが、PHP が物事を成し遂げることには疑いの余地がありません。
PHP5.0 (2004 年リリース) は、非常に実用的なオブジェクト モデルをもたらしました...待て、私が話しているのは 8 年前にリリースされたもののことです。 PHP 5.4 は、あなたが夢見るすべてを最新の Web 言語で実現します。はい、PHP はネームスペースをサポートします。はい、PHP はクロージャーをサポートします。はい、PHP はトレイトをサポートします。
時間はかかりますが、PHP5.4 は全体的なエクスペリエンスを以前よりも向上させるためにいくつかの構文を導入しています。はい、PHP は配列の定義に [ ] を使用することをサポートしています。はい、PHP は次のような関数を呼び出す新しく作成されたオブジェクトをサポートしています (新しい Foo ())->bar(); はい、PHP は $foo->bar()[1] のような要素を取得するための配列をサポートしています。
PHP は自らの間違いからも学びました: register_globals と magic_quotes は完全に削除されました。
PHP にはローカル テストを容易にする Web サーバーが組み込まれており、マイクロ秒で開始できます。
次の課題: PHP を説明するインターネット上のチュートリアルをどのように更新できるでしょうか? PHP プログラムで WebSocket をサポートする最適なテクノロジは何ですか?
良い言語を持つことは良いことですが、良いエコシステムを持つことはさらに良いことです。 PHP エコシステムはここ数年で大きく進化しました。
Git
Git についてはあまり話したくありません。Git はあらゆるところで使用されており、PHP はすぐに Git を採用しました。 PHP 自体を含め、ほぼすべての PHP ライブラリ、フレームワーク、製品は Git を使用します。
作曲家
2 年前、私は symfony 1 でハッキングした醜い PEAR コードを削除して、プラグインを使用したいと考えていました。 PEAR のようなモノリシック インストールではなく、プロジェクトの依存関係を管理できるものに置き換えたかったので、ソフトウェアの依存関係を管理するための最適なアルゴリズムを見つけようとしました。 Perl から Ruby、Debian から Redhat まで、可能な限りすべてのことを試してきました。どの結果も私を満足させませんでした。たまたま私自身の解決策がうまくいっただけです...もちろん、これは単なる私の経験です。それからZYppに出会って、それで終わりでした。 ZYpp は、ブール充足可能性問題解決を使用して依存関係を管理します。 Nils Adermann と Jordi Boggiano の熱心な努力のおかげで、PHP には依存関係を管理する優れたツール Composer が組み込まれました。
はい、PHP には他の言語よりも優れた依存関係管理ツールがあります。
Git、Composer、および PHP 組み込み Web サーバーのおかげで、PHP プロジェクトのダウンロード/テスト/インストールが簡単になりました。
Symfony (PHP5.4 を使用) をテストしたいですか?
$ composer.phar create-project symfony/framework-standard-edition$ cd framework-standard-edition$ ./app/console server:run
Silex をテストしてみませんか?
$ composer.phar create-project fabpot/silex-skeleton$ cd silex-skeleton$ php -S localhost:8888 -t web/
Composer をまだ知りませんか?それについては知っておくべきです。
メインの Composer リポジトリ Packagist を参照すると、すでに 1900 を超えるパッケージがあり、それらは 3 か月以内に何百万回もインストールされています。
次の課題: 次の PHP バージョンには Composer が組み込まれますか?
ご協力
コミュニティの協力がこの記事の焦点であり、私が最も誇りに思っていることです。 PHP プロジェクトでは、他のプロジェクトを無視できるほど大きなプロジェクトであっても、コラボレーションが改善され始めています。
phpBB、Drupal、ez Publish、Symfony、および他の多くのプロジェクト (phpDocumentor、PHPUnit、Behat、Zikula、Propel、Doctrine、Midgard など) がコードを共有しています。確かに、彼らはお互いに競争相手ですが、お互いに協力することが重要であることを理解しています。 Composer は、この種のコラボレーションを非常にうまく促進します。
次の課題は、より多くのプロジェクトにこのトレンドに参加するよう説得することです。
繰り返しますが、PHP は最高のプログラミング言語ではないかもしれません。その癖については私が最初に言いますが、PHP は断然最高の Web プラットフォームです。