2017-04-08 9 views
1

手続き型コードから離れ、OOPで足を濡らすことを試みるIMは、ゆっくりと進みますが、私は学びます。私は、次のいくつかの助け/意見をしたいと思います:PHP OOPフォームの入力をアップロードする

は、簡単なフォーム

enter image description here

私はこのようなルックスを作成したクラスCreateJob{}の抽出物を作成し、次のビュー/ HTMLページを考えてみましょうフォームは以下をisset()を介してトリガされ、オブジェクト$newJob

作成され送信され
function uploadJob($category, $headline, $description, $location){ 

     $sql ="INSERT INTO jobs (category, headline, description, location) 
         VALUES(:category, :headline, :description, :location)"; 
     $stmnt = $db->prepare($sql); 
     $stmnt->bindValue(':category', $category); 
     $stmnt->bindValue(':headline', $headline); 
     $stmnt->bindValue(':description', $description); 
     $stmnt->bindValue(':location', $location); 
     $stmnt->execute(); 
     if($stmnt->rowCount() > 0){ 
      return $success = "Job Successfully Created"; 
     } 
     else{ 
      return $error = 'SOMETHING WENT WRONG'; 
     } 
    } 

if(isset($_POST['postJob'])){ 

     $obj = new CreateJob(); 

     $jobCategory = $_POST['jobCategory']; 
     $jobDescription = $_POST['jobDescription']; 
     $jobHeadline = $_POST['jobHeadline']; 
     $jobLocation = $_POST['jobLocation']; 

     $newJob = $obj->uploadJob($jobCategory, $jobDescription, $jobHeadline, $jobLocation); 
     } 

すべてが正常に動作します、しかしこのコードは私のための手続きに感じている、と私はいくつかのOOPの概念が欠落しています感じて...?

具体的には私の方法uploadJob()CreateJob{}クラス内にありますか、それともいくつかの点を変更する必要がありますか?

他のヘルプ/アドバイスをいただければ幸いです。私のルーキーを覚えておいてください!

EDIT:質問に答えるためにしようと

enter image description here

+0

SPONをトロウすることができます結局私はクラスが「ジョブ」を実装し、そのように呼び出されるべきだと言いたいと思います。 'Job'オブジェクトのメソッドはよく知られたCRUDアクションです:' create'、 'read'、' update'、 'delete'。だから、あなたはさまざまなソースから仕事を作り、それを使って仕事をすることができます。 – arkascha

+0

コメントしていただきありがとうございました心配しないでください!ありがとうございました –

+0

ここで詳述するものはありません。 _specific_質問がありますか?それ以外の場合は、よく知られているCRUDパターンに従ってください。 – arkascha

答えて

0

OOPはので、システム上の組織nはクラスで一番のとき、誰もがそれを表示する必要があります。ここ

は、私のテーブルjobsの一部です。 1つのクラスについてoop sinkingについて判断するのは難しいですが、ここで改善があります。

新しいパターンを作成するために工場パターンを使用しようとしています。クライアントコードでは、あなたもパラメータや$ _POST配列を取得しても良く、いくつかのオブジェクトの配列としてuploadJobとuploadJob方法

のために適切なオブジェクトにそれを変換するために

$obj = jobFactory::create(some params) 

より良いパス値のように見えることができますすることができコントローラ

try { 
     $obj = jobFactory::create(some params); 
    //but it's question why you need new object here? 
     $obj->uploadJob($obj with post parameters) 
    } 
    catch (Exception $e) { 
     echo 'Caught exception: ', $e->getMessage(), "\n"; 
    } 

とどこかuploadJobまたはjobFactory中に例 //のためのtryキャッチを使用する::作成エラー

関連する問題