{"id":773,"date":"2009-02-23T13:51:40","date_gmt":"2009-02-23T10:51:40","guid":{"rendered":"http:\/\/mkifiles.ru\/blog\/post\/mvc-codigniter"},"modified":"2023-08-03T12:07:29","modified_gmt":"2023-08-03T09:07:29","slug":"mvc-codeigniter","status":"publish","type":"post","link":"https:\/\/kmarchenko.ru\/blog\/2009\/02\/23\/mvc-codeigniter\/","title":{"rendered":"MVC \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 CodeIgniter"},"content":{"rendered":"\n<p>\u041d\u0430 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u0430\u0439\u0442\u0435 \u0435\u0441\u0442\u044c <a href=\"https:\/\/codeigniter.com\/user_guide\/tutorial\/index.html\">\u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b,<\/a>&nbsp; \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043d\u043e \u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430, \u043c\u043e\u0434\u0435\u043b\u044c \u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0438 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435. \u0414\u0430\u043b\u0435\u0435 \u043f\u043e\u043f\u044b\u0442\u0430\u044e\u0441\u044c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c MVC \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432\u044b\u0432\u043e\u0434\u0430 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0432 \u0431\u043b\u043e\u0433\u0435.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h4 class=\"wp-block-heading\">\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Model \u2014 View \u2014 Controller?<\/h4>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/mkifiles.ru\/img\/forhabra\/mvc.png\" alt=\"\u041c\u043e\u0434\u0435\u043b\u044c MVC\"\/><\/figure>\n\n\n\n<p>Models (\u041c\u043e\u0434\u0435\u043b\u044c) \u2014 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435.<br>Views (\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435) \u2014 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u0430\u043d\u043d\u044b\u0435.<br>Controllers (\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440) \u2014 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043c\u043e\u0434\u0435\u043b\u044c\u044e \u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c.<br>\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0437\u0430\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u043d\u0430\u0448\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443. \u0412 \u044d\u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u041c\u043e\u0434\u0435\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 10 \u0437\u0430\u043f\u0438\u0441\u0435\u0439. \u0414\u0430\u043b\u0435\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0438\u0437 \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0432 \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u0430\u043a \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c mvc \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 codeigniter.<\/h4>\n\n\n\n<p><strong>Sql<\/strong><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><code><span style=\"color: black;\"><span style=\"color: #0000ff;\">CREATE<\/span> <span style=\"color: #0000ff;\">TABLE<\/span> `entries` (<br>\n`id` <span style=\"color: #0000ff;\">int<\/span>(11) <span style=\"color: #0000ff;\">NOT<\/span> <span style=\"color: #0000ff;\">NULL<\/span> AUTO_INCREMENT,<br>\n`anons` text,<br>\n`title` <span style=\"color: #0000ff;\">varchar<\/span>(255) <span style=\"color: #0000ff;\">DEFAULT<\/span> <span style=\"color: #0000ff;\">NULL<\/span>,<br>\n`info` text,<br>\n`date_` datetime <span style=\"color: #0000ff;\">DEFAULT<\/span> <span style=\"color: #0000ff;\">NULL<\/span>,<br>\n<span style=\"color: #0000ff;\">PRIMARY<\/span> <span style=\"color: #0000ff;\">KEY<\/span> (`id`)<br>\n) ENGINE=MyISAM <span style=\"color: #0000ff;\">DEFAULT<\/span> CHARSET=utf8<\/span><\/code><\/p>\n<\/blockquote>\n\n\n\n<p><strong>Model<\/strong><\/p>\n\n\n\n<p>\u041f\u0435\u0440\u0432\u043e\u0435, \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u041c\u043e\u0434\u0435\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u0432\u0441\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0438\u0437 \u0431\u043b\u043e\u0433\u0430.<br>\u041d\u0430\u0448\u0430 MBlog \u041c\u043e\u0434\u0435\u043b\u044c (\u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \/system\/application\/models\/mblog.php) \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><code><span style=\"color: black;\"><span style=\"color: #0000ff;\">class<\/span> MBlog extends Model{<br>\nfunction MBlog(){<br>\nparent::Model();<br>\n}<\/span><\/code><\/p>\n\n\n\n<p>function getAllEntries(){<br>$data = array();<br>$Q = $<span style=\"color: #0000ff;\">this<\/span>&#8212; &gt; db- &gt; <span style=\"color: #0000ff;\">get<\/span>(\u2018entries\u2019);<br><span style=\"color: #0000ff;\">if<\/span> ($Q- &gt; num_rows() &gt; 0){<br><span style=\"color: #0000ff;\">foreach<\/span> ($Q- &gt; result_array() <span style=\"color: #0000ff;\">as<\/span> $row){<br>$data[] = $row;<br>}<br>}<br>$Q- &gt; free_result();<br><span style=\"color: #0000ff;\">return<\/span> $data;<br>}<br>}<\/p>\n<\/blockquote>\n\n\n\n<p><strong>Controller<\/strong><\/p>\n\n\n\n<p>\u0412\u0442\u043e\u0440\u043e\u0435, \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 Blog (\u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \/system\/application\/controllers\/blog.php). \u041e\u043d \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><code><span style=\"color: black;\"><span style=\"color: #0000ff;\">class<\/span> Blog extends Controller {<br>\nfunction Blog(){<br>\nparent::Controller();<br>\n$<span style=\"color: #0000ff;\">this<\/span>-&gt;load-&gt;model(<span style=\"color: #a31515;\">'MBlog'<\/span>);<br>\n}<br>\n<\/span><\/code><\/p>\n\n\n\n<p><code><span style=\"color: black;\">function index(){<br>\n$data[\u2018title\u2019] = \u201c\u041c\u043e\u0439 \u0411\u043b\u043e\u0433\u201d;<br>\n$data[\u2018entries\u2019] = $<span style=\"color: #0000ff;\">this<\/span>-&gt; MBlog-&gt; getAllEntries();<br>\n$<span style=\"color: #0000ff;\">this<\/span>-&gt; load-&gt; vars($data);<br>\n$<span style=\"color: #0000ff;\">this<\/span>-&gt; load-&gt; view(\u2018template\u2019);<br>\n}<br>\n}<\/span><\/code><\/p>\n<\/blockquote>\n\n\n\n<p>\u0427\u0442\u043e \u0436\u0435 \u0442\u0443\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442?<br>1. $data[ \u2019 title\u2019] \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u043a\u0430\u043a $title \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0435 \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f.<br>2. \u0417\u0430\u043f\u0438\u0441\u0438 \u0431\u043b\u043e\u0433\u0430 \u0438\u0437 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u043c\u0435\u0449\u0435\u043d\u044b \u0432 $data[\u2018navlist\u2019] \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u041c\u043e\u0434\u0435\u043b\u0438 MBlog.<br>3. \u0412\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 $data \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0432 \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435.<\/p>\n\n\n\n<p><strong>View<\/strong><\/p>\n\n\n\n<p>\u0422\u0440\u0435\u0442\u044c\u0435, \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 template (\u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \/system\/application\/views\/template.php), \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0432\u0441\u0435 \u0437\u0430\u043f\u0438\u0441\u0438. \u041e\u043d \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><code><span style=\"color: black;\">&lt;!DOCTYPE html PUBLIC \u201c-<span style=\"color: #008000;\">\/\/W3C\/\/DTD XHTML 1.0 Strict\/\/EN\u201d \u201chttp:\/\/www.w3.org\/TR\/xhtml1\/DTD\/xhtml1-strict.dtd\u201d&gt;<\/span><br>\n&lt;html xmlns=\u201dhttp:<span style=\"color: #008000;\">\/\/www.w3.org\/1999\/xhtml\u201d xml:lang=\u201den\u201d lang=\u201den\u201d&gt;<\/span><br>\n&lt;head &gt;<br>\n&lt;meta http-equiv=\u201dcontent-type\u201d content=\u201dtext\/html; charset=utf-8\u201d \/&gt;<br>\n&lt;title&gt; &lt;?php echo $title; ?&gt; &lt;\/title&gt;<br>\n&lt;\/head&gt;<br>\n&lt;body&gt;<br>\n&lt;?php <span style=\"color: #0000ff;\">foreach<\/span>($entries <span style=\"color: #0000ff;\">as<\/span> $row){<br>\n<span style=\"color: #008000;\">\/\/\u0432\u044b\u0432\u043e\u0434\u0438\u043c \u043d\u0430\u0448\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0431\u043b\u043e\u0433\u0430<\/span><br>\n};<br>\n?&gt;<br>\n&lt;\/body&gt;<br>\n&lt;\/html&gt;<\/span><\/code><code><\/code><\/p>\n<\/blockquote>\n\n\n\n<p>\u0412\u043e\u0442 \u0438 \u0432\u0441\u0435. \u0414\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0434\u0430\u0442\u044c \u0441\u043e\u0432\u0435\u0442 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0431\u043b\u043e\u0433 \u043f\u043e \u0432\u0438\u0434\u0435\u043e, \u0430 \u043f\u043e\u0442\u043e\u043c \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e.<\/p>\n\n\n\n<p>\u0427\u0442\u043e\u0431\u044b \u0438\u043c\u0435\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0433\u043b\u0443\u0431\u043e\u043a\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u0430\u043a \u044d\u0442\u043e \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c <a href=\"http:\/\/inktype.org\/\">\u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u043e\u0434\u043d\u043e\u0439 CMS<\/a>.<\/p>\n\n\n\n<p>\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041d\u0430 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u0430\u0439\u0442\u0435 \u0435\u0441\u0442\u044c \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b,&nbsp; \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043d\u043e \u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430, \u043c\u043e\u0434\u0435\u043b\u044c \u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0438 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435. \u0414\u0430\u043b\u0435\u0435 \u043f\u043e\u043f\u044b\u0442\u0430\u044e\u0441\u044c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c MVC \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432\u044b\u0432\u043e\u0434\u0430 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0432 \u0431\u043b\u043e\u0433\u0435.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[10,89],"class_list":["post-773","post","type-post","status-publish","format-standard","hentry","category-work","tag-class","tag-php"],"_links":{"self":[{"href":"https:\/\/kmarchenko.ru\/blog\/wp-json\/wp\/v2\/posts\/773"}],"collection":[{"href":"https:\/\/kmarchenko.ru\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kmarchenko.ru\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kmarchenko.ru\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kmarchenko.ru\/blog\/wp-json\/wp\/v2\/comments?post=773"}],"version-history":[{"count":6,"href":"https:\/\/kmarchenko.ru\/blog\/wp-json\/wp\/v2\/posts\/773\/revisions"}],"predecessor-version":[{"id":2434,"href":"https:\/\/kmarchenko.ru\/blog\/wp-json\/wp\/v2\/posts\/773\/revisions\/2434"}],"wp:attachment":[{"href":"https:\/\/kmarchenko.ru\/blog\/wp-json\/wp\/v2\/media?parent=773"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kmarchenko.ru\/blog\/wp-json\/wp\/v2\/categories?post=773"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kmarchenko.ru\/blog\/wp-json\/wp\/v2\/tags?post=773"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}