Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MVCモデルで誰に何を任せれば良いのか?

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

 MVCモデルで誰に何を任せれば良いのか?

レガシーシステムにオレオレMVCを少しずつ構築にまつわり、社内からの質問と回答

Avatar for threetreeslight

threetreeslight

October 04, 2013
Tweet

More Decks by threetreeslight

Other Decks in Technology

Transcript

  1. MVCž±¹¢À¥·¾‰   ¡¸Ÿž¾¬   1.  HTTP¹¡ ¦¬     (URI,

     HTTP´§©­)   Rou�ng  /     Dispatcher   Controller   DB   Model   2.  URI…´§©­‰Y:   View   3.  ž¡¥·¾ÁA‰-#   5.  DB‰A   ÁCRUD   8.  ¶À¤ÀUKHTMLœB*   4   6   7   9   10.HTTP»¦³¾¦   Applica�on  
  2. Q:  DB‰90 ÁCRUDŠ_‰à   ’€šModel‰„zjUser  Table…User  Modelœ ˆ…ƒ^5yzj   User

     Table   User  Model  Class   SELECT  *  FROM  user  WHERE  id  =  100;   INSERT  INTO  user  VALUES(‘taro’);   Read:   User::find(100);   Create:   $user-­‐>save();   UPDATE  user  SET  name  =  ‘kotaro’  WHERE  id  =  100;   Update:   $user-­‐>save();   DELETE  user  WHERE  id  =  100;   Delete:   $user-­‐>destroy();  
  3. Q:  Dfq–Userb²¨¾r+x™~…sŠÃ   bq–…nƒiH/User  Model‰AœŒ}o…;yƒŠnv|jUserDfˆa ›˜AŠUser  Controller„¸©±z˜„¥¾±º‡Nœ ,yzj   User

     Table   User  Model  Class   Delete:   $user-­‐>destroy();   User  Controller  Class   delete-K   Rou�ng  /  Dispacher   Public  func�on  delete()  {      $id  =  $_GET[‘$id’];      $user  =  User::find($id);      $user.destroy();   }  
  4. Q:  UserOdDf‰UK…}‰AŠÃ   64Df‰UK…64AŠ5KGˆeyzjF‡˜.˜QnŠF‡˜´§©­ˆz˜w… „iC'’h—zj   User  Table   User

     Model  Class   Update:   $user-­‐>save();   User  Controller  Class   64‰-K   Rou�ng  /  Dispacher   Public  func�on  update()  {      $id  =  $_GET[‘$id’];      $name  =  $_POST[‘$name’];        $user  =  User::find($id);      $user-­‐>name  =  $name      $user.save();   }   Public  func�on  edit()  {      $id  =  $_GET[‘$id’];      //  smartyUKC!1      $user  =  User::find($id);   }   OdDf‰UK   Od  
  5. Q:  UserªÀ°ºˆa›˜ZLÁ@ÂAŠÃ   k¶À¤À‰1lk¶®À¡‰´Àºž­»¦„m˜qÃlk¯¦½À­ˆr™ƒn˜ qÃl‡†‰‰ªÀ°ºˆa›˜AŠiµ«º„Tnzj   User  Table   User

     Model  Class   SELECT  count(*)  as  count  FROM  user;   SELECT  count(*)  as  count  FROM  user     WHERE  mail  =  $user-­‐>mail;   count:   User::count();   Unique  check:   $user-­‐>isUniqueMail();   //  return  boolean  value   name  include  in  password:   $user  =  new  User();   $user-­‐>name  =  ‘hoge’;   $user-­‐>password  =  ‘hogehoge’   $user-­‐>isIncludedNameInPassword();   //  return  boolean  value  
  6. Q:  V1ªÀ°ºˆa›˜ZLÁ@ÂAŠÃ   V1‰Tableœ~uAŠi9Controllerˆ|˜Žs„zj p‹i¶À¤À…ž­»¦ ªÀ°ºr7˜…sˆiž­»¦œ’ƒt˜‰ŠUser  Modelq–ToŽs„Š7—|j   User  Table

      User  Model  Class   Public  func�on  show()  {      $user  =  User::findByEmail(‘[email protected]’);      $addresses  =  Address::findByUserId($user-­‐>id);     }   User  Controller  Class   Address  Model  Class   Address  Table  
  7. Q:  V1ªÀ°ºˆa›˜¬¸¾¤¡¥·¾ŠÃ   V1‰Tableœ~u64A’Controllerˆ|˜Žs…&ƒnzj~i}‰…sˆV 1‰£¾¬¼À¸‰update´§©­œCz˜Žs„Їn…PpƒzjÁ3#Š„s|Â   User  Table   User

     Model  Class   Public  func�on  show()  {        $user  =  User::findByEmail(‘[email protected]’);      $addresses  =  Address::findByUserId($user-­‐>id);          try{          $dbconnec�on-­‐>beginTransac�on  ();          $user-­‐>email  =  ‘[email protected]’;          $user-­‐>save();          foreach(  $addresses  as  $k  =>  $address  ){              $address-­‐>city  =  ‘tokyo’;              $address-­‐>save();          }          $dbconnec�on-­‐>commit();      }  catch  (Excep�on  $e)  {        $dbconnec�on-­‐>rollback();      }   }   User  Controller  Class   Address  Model  Class   Address  Table  
  8. Q:  £¾¬¼À¸ÀŠ à   1view  1controller„Їti9ªÀ°ºÁ=JˆŠURI‰…—ÂrRn…Ppƒ zj   User  Table

      User  Model  Class   //  ¶À¤À‰XUK   Public  func�on  index()  {}     //  ¶À¤À‰[MUK   Public  func�on  show()  {}     //  ¶À¤À‰4W`   Public  func�on  new()  {}     //  ¶À¤À‰ *   Public  func�on  create()  {}     //  ¶À¤À‰(‰Od   Public  func�on  edit()  {}     //  ¶À¤À‰64   Public  func�on  update()  {}     //  ¶À¤À‰b   Public  func�on  delete()  {}   User  Controller  Class   //  ¶À¤À‰XUK   /user  (  get  method  )     //  ¶À¤À‰[MUK   /user/:id  (  get  method  )     //  ¶À¤À‰4W`   /user/new  (  get  method  )     //  ¶À¤À‰ *   /user  (  create  method  )     //  ¶À¤À‰(‰Od   /user/:id/edit    (  get  method  )     //  ¶À¤À‰64   /user/:id    (  put/patch  method  )     //  ¶À¤À‰b   /user/:id    (  delete  method  )   Router  /  Dispacher   URI‰…—   Address  Model  Class   Address  Table  
  9. Q:  ªÀ°ºˆa›–‡nview‰£¾¬¼À¸ÀŠÃ   8UK‰DfÁView‡†ŠªÀ°ºˆa›–‡n“idashbord‰•o‡ rm—zj }‰cŠ)ˆ£¾¬¼À¸Àœ ƒyƒg‡n„zj   //  8UK

      Public  func�on  index()  {}     //  dashbord   Public  func�on  dashbord(){}   Root  Controller  Class   //  ¶À¤À‰XUK   /   Router  /  Dispacher   URI‰…—  
  10. !1…´§©­   ŠœUyzj!1“´§©­ŠIE|{i5KG‡œvy”oj   ~i´§©­ŠS]‰2?Gˆ=yt‚v˜…iAYr   //  user  1  

    $user  =  User::find(1);     //  user  V1   $users  =  User::findAllByCity(‘Tokyo’);     //  V1User‰foreach   foreach($users  as  $key  =>  $user  ){    …   }   !1   //  user‰1   $user  =  User::count  (1);     //  //  user‰´ÀºJ\œ"yƒn˜qà   //  ‘‡   $user.iv();     //  Rn   $user.isVerified();     //  V1User‰foreach   foreach($users  as  $key  =>  $user  ){    …   }   a1