2017-04-08 41 views
1

即时消息试图摆脱程序代码,并开始与OOP湿我的脚,这是慢,但我正在学习。我想就以下一些帮助/意见:PHP OOP上传表单条目

考虑以下视图/ HTML网页,其中创建了一个简单的形式

enter image description here

我创建看起来像这样的类CreateJob{}的摘录:

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'; 
     } 
    } 

当表单提交了下述触发经由isset()和对象$newJob创建

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{}类正确还是应该改变它的某些方面呢?

其他任何帮助/建议感激。请记住我是菜鸟!

编辑:

这里是我的表jobs的一部分,应该有人要试图回答这个问题

enter image description here

+0

斯波我会说班级应该实施一个'工作'并且被这样调用。 'Job'对象上的方法可以是众所周知的CRUD操作:'create','read','update','delete'。所以你可以创建一个来自不同来源的工作,并“与之合作”。 – arkascha

+0

谢谢您的意见,请你能详细说明你是否不介意!谢谢 –

+0

这里没有更详细的说明。你有一个具体的问题吗?否则,只需遵循众所周知的CRUD模式。 – arkascha

回答

0

OOP时查看它是最有关系统上的组织N个类别等等很难判断一个类别的下降,但这里可以有所改进

尝试使用工厂模式创建新对象。在客户端代码也可以是貌似

$obj = jobFactory::create(some params) 

更好的值传递给uploadJob作为参数数组,甚至更好一些对象得到$ _POST数组并把它转换成合适的对象uploadJob方法

,你也可以使用尝试捕捉例如 //在控制器

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或:创建可特罗错误