-1

私は約4年間phpを使用していますが、自分のスクリプトでOOPアプローチを実際に使用したことはありません。しかし、私が聞いたことと理解したことがあれば、開発がはるかに簡単になるので、私は本当にそれを使いたいと思っています。たとえば、次のコードは単純な mysql-select であり、カテゴリを取得し、その結果からフォーム要素、ドロップダウン メニューを作成しています。natcasesort() を使用したものを並べ替えるなど、いくつかの手順が必要です。Atm 国についても同じ手順をやり直し、同じコードを再度記述します。ご覧のとおり、そのカテゴリのみが国に置き換えられます。

$result1 = mysql_query("SELECT * from categories WHERE hidden = 0");

while ($row = mysql_fetch_array($result1)) { 
    $cat_names = explode(",",$row['title_mulilingual']);
    $categories[$row['uid']] = $cat_names[$lang_id];
}

natcasesort($categories);
foreach ($categories as $key => $value) {
    if ($key == $active_key) $selected = ' selected="selected"';
    else $item_selected = '';
    $select_fields['cat_id'] .= '<option'.$selected.' value="'.$key.'">'.$value.'</option>';
}   

$cat_select = '<select name="category" >'.$select_fields['cat_id'].'</select>';


// the following part is the same as the first one, it only handles countries instead of categories

$result2 = mysql_query("SELECT * from countries WHERE hidden = 0");

while ($row = mysql_fetch_array($result2)) { 
    $country_names = explode(",",$row['title_mulilingual']);
    $countries[$row['uid']] = $country_names[$lang_id];
}

natcasesort($countries);
foreach ($countries as $key => $value) {
    if ($key == $active_key) $item_selected = ' selected="selected"';
    else $selected = '';
    $select_fields['country_id'] .= '<option'.$selected.' value="'.$key.'">'.$value.'</option>';
}   

$country_select = '<select name="country" >'.$select_fields['country_id'].'</select>';

したがって、コードでは明らかに OOP ではありません。しかし、OOP を使用することで、これをはるかに簡単に行うことができると思いますよね? この例を OOP の例にすることで、誰かが OOP をよりよく理解するのを手伝ってくれませんか? 前もって感謝します、ジェイデン

4

1 に答える 1

2

この例を OOP の例にすることで、誰かが OOP をよりよく理解するのを手伝ってくれませんか?

MVC のようなフレームワークを使用して、これを OOP に簡単に移植できます。

MVC 構造
(ソース: php-html.net )

「Model–View–Controller (MVC) は、アプリケーションを 3 つの責任領域に分割するコンピューター ユーザー インターフェイスのデザイン パターンです。

  • モデル: アプリケーションの状態を表すドメイン オブジェクトまたはデータ構造。
  • 状態を監視し、ユーザーへの出力を生成するビュー。
  • ユーザー入力をモデルの操作に変換するコントローラー。" (Wikipedia、2012 年)

いくつかの非常に優れた OOP フレームワークが既に利用可能です。

モデル ビュー コントロールの作成方法に関する優れたチュートリアルは、ここにあります。

コントローラ

これにより、データが取得され、モデルに送信されて処理されます。

 include_once("model/Model.php");

 class Controller {
 public $model; 

 public function __construct()
 {
      $this->model = new Model();
 } 

 public function invoke()
 {
      if (!isset($_GET['book']))
      {
           // no special book is requested, we'll show a list of all available books
           $books = $this->model->getBookList();
           include 'view/booklist.php';
      }
      else
      {
           // show the requested book
           $book = $this->model->getBook($_GET['book']);
           include 'view/viewbook.php';
      }
 }
 }

モデル

提示するデータを処理します

include_once("model/Book.php");

class Model {
public function getBookList()
{
    // here goes some hardcoded values to simulate the database
    return array(
        "Jungle Book" => new Book("Jungle Book", "R. Kipling", "A classic book."),
        "Moonwalker" => new Book("Moonwalker", "J. Walker", ""),
        "PHP for Dummies" => new Book("PHP for Dummies", "Some Smart Guy", "")
    );
}

public function getBook($title)
{
    // we use the previous function to get all the books and then we return the requested one.
    // in a real life scenario this will be done through a db select command
    $allBooks = $this->getBookList();
    return $allBooks[$title];
}

}

class Book {
public $title;
public $author;
public $description;

public function __construct($title, $author, $description)
{
    $this->title = $title;
    $this->author = $author;
    $this->description = $description;
}
}

意見

データを提示します。

<?php 

    echo 'Title:' . $book->title . '<br/>';
    echo 'Author:' . $book->author . '<br/>';
    echo 'Description:' . $book->description . '<br/>';

?>

私の経験から、Web アプリケーションでゼロから OOP を学習するよりも、フレームワークを使用して OOP を実行する方が簡単であることがわかりました。

nettuts で独自のフレームワークを作成するための優れたチュートリアルもここにあります。上記の情報を理解していない場合、このチュートリアルは圧倒されるほどではありません。

于 2012-05-22T21:42:57.040 に答える