{"id":217,"date":"2014-03-17T19:15:24","date_gmt":"2014-03-17T11:15:24","guid":{"rendered":"http:\/\/blog.turn.tw\/?p=217"},"modified":"2014-03-17T19:15:24","modified_gmt":"2014-03-17T11:15:24","slug":"mvc%ef%bc%8c%e4%bb%a4%e4%ba%ba%e6%90%9e%e4%b8%8d%e6%87%82%e7%9a%84model%e3%80%82","status":"publish","type":"post","link":"https:\/\/blog.turn.tw\/?p=217","title":{"rendered":"MVC\uff0c\u4ee4\u4eba\u641e\u4e0d\u61c2\u7684Model\u3002"},"content":{"rendered":"<p>\u81ea\u5b78web\u958b\u767c\u5169\u5e74\uff0c\u5c0dMVC\u4e00\u76f4\u4e00\u77e5\u534a\u89e3\uff0c\u5e38\u5728\u60f3\u600e\u6a23\u8a2d\u8a08\u7cfb\u7d71\u6703\u6700\u6f02\u4eae\u3002\u6574\u7406\u4e86\u4e00\u4e0b\u76ee\u524d\u7684\u7406\u89e3\uff0c\u4ee5Model\u51fa\u767c\u8ddf\u5404\u4f4d\u5206\u4eab\u3002\u5176\u4e2d\u6709\u5beb\u932f\u7684\u90e8\u4efd\u4e5f\u671f\u5f85\u5404\u4f4d\u524d\u8f29\u6307\u6559\u3002<\/p>\n<p><em style=\"line-height: 1.5;\"><span style=\"line-height: 1.5;\">Q1: \u4e00\u500bmodel\u5c0d\u61c9\u5230\u8cc7\u6599\u5eab\u4e00\u5f35table\u5c0d\u55ce?<\/span><\/em><\/p>\n<p>\u4e0d\u5c0d\u3002\u96d6\u7136\u5927\u90e8\u5206framework\u5be6\u4f5c\u90fd\u6703\u5c07\u4e00\u5f35table\u5c0d\u61c9\u5230model\u5167\u4e00\u500bclass\uff0c\u4f46\u300c\u4e00\u500bmodel\u5c0d\u61c9\u4e00\u5f35table\u300d\u6bd4\u8f03\u50cf\u662f\u5728\u63cf\u8ff0ORM\u4e4b\u985e\u5e6b\u52a9\u7c21\u5316\u8cc7\u6599\u5eabSQL\u64cd\u4f5c\u7684class\uff0c\u800cmodel\u662f\u300c\u8655\u7406\u8ddf\u67d0\u5f35table\u76f8\u95dc\u4efb\u52d9\u7684class\u300d\u3002<\/p>\n<p>\u5dee\u5225\u4f55\u5728\uff1f<strong>\u4e00\u500bmodel\u53ef\u80fd\u6703\u8655\u7406\u5230\u591a\u5f35table\u7684\u8cc7\u6599\uff0c\u4e5f\u53ef\u80fd\u4e00\u5f35table\u90fd\u4e0d\u78b0<\/strong>\uff0c\u7d14\u7cb9\u8655\u7406\u4e00\u4e32\u5546\u696d\u908f\u8f2f\u3002\u8209\u4f8b\u4f86\u8aaa\uff0c\u53ef\u80fd\u6703\u6709\u500b\u8ca0\u8cac\u6574\u7406\u884c\u92b7\u8cc7\u6599\u7684model\u53ebMarketing\uff0c\u5f9e\u591a\u5f35table\u6488\u8cc7\u6599\u51fa\u4f86\uff0c\u6574\u7406\u4e4b\u5f8c\u4e1f\u7d66controller\u3002\u800c\u8cc7\u6599\u5eab\u4e2d\u53ef\u80fd\u6709\uff0c\u4e5f\u53ef\u80fd\u6c92\u6709\u300cmarketing\u300d\u9019\u5f35table\u3002<\/p>\n<p><em>Q2: \u53ef\u662f\u6211\u5beb\u5c08\u6848\u5e7e\u4e4e\u4e00\u500bmodel\u5c0d\u61c9\u5230\u4e00\u5f35table\u554a\uff1f<\/em><\/p>\n<p>\u56e0\u70ba\u5be6\u52d9\u4e0a\u4e00\u500b\u670d\u52d9\u5e38\u6703\u5c0d\u61c9\u5230\u4e00\u500bmodel\uff0c\u800c\u63d0\u4f9b\u9019model\u6240\u9700\u7684\u8cc7\u6599\u5e38\u5e38\u5c31\u53ea\u662f\u4e00\u5f35table\u3002\u6240\u4ee5\u8a31\u591a\u60c5\u6cc1\u4e0b\u7684\u78ba\u662f\u4e00\u5f35model\u5c0d\u61c9\u5230\u4e00\u5f35table\u6c92\u932f\u3002<\/p>\n<p>\u4f46\u4e5f\u4e0d\u80fd\u8aaa\u662f\u300c\u4e00\u5f35\u300dtable\u3002model\u5167\u5e38\u6703\u53bbjoin\u5176\u4ed6\u76f8\u95dc\u7684table\u5c0d\u5427\uff1f\u6240\u4ee5\u8aaa\u300cmodel\u5c0d\u61c9\u5230\u4e00\u5f35table\u300d\u6216\u662f\u300cmodel\u5c31\u662f\u4e00\u7a2eORM\u300d\u90fd\u662f<strong>\u4e0d\u7cbe\u78ba\u800c\u8aa4\u5c0e\u7684\u8aaa\u6cd5<\/strong>\u3002\u96d6\u7136\u5beb\u8d77\u4f86\u5e38\u6703\u6709\u9019\u7a2e\u932f\u89ba\u3002<\/p>\n<p><em>Q3: \u90a3\u4f60\u7528\u4e00\u500b\u4e0d\u6703\u8aa4\u5c0e\u53c8\u7cbe\u78ba\u7684\u8aaa\u6cd5\u63cf\u8ff0model\u7d66\u6211\u770b\uff1f<\/em><\/p>\n<p>\u300c<strong>model\u662flayer<\/strong>\u300d\u3002\u4e0d\u8981\u628aMVC\u4e2d\u7684M\u8ddfVC\u60f3\u6210\u5e73\u884c\u7684\u5206\u5de5\u95dc\u4fc2\uff0c<strong>\u628aVC\u8ddfM\u60f3\u6210\u4e0a\u5f80\u4e0b\u7684\u5e7e\u5c64layer<\/strong>\u3002VC\u6700\u9760\u8fd1\u4f7f\u7528\u8005\u3001\u4e0b\u4f86\u662fM\u3001\u518d\u4e0b\u4f86\u662fdatabase\u3002\u6240\u4ee5VC\u8981\u53d6\u5f97\u8cc7\u6599\u5eab\u7684\u8cc7\u6599\u90fd\u8981\u900f\u904emodel\uff0c\u800c\u4e0d\u540c\u4efb\u52d9\u6709\u4e0d\u540cmodel\u3002<\/p>\n<p><em>Q4: \u807d\u4e0d\u592a\u61c2\uff0c\u8ac7\u9ede\u5225\u7684\u597d\u4e86\u3002\u5f9eRails\u793e\u7fa4\u6d41\u51fa\u4e00\u53e5\u5f88\u6d41\u884c\u7684MVC\u539f\u5247\u300cfat model, skinny controller\u300d\uff0c\u4f60\u5c0d\u6b64\u6709\u4ec0\u9ebc\u60f3\u6cd5\uff1f<\/em><\/p>\n<p>\u9019\u53e5\u8a71\u5c0d\u521d\u5b78\u8005\u6709\u5e6b\u52a9\uff0c\u5c0d\u9032\u968e\u8005\u6709\u5bb3\u3002\u300cfat model, skinny controller\u300d\u9019\u53e5\u8a71\u53ef\u4ee5\u63d0\u9192\u521d\u5b78\u8005\u76e1\u91cf\u628acode\u4e1f\u9032model\u5225\u4e1f\u9032controller\u3002\u4f60\u518d\u770b\u4e00\u6b21\u6211Q3\u7684\u56de\u7b54\uff0c\u4e00\u500b\u61c9\u7528\u7a0b\u5f0f\u7684\u6700\u91cd\u8981\u90e8\u4efd\uff08\u5546\u696d\u908f\u8f2f\u3001\u5b89\u5168\u6027\u3001\u6548\u80fd\uff09\u672c\u4f86\u5c31\u662f\u8ddf\u8cc7\u6599\u5eab\u4e92\u52d5\u7684\u90a3\u5c64layer\uff0c\u4e5f\u5c31\u662fmodel\uff0c\u6240\u4ee5\u628acode\u4e1f\u9032model\u5225\u4e1f\u9032controller\u53ef\u4ee5\u6697\u793a\u521d\u5b78\u8005\u5beb\u51fareusable\u7684code\u3002<\/p>\n<p>\u4f46\u662f\u628a\u592a\u591acode\u5beb\u9032model\u6703\u5f62\u6210god pattern\uff0c\u4e5f\u5c31\u662f<strong>\u67d0\u500bmodel\u8ddf\u795e\u4e00\u6a23\u8ca0\u8cac\u7d55\u5927\u90e8\u5206\u7684\u4efb\u52d9\uff0c\u5c0e\u81f4\u7dad\u8b77\u8d77\u4f86\u6709\u56f0\u96e3<\/strong>\uff08\u60f3\u50cf\u4f60\u521d\u5b78PHP\u628a\u5168\u90e8code\u5beb\u5728\u540c\u4e00\u4efd\u6a94\u6848\u7684\u6050\u6016\u60c5\u6cc1\uff09\u3002<\/p>\n<p><em>Q5: \u53c8\u8aaacode\u8981\u76e1\u91cf\u4e1f\u9032model\uff0c\u53c8\u8aaamodel\u5167code\u592a\u591a\u5f88\u4e0d\u597d\uff0c\u4e0d\u7136code\u5230\u5e95\u8981\u4e1f\u54ea\uff1f<\/em><\/p>\n<p>library\u4ee5\u53cahelper\u3002\u73fe\u5728\u5927\u90e8\u5206\u7684framework\u90fd\u9810\u8a2d\u6709\u653elibrary\u4ee5\u53cahelper\u7684\u5730\u65b9\u3002\u4e0d\u4f7f\u7528framework\u7684\u8a71\u4f60\u4e5f\u53ef\u4ee5\u81ea\u5df1\u958b\u9019\u5169\u500b\u8cc7\u6599\u593e\u3002<\/p>\n<p>\u591a\u500bmodel\u5e38\u505a\u7684\u540c\u5e7e\u4ef6\u4e8b\u53ef\u4ee5\u5305\u8d77\u4f86\u5beb\u6210library\uff0c\u800c\u55ae\u7d14\u7684\u8cc7\u6599\u683c\u5f0f\u8f49\u63db\uff08\u751a\u81f3\u662f\u7522\u751f\u76f8\u95dchtml\/css\uff09\u4e4b\u985e\u7684\u4efb\u52d9\u53ef\u4ee5\u5beb\u6210helper\u3002\u8b93model\u4e3b\u8981\u5c08\u6ce8\u5728\u5546\u696d\u908f\u8f2f\uff08\u9019\u662f\u6700\u82b1\u529f\u592b\u7684\u5730\u65b9\uff09\uff0c\u5176\u9918\u7684\u642c\u5230library\u3001helper\u3001\u6216\u662f\u6709\u4e9bframework\u7a31\u4e4b\u70bathird_party\u6216package\u7684\u4ec0\u9ebc\u5730\u65b9\u90fd\u597d\u3002\u5225\u4e1f\u9032controller\uff01\u66f4\u5225\u4e1f\u9032view\u3002<\/p>\n<p><em>Q6: \u597d\u5427\u3002\u53ef\u662f\u6211\u958b\u767c\u6642\u5728controller\u8ddfmodel\u5167\u771f\u7684\u6703\u4e0d\u5c0f\u5fc3\u5c31\u5beb\u6389\u5927\u90e8\u5206\u4efb\u52d9\uff0c\u9019\u6a23\u5beb\u771f\u7684\u6bd4\u8f03\u5feb\u963f\u3002\u4f60\u958b\u767c\u6642\uff0c\u4e0a\u9762\u8aaa\u7684\u4f60\u81ea\u5df1\u6709\u6c92\u6709\u90fd\u505a\u5230\uff1f<\/em><\/p>\n<p>\u6c92\u6709\u3002\u539f\u56e0\u6709\u5169\u500b\u3002\u4e00\uff0c\u5be6\u52d9\u4e0a\u7684\u78ba\u5f88\u96e3\u5728\u4e00\u958b\u59cb\u5c31\u628a\u67b6\u69cb\u60f3\u6e05\u695a\uff0c\u6240\u4ee5\u4e00\u5806\u4efb\u52d9\u6703\u4e1f\u7d66model\u3002\u4e8c\uff0c\u5e38\u5e38\u8d8a\u5f80\u4e0b\u5beb\u624d\u767c\u73fe\u67d0\u4e9b\u4efb\u52d9\u662f\u5171\u901a\u7684\u3001\u67d0\u4e9b\u4efb\u52d9\u4e00\u958b\u59cb\u53ea\u662f\u300c\u7c21\u55ae\u300d\u8655\u7406\u8cc7\u6599\u8f49\u63db\uff0c\u5beb\u5230\u5f8c\u4f86\u8b8a\u6210\u300c\u8907\u96dc\u7684\u300d\u8655\u7406\u8cc7\u6599\u8f49\u63db\uff0c\u6211\u8a8d\u70ba\u9019\u6642\u518d\u628a\u5b83\u62c9\u51fa\u4f86\u6210\u70balibrary\u6216helper\u5373\u53ef\u3002\u91cd\u69cb\u672c\u4f86\u5c31\u662f\u4e0d\u65b7\u5728\u505a\u7684\u4e8b\u60c5\uff0c\u6642\u6a5f\u5230\u4e86\u5c31\u505a*\uff08\u8a3b1\uff09\u3002<\/p>\n<p><em>Q7: \u6211\u77e5\u9053library\u8ddfhelper\u7684\u5730\u4f4d\u4f55\u5728\u4e86\u3002\u4f46\uff0clibrary\u8ddfhelper\u7684\u5dee\u5225\u53c8\u4f55\u5728\uff1f<\/em><\/p>\n<p>\u8edf\u9ad4\u958b\u767c\u6642\uff0c\u6709\u6642\u6703\u5beb\u5e7e\u500bfunction\u6216method\u89e3\u6c7a\u67d0\u4e9b\u4efb\u52d9\uff0c\u6709\u6642\u5019\u89ba\u5f97\u9019\u6a23\u592a\u9b06\u6563\uff0c\u6703\u5305\u6210class\u3002library\u5e38\u5e38\u662fclass\u3001helper\u5e38\u5e38\u662f\u4e00\u7d44function\u3002\u4ee5\u6211\u81ea\u5df1\u4f86\u8aaa\uff0c\u5e38\u5728controller\u6216view\u4f7f\u7528helper\uff0c\u5728model\u4f7f\u7528library\u3002<\/p>\n<p><em>Q8: \u95dc\u65bcmodel\uff0c\u6700\u5f8c\u6709\u6c92\u6709\u8981\u63d0\u9192\u7684\uff1f<\/em><\/p>\n<p>\u4e0d\u8981\u5728model\u88e1\u9762\u7528session variable\u3002\u7528\u4e0b\u53bb\uff0c\u90a3model\u6839\u672c\u4e0d\u518dreusable\uff08\u5176\u4ed6controller\u7528\u4e4b\u524d\u9084\u8981\u5148\u8a2d\u5b9a\u597d\u76f8\u95dcsession\uff09\u3002\u9023unit testing\u90fd\u6bc0\u4e86\u3002\u89e3\u6c7a\u4e4b\u9053\u662fdependency injection\u3002session variable\u67d0\u7a2e\u7a0b\u5ea6\u4f86\u8aaa\u6839\u672c\u5c31\u662fglobal variable\uff0c\u6feb\u7528global variable\u662f\u5f88\u4e0d\u597d\u7684\u3002<\/p>\n<p><em>\u8a3b1\uff1a\u9019\u6bb5\u8a71\u53ef\u80fd\u5f88\u6709\u554f\u984c\u3002\u6211\u5728startup\u5de5\u4f5c\uff0c\u958b\u767c\u4e0a\u6975\u5ea6\u6ce8\u91cd\u300c\u901f\u5ea6\u300d\uff0c\u5e38\u70ba\u4e86\u62fc\u4e0a\u7dda\u6642\u9593\u800c\u6368\u68c4\u5176\u4ed6\u4e8b\u60c5\u3002<\/em><\/p>\n<p>(Photo via\u00a0\u00a0<a href=\"https:\/\/www.flickr.com\/photos\/72213316@N00\/\">Alaskan Dude<\/a>, CC License)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u81ea\u5b78web\u958b\u767c\u5169\u5e74\uff0c\u5c0dMVC\u4e00\u76f4\u4e00\u77e5\u534a\u89e3\uff0c\u5e38\u5728\u60f3\u600e\u6a23\u8a2d\u8a08\u7cfb\u7d71\u6703\u6700\u6f02\u4eae\u3002\u6574\u7406\u4e86\u4e00\u4e0b\u76ee\u524d\u7684\u7406\u89e3\uff0c\u4ee5Model\u51fa\u767c\u8ddf &hellip; <a href=\"https:\/\/blog.turn.tw\/?p=217\" class=\"more-link\">\u7e7c\u7e8c\u95b1\u8b80 <span class=\"screen-reader-text\">MVC\uff0c\u4ee4\u4eba\u641e\u4e0d\u61c2\u7684Model\u3002<\/span> <span class=\"meta-nav\">&rarr;<\/span> <\/a><\/p>\n","protected":false},"author":1,"featured_media":236,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false},"categories":[2],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.turn.tw\/index.php?rest_route=\/wp\/v2\/posts\/217"}],"collection":[{"href":"https:\/\/blog.turn.tw\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.turn.tw\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.turn.tw\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.turn.tw\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=217"}],"version-history":[{"count":24,"href":"https:\/\/blog.turn.tw\/index.php?rest_route=\/wp\/v2\/posts\/217\/revisions"}],"predecessor-version":[{"id":246,"href":"https:\/\/blog.turn.tw\/index.php?rest_route=\/wp\/v2\/posts\/217\/revisions\/246"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.turn.tw\/index.php?rest_route=\/wp\/v2\/media\/236"}],"wp:attachment":[{"href":"https:\/\/blog.turn.tw\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=217"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.turn.tw\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=217"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.turn.tw\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=217"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}