10

PHP のオブジェクト指向機能を使用せずに作成した Web アプリケーションを開始しました。

戻って、完成した部分を書き直す価値があるかどうかはよくわかりません。オブジェクト指向の PHP は、適切に動作するアプリケーションの全部または一部を書き直す価値があるでしょうか?

4

10 に答える 10

20

あなたが不完全なアプリを持っていることを考えると、それをオブジェクトベースのアプリに作り直すことがおそらく役立つでしょう.

考慮すべきことの 1 つは、最終アプリケーションの予想されるサイズです。特定の複雑さを下回るオブジェクトベースは、学習経験を除けばやり過ぎかもしれません。

大学の授業での最初のオブジェクトの紹介がひどかったので、疫病のようなオブジェクトを避け始めました。最近、php オブジェクトに実装されたプロジェクトに取り組まなければなりませんでした。必要な変更を加えるのは、他のプロジェクトよりもはるかに簡単でした。それ以来、私はオブジェクト モデルで頻繁に作業しており、迅速な作成と簡単な維持のために非常に便利だと感じています。

于 2008-09-11T21:24:43.860 に答える
12

コンセンサスに異議を唱えるために... ほとんどの場合、私はノーと言います。とにかく商用コードの学術的な演習としてではありません。機能している場合は、書き直さないでください。少し変更/追加する必要がある場合は、OO プラクティスに向けてリファクタリングします (コードを変更するときのリファクタリングについては、それのためだけでなく、SO に関する投稿がたくさんあります)。

実際には、あまり OOP を行ったことがない場合は、小さなことから始めて、その感覚をつかむことをお勧めします。

基本を理解したら、デザイン パターンの優れた初心者向けガイド (私は Head First の本が好きです) が非常に役に立ちます。ほとんどの PHP の本は、OOP についてかなり不十分にしか教えていません。継承については教えてくれますが、通常、疎結合や継承よりも構成を優先することについては教えません。デザイン パターンの本を読むと、これについてよりよく理解できます。

PHP は、まだオブジェクト指向を正しく「実行」していないという評判があります。これは公正ではないと思いますが、OOP をあまり理解していなくても簡単に始めることができるという事実を反映しています。極端に言えば、PHP プログラマーの大半 (ごくわずかですが、51% と呼んでください) は OOP に慣れていません。PHP で優れたオブジェクト指向を行うことは可能だと思います。この言語に慣れている場合は、スキルを伸ばすのに最適な方法です。

編集:

いくつかの免責事項を追加するだけです...

  1. ほとんどのPHP プログラマーが OOP に慣れていないという私のコメントは、現在の SO オーディエンスには当てはまりません!
  2. あなたが OOP に慣れていないことを示唆しているわけではありませ
于 2008-09-11T22:41:35.610 に答える
4

典型的な答え: 「場合による」

私は表示ページを最初から最後まで < html > から < /html > のスクリプト ページとして書く傾向があります。しかし、そのページで起こっていることはオブジェクトでした。貧乏人のASPのようなものです。OOP ベースの出力を使用することはできますが、ブラウザーにデータをダンプするような面倒な作業を行うには、あまりにも面倒だと私は常々思っていました。

したがって、ビジネス ルールとデータ アクセスは OOP でした。プレゼンテーションはスクリプトでした。

OOP ではないビジネス ルールがある場合は、2 つの条件でオブジェクトとして記述することを真剣に検討します。(2) は「あなたの生活を楽にしてくれる良い PHP IDE はありますか?」です。それが機能し、それを変更することはNotepad ++で書くことを意味する場合、私はそれを完了したと呼びます. :-)

于 2008-09-11T21:03:34.037 に答える
2

重要であるとは言いませんが、アプリをさらに使いこなそうとしているのであれば、それほど大規模な作業ではないので、今すぐ実行することをお勧めします。よく書かれた OOP プログラムの保守容易性は、初期費用をはるかに上回る可能性があると言えます。特に、作業を進めていくうちに多くのコードをリファクタリングできるようになると考える場合はなおさらです。

于 2008-09-11T20:59:52.077 に答える
2

オブジェクト指向のテクニックを学ぶことは、特に将来的に他の言語でプログラミングする際に非常に役立ちます。

アプリケーションを起動したばかりなので、書いた部分を書き直して改善することができます。それはあなたの締め切りによって異なります。

于 2008-09-11T21:02:01.387 に答える
1

2つの可能性があります。アプリが今すぐ機能する必要があり、触れたり、適応させたり、拡張したり、変更したりすることのない1回限りのアプリであるか、アプリが作業を続けて使い続ける何かの始まりであるかのいずれかです。長い間。

前者の場合、完全に使用可能なコードを壊さないでください。あなたはあなたの時間とより良い関係を持っています。

後者の場合、PHPに関する重要な事実を覚えておく必要があります。これは、PHPの記述が不十分な場合、維持するのが悪夢です。 不十分に書かれたPerlほど悪くはありません-何のためですか?-しかし、遅かれ早かれ、タイムマシンを盗み、自分が維持しているコードを書いた瞬間に戻って、アイスピックで眼窩を刺したいという強い衝動を感じるほど悪いです。

したがって、このコードを長期間維持する場合は、時間をかけて正しく実行してください。つまり、ある種のテンプレートシステム、HTML内に埋め込まれたPHPタグなし、個別の機能のための個別のファイル、およびクラスクラスクラス

あなたの目のソケットはあなたに感謝します。

于 2008-09-15T12:42:01.600 に答える
0

いいえ、アプリが正常に機能している場合は、書き直す必要はないと思います。PHP は実際には OOP ではありません。彼らは懸命に努力していますが、時には PHP 開発者でさえ OOP の意味を本当に理解していないと思います。OOP を学習したい場合 (これは確かに良い考えです)、Smalltalk のような実際の OOP 言語を試して、基本的な概念を学習してください。Java もいいです 2 基本を学びますが、完全な OOP ではありません

于 2008-09-15T12:30:54.343 に答える
0

私の考えでは、phper はオブジェクト (クラス インスタンス) の概念を徹底的に捨てることができます。必要なのは Array と Mode Class だけです。

初期モードのすべての配列は、メソッドとして任意の配列関数をサポートします。

<?php
$array1->array_flip(this);
?>

->mode()最小限のデータ セットを検証するために使用し、次にモード クラスを切り替えます。

<?php
$array1->mode('class1', $success);
?>

どのモード クラスにも含ま->construct()れていませんが->validate()、最小限のデータ セットを検証する必要があります。

モード内の配列は、そのメソッドとして配列関数を引き続き使用できますが、それらのいずれかを使用した後、配列は基本配列モードに切り替えられるため->mode('class1', $success);、モードを元に切り替えるために を使用する必要があります。

根本的な考え方はデータ中心のプログラミングで、データ (配列) とアクティビティ (クラス メソッド) を分離する必要があります。

PHP エンジンを変更して、OO (オブジェクト指向) の一部を取り除き、Mode Class をサポートすることができます。これを MyPHP と呼ぶことができます。

例: との$array_man12 つのモードに設定できます。cls_normal_mancls_crazy_man

<?php
$array_man1->mode('cls_normal_man')->normal_method1()->mode('cls_crazy_man')->crazy_method1();
?>
于 2011-09-02T05:16:19.207 に答える
0

ここで他の回答を繰り返したいと思います。それは、アプリケーションのサイズと、OOP についてどの程度学びたいかによって異なります。ただし、PHP を使用して OOP を学習する場合は注意が必要です。

PHPオブジェクト指向であるという点については... PHP4 にはいくつかの OOP 要素が組み込まれていましたが、PHP5 の方が優れていますが、言語に組み込まれていません。PHP は両方の方法で機能します。個人的には、選択できる点が気に入っています。

于 2008-09-15T12:47:33.273 に答える
0

あなたが持っているものは、正しく行えば手続き型よりもはるかに簡単に再利用できるからです。

また、オブジェクト指向は手続き型よりもはるかに組織化されているとも言えます。小規模の場合、ずさんなコード OO を簡単に回避できます。しかし、より大規模なプロジェクトになると、手順はより整理され、考え抜かれる必要があります。一部の大規模なプロジェクトと同様に、オブジェクト指向は、物事を少し簡単にするために、より組織化することを強制する傾向があります。

于 2008-09-12T05:45:38.867 に答える