PHP5は以前のバージョンの言語にどのように対応していますか


8

Web開発用のPHPを学びたいのですが、次のようなコメントのために取り残されました*

  • PHPは良いですが、スパゲッティコードを生成します
  • PHPは素晴らしいですが、Pythonは結婚の素材です
  • PHPには、C#やJavaなどの他の言語で使用できるものが不足しています

しかし、PHP5については、有望なコメントがいくつかあります。したがって、私の質問は、PHP5は以前のバージョンの言語とどのように連携し、Web開発について学ぶのに今は十分なのかということです。

*コメントは、炎の戦争を扇動しないための参考用です。PHPと他の言語の比較はここでは求められません。PHP5についてだけでなく、以前のバージョンとの比較についてコメントしてください。


8
PHPがスパゲッティコードを生成しない-悪いPHPプログラマーがスパゲッティコードを生成する
HorusKol

PHPや他の言語についてのコメントと、それらが疑いをどのように引き起こしたのかを回答に含めるのはなぜですか?
phant0m 2012

回答:


17

言語について議論するとき、これら2つのStroustrupの引用は常に心に浮かびます:

あなたのところに来て、彼が完璧な言葉を持っていると言う人は誰でも、初心者かセールスマンです。

そして

言語には2種類しかありません。人々が文句を言う言語と、誰も使用しない言語です。

さて、目の前の質問です。憎悪のほとんどは、ほとんどがPHP4に向けられています。PHP5は最初に2004年7月にリリースされ(1年前のベータ版)、PHP4の最後のバージョンは2008年8月にリリースされた 4.4.9 です。もちろん、レガシーアプリを維持していない限り、PHP4を使用する正当な理由はありません。PHP4はPHPグループでサポートされなくなりました。

インタープリターの背後にあるエンジンがゼロから書き直され、新しいオブジェクトモデルが含まれているため、2つのバージョン間のギャップは通常2つのメジャーリリース間のギャップよりも大きくなっています。PHP5のリリースは、MySQLのメジャーオーバーホールであるMySQL5のリリースとほぼ一致しました。PHPは通常、MySQLと組み合わされており、両方の5番目のバージョンはいくつかの問題に対処し、競合他社に対応するためにそれらをもたらしました。MySQLもFUDコメントの対象ですが、まあ、それはGoogleのAdWordsの背後にあるデータベースです。

PHP 5.3は名前以外はすべてメジャーリリースでした。PHP6向けの機能が5.3に登場した多くの機能があり、5.2のすべての開発者は、5.3より前のバージョンに移行することを強くお勧めします。現在のリリース5.4には、(特に)いくつかの素晴らしい機能が含まれています。

今あなたの特定のコメントのために:

PHPは良いですが、スパゲッティコードを生成します

それは絶対に真実ではありません。どのような種類のコードも生成する言語はありません。失敗するかどうかは常に開発者次第です。そこにあるすべての言語でスパゲッティコードが可能です。ただし、PHPは他の一般的な言語に比べてエントリバリアが非常に低いため、経験の浅い開発者にとっては悪い(しかし機能する)コードを書く方がはるかに簡単です。しかし、それはすべての習得しやすい言語の副作用です。

さらに、PHPは特定のスタイルやパラダイムを強制するものではなく、何をするかを決めるのは常にあなた次第です。私はいつもこれを良いことだと思っていましたが、他の人はそれを批判の正当なポイントだと考えています。自分で決める必要があります。

PHPは素晴らしいですが、Pythonは結婚の素材です

PHPには、C#やJAVAなどの他の言語で使用できるものが不足しています

はい、そうです。そして、汎用言語Xには、PHPで得られるものが多くありません。オペレーティングシステム間およびhttpサーバー間で移植可能であり、Web開発環境で役立つと考えられるすべてのサードパーティライブラリをサポートします。PHPには重要なものが不足していないことを理解する必要があります。汎用言語Xと他の多目的言語とPHP の比較は、誤解です。リンゴとオレンジです。PHPは、それが汎用であるという考えをサポートするためのいくつかの機能を提供しますが、そうではなく、Web言語です。

PHPの進化の道は、汎用言語Xとはかなり異なることに注意してください。機能が言語に追加されるたびに、言語がどうあるべきかという想像上の理想に従ってではなく、実際の必要性から外れています。言語は何よりも重要なツールであり、PHPはそのようなものとして完璧です。

私は汎用言語Xに対して何も持っていません。私はすべて、仕事に適したツールを選択することを望んでいます。私は常に混在していて、JavaとPythonのコーディングも行っています。PHPと並行することもあります。しかし、PHPは私がこれまでに結婚を検討したい唯一のものです。:)

PHPから始めることを検討している場合は、他の言語の場合と同様に、もちろん最新の安定版から始める必要があります。


PHP4と5の間にいくつかの非互換性を追加します。PHP5.3のガベージコレクションを忘れました。
deadalnix

1
@deadalnixそのようなリストは、PHP4の使用を検討している場合にのみ役立つと思うので、PHP4とPHP5の間の非互換性を追加しませんでした。私のポイントは、PHP4が非常に古くなっているという理由だけでPHP4を使用しないことです(PHP5は3年以上前から存在しています)。また、私はガベージコレクションを忘れなかった。PHP5.3の新機能の明確なリストを作成するつもりはなかった(そのようなリストはマニュアルに記載されている)。質問。
yannis

6

PHPは、長い間 Web開発に「十分」なものでし。他のプログラミング言語と同様に、コードの品質はそれを書く開発者のスキルにかかっています。

PHPに対する一般的な批判は、PHPの柔軟性により、経験の浅い開発者が不良または「スパゲッティ」コードを簡単に記述できることです。これは主に、時折競合する、実装が不十分、またはうまくメッシュしない多数のパラダイムを同時に採用しようとするためです。

  • サーバーサイドスクリプティング(PHP)とモジュール化されていないクライアントサイドコード(HTML + Javascript)を並置することは一般的であり、ほとんど推奨されますが、明快さと読みやすさを損ないます。

  • 通常は命令型で記述されますが、オブジェクト指向のメカニズムを提供します。これにより、スタイルが混在しやすくなり、多くの場合、デザインが悪くなる可能性があります。

  • オブジェクト指向の設計は(私の意見では)PHP4では不十分にサポートされていました。これは、PHP5が大幅に改善した領域の1つです(たとえば、アクセス修飾子、抽象クラス、スコープ解決の改善など)。

  • PHPの動的型付けにより、実行時エラーが有効になり、静的型チェックで解消できます。これはすべてのPHPバージョンの設計に固有であり、すぐには変更されません。オブジェクト型を検証する負担はプログラマに任されています。

PHP5のOOPモデルの変更は、優れた設計を前進させるために多くのことを行いますが、上記の悪い習慣を思いとどまらせる阻害要因を追加しません。


2

PHP自体にはいくつかの重要な問題がありますが、それらは主に煩わしいものです。そのライブラリは一貫性がなく、統合失調症であり、ファーストクラスのオブジェクトとしての文字列が不足しています。それはあなたが貧弱なコードを書くことを強制しません、そしてそれはそれが何をするかのためにかなりうまく働きます-ウェブページを書きます。あなたのPHPはあなたがそれがそうであるように努力するのと同じくらい良いでしょう。非常に手続き型でCコードのように見えるPHPを書くことはかなり可能です。また、過度にオブジェクト指向でJavaのように見えるPHPを書くことも可能です。PHPを毎日開発している人として、私はそれについていくつかのことが好きで、それについていくつかのことが嫌いで、いくつかの5.4関数(トレイトや正気な関数が逆参照など)を待つことができませんが、ピッキングを考えている人を心から奨励しますそうするためにそれまで。


0

php5は、php4の大幅に改良されたバージョンです。

すべてではありませんが、ほとんどのphp4コードはphp5で動作します。

実際に変更されたのは、以前のOO実装に固有の多くの制限と癖を修正した、はるかに改良されたオブジェクトモデルですが、以前のバージョンとはほとんど互換性がありません。

ここにドキュメント

他のコメントにはある程度の妥当性がありますが、「ノーゴー」ではありません

「PHPは良いですが、スパゲッティコードを生成します」-あらゆる種類のパスタをあらゆる言語で生成できますが、phpは、経験の浅いコーダーが構造化されていないコードの巣を作成するのを妨げるものではありません。逆に、あなたはどんな言語でも素晴らしいコードを書くことができます、熟練したプログラマーはきれいでよく構造化されたphpを書くことに問題はありません。

「PHPは素晴らしいですが、Pythonは結婚の材料です」-素晴らしい言語ですが、いくつかの多様なWebフレームワークがあり、そのすべてに非常に優れた点がありますが、どれも実際にはうまくいっていません。選択した組み合わせのフレームワークは常にニッチなスキルになります。

「PHPは、C#やJAVAなどの他の言語で得られるものよりも遅れています」-phpは、perlを除くあらゆる言語で最も多様で十分に実装されたライブラリサポートを備えています。統計分析やベクトル処理のようないくつかの空白のスポットがあります。しかし、一般的に何かを実行したい場合、PEARをすばやく検索すると、それを実行するライブラリが見つかります。言語自体はC#やJavaよりもシンプルですが、基本的な構文と「ダックタイピング」のシンプルさが、PHPでできることは何でもJavaでより読みやすくエレガントな方法で実行できることを意味します。


「PHPには最も多様でよく実装されたライブラリーがあります...」という文言は議論の余地があります。私はそれがあまりに肥大化し、不十分に組織化されていると主張します。
Rob、

@robjb-「肥大化」ビットを取得しないでください。必要のないものを使用することはありません。また、適切に構成されていないPEARとPECLはかなり洗練されているので、使用できるライブラリが多いほど良いでしょう。 C#とJavaの世界。ライブラリは「直交」ではありませんが、これは、数年にわたって貢献している多くのプロジェクトで避けられません。
James Anderson、

1
PHPに非常に便利な拡張機能/ライブラリがあることを否定していませんが、グローバルにスコープされた数千の関数を呼び出すが「肥大化」していることを他に知りません。また、多くの関数には同様の目的があります。一貫性のない命名は、コアライブラリ、たとえばstrip_tagsvsをさらに難読化しますstripslashes。Cはこれらの問題を示していないと私は主張しますが、それでもかなり長くなっています。;)
Rob

「ブロートウェア」全体-つまり、便利なWebサイトを構築するために使用できる、すぐに使えるphpのインストールは、約70MBです。これは、JEに付属するいくつかのJARファイルよりも小さいです。ほとんどの開発者は、組み込み関数のグローバルスコープをかなり有用であると考えています。これは、sysoutに行を書き込むなどの難解なことを行う前にjarファイルを「インポート」する必要があるJavaの冗長性と比較してです。PHPは完璧とはほど遠いですが、中小規模のWebアプリケーションにとっては何よりも優れています。
ジェームズアンダーソン

@robjb-「C」コメントが表示されません。Cは一貫性のないAPIを示し、機能が重複しています。ライブラリを見つけるのが難しく、ごく少数の「スマートストリング」ライブラリしか使用していないからといって、
ジェームズアンダーソン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.