1 00:00:00,000 --> 00:00:02,150 >> [Hội thảo] [Kohana: Một Nhẹ PHP Framework] 2 00:00:02,150 --> 00:00:04,000 [Brandon Liu] [Đại học Harvard] 3 00:00:04,000 --> 00:00:07,270 [Đây là CS50.] [CS50.TV] 4 00:00:07,270 --> 00:00:09,130 >> Hi tất cả mọi người. Tôi tên là Brandon. 5 00:00:09,130 --> 00:00:11,000 Tôi là một cơ sở ở đây tại các trường đại học làm khoa học máy tính, và hôm nay chúng ta sẽ nói về 6 00:00:11,000 --> 00:00:14,460 Kohana, mà là một PHP framework phát triển web. 7 00:00:14,460 --> 00:00:17,260 Hôm nay là có được một cuộc hội thảo mã hóa trực tiếp, 8 00:00:17,260 --> 00:00:21,000 vì vậy tôi về cơ bản sẽ dành 5-10 phút giải thích những gì Kohana là, 9 00:00:21,000 --> 00:00:25,000 và sau đó tôi theo nghĩa đen sẽ xây dựng một blog siêu đơn giản 10 00:00:25,000 --> 00:00:28,570 cho bạn ngay tại đây theo nghĩa đen từ đầu. 11 00:00:28,570 --> 00:00:32,229 Chúng ta sẽ tải về mã từ trang web của Kohana, 12 00:00:32,229 --> 00:00:35,000 và chúng ta sẽ bắt đầu xây dựng một blog, và hy vọng nó sẽ rất giáo hóa, 13 00:00:35,000 --> 00:00:37,000 bởi vì bạn sẽ thấy có lẽ có lẽ tôi sẽ làm cho một số sai lầm, 14 00:00:37,000 --> 00:00:39,000 và bạn sẽ thấy tôi hồi phục từ họ, 15 00:00:39,000 --> 00:00:42,040 hoặc bạn sẽ thấy quá trình suy nghĩ của tôi khi tôi xây dựng thông qua blog này, 16 00:00:42,040 --> 00:00:44,000 và trong khi đó, bạn cũng sẽ làm quen với các khuôn khổ chính nó. 17 00:00:44,000 --> 00:00:48,000 Hy vọng nó sẽ là một bài tập rất bài học. 18 00:00:48,000 --> 00:00:51,370 >> Đầu tiên, những gì chính xác là một khuôn khổ? 19 00:00:51,370 --> 00:00:54,000 Nếu bạn đã được tham gia CS50 cho đến nay, bạn đã không thực sự làm việc với bất kỳ 20 00:00:54,000 --> 00:00:56,000 khuôn khổ nêu ra, và điều này là này. 21 00:00:56,000 --> 00:01:00,000 Bạn đã có thể thực hiện 1 phát triển web pset đã, 22 00:01:00,000 --> 00:01:03,000 và chúng ta hãy nói rằng bạn tiếp tục xây dựng các trang web và giữ các trang web xây dựng. 23 00:01:03,000 --> 00:01:05,000 Bạn sẽ bắt đầu nhận thấy một vài điều. 24 00:01:05,000 --> 00:01:07,000 Điều đầu tiên bạn sẽ nhận thấy là có lẽ bạn đang làm những điều tương tự 25 00:01:07,000 --> 00:01:09,150 hơn và hơn nữa tất cả các thời gian, 26 00:01:09,150 --> 00:01:13,000 những thứ như làm sạch dữ liệu người dùng nhập vào, 27 00:01:13,000 --> 00:01:17,250 những thứ như tổ chức các file của bạn một cách nào đó. 28 00:01:17,250 --> 00:01:19,000 Một điều khác bạn cũng sẽ có thể nhận thấy là mã của bạn 29 00:01:19,000 --> 00:01:21,000 có thể bắt đầu trở nên rất, rất lộn xộn, 30 00:01:21,000 --> 00:01:24,000 và bạn có thể để nó lộn xộn và chỉ có một thời gian rất khó duy trì nó, 31 00:01:24,000 --> 00:01:26,000 hoặc bạn có thể bắt đầu cấu trúc mã của bạn và làm cho nó mô-đun 32 00:01:26,000 --> 00:01:28,510 theo những cách nhất định để làm cho nó dễ bảo trì hơn. 33 00:01:28,510 --> 00:01:31,020 >> Đây là nơi mà các khuôn khổ web cơ bản đến in 34 00:01:31,020 --> 00:01:33,680 Những người đã xây dựng rất nhiều trang web, họ nói, 35 00:01:33,680 --> 00:01:35,820 "Chúng tôi không cần phải làm lại điều này mỗi lần duy nhất chúng tôi xây dựng một trang web." 36 00:01:35,820 --> 00:01:39,050 "Tại sao chúng ta không làm cho một gói mà làm tất cả những điều này cho bạn 37 00:01:39,050 --> 00:01:41,250 mỗi lần duy nhất bạn muốn xây dựng một trang web? " 38 00:01:41,250 --> 00:01:43,030 Và để khi bạn thực hiện một trang web mới, 39 00:01:43,030 --> 00:01:45,880 bạn chỉ cần tập trung vào những gì chính xác trang web này là về. 40 00:01:45,880 --> 00:01:48,630 Bạn không cần phải lặp lại tất cả các cấu hình khác nhau 41 00:01:48,630 --> 00:01:53,070 và tách mã và viết lại mã 42 00:01:53,070 --> 00:01:56,180 mà bạn thường xuyên phải làm gì khi bạn làm cho trang web. 43 00:01:56,180 --> 00:01:59,410 Ý tưởng là một khuôn khổ cho phép bạn viết mã cấp cao hơn 44 00:01:59,410 --> 00:02:01,030 mà không cần phải lo lắng về chi tiết ở cấp thấp hơn. 45 00:02:01,030 --> 00:02:03,670 Một chi tiết cấp thấp hơn có thể là một cái gì đó như 46 00:02:03,670 --> 00:02:07,250 đối phó với làm sạch dữ liệu của người dùng. 47 00:02:07,250 --> 00:02:09,320 Đó là một cái gì đó mà bạn nên không thực sự cần phải lo lắng. 48 00:02:09,320 --> 00:02:12,370 Bạn nên tập trung vào những gì phân bổ web của bạn thực sự là về. 49 00:02:12,370 --> 00:02:14,790 Nó giúp loại bỏ rất nhiều mã soạn. 50 00:02:14,790 --> 00:02:16,640 Nó là một kiến ​​trúc cho dự án của bạn. 51 00:02:16,640 --> 00:02:18,680 >> Một phổ biến nhất sẽ là Model-View-Controller, 52 00:02:18,680 --> 00:02:20,380 mà tôi sẽ nói về trong một giây. 53 00:02:20,380 --> 00:02:22,790 Và rất nhiều lần các khung thể hiện một tập hợp các thủ tục, 54 00:02:22,790 --> 00:02:25,750 quy tắc và thực hành tốt nhất để bạn có thể sử dụng 55 00:02:25,750 --> 00:02:28,190 để khi bạn áp dụng khuôn khổ web 56 00:02:28,190 --> 00:02:30,050 bạn phải viết mã của bạn trong một cách nào đó, 57 00:02:30,050 --> 00:02:32,430 và nó thường được một thoả thuận thiết lập các nguyên tắc 58 00:02:32,430 --> 00:02:34,290 của cộng đồng nói chung được chấp nhận là 59 00:02:34,290 --> 00:02:36,230 một cách tốt để viết mã. 60 00:02:36,230 --> 00:02:38,260 Nó làm cho mã của bạn dễ bảo trì hơn, có thể sử dụng nhiều hơn, 61 00:02:38,260 --> 00:02:40,030 vv và vv. 62 00:02:40,030 --> 00:02:42,740 Và cuối cùng, điều tôi muốn nhấn mạnh về các khuôn khổ 63 00:02:42,740 --> 00:02:45,980 so với các thư viện là ý tưởng này về đảo ngược kiểm soát, và điều này là này. 64 00:02:45,980 --> 00:02:48,430 Sự khác biệt giữa một thư viện và một khuôn khổ là với một thư viện 65 00:02:48,430 --> 00:02:51,990 bạn vẫn đang viết các chương trình chính, 66 00:02:51,990 --> 00:02:54,460 và bạn đang loại gọi thư viện 67 00:02:54,460 --> 00:02:56,810 và kêu gọi các thư viện để làm điều gì đó cho bạn. 68 00:02:56,810 --> 00:02:58,180 Sự khác biệt giữa một thư viện và một khuôn khổ 69 00:02:58,180 --> 00:03:01,620 là khuôn khổ bắt đầu với sự kiểm soát, 70 00:03:01,620 --> 00:03:03,260 và nó gọi mã của bạn, 71 00:03:03,260 --> 00:03:06,190 để bạn có thể nghĩ về nó như - đây là lý do tại sao nó được gọi là một khuôn khổ - 72 00:03:06,190 --> 00:03:09,700 khuôn khổ cung cấp khung này và cấu trúc cho mã của bạn, 73 00:03:09,700 --> 00:03:11,320 và bạn điền vào lỗ, 74 00:03:11,320 --> 00:03:13,990 và điều này sẽ trở nên rõ ràng hơn trong một giây 75 00:03:13,990 --> 00:03:16,670 khi bạn nhìn thấy tôi bắt đầu viết mã trong bối cảnh của khuôn khổ này. 76 00:03:16,670 --> 00:03:19,130 Bạn sẽ thấy rằng tôi đang điền vào khoảng trống, 77 00:03:19,130 --> 00:03:22,450 và khuôn khổ là loại kiểm soát tất cả các mảnh di chuyển, 78 00:03:22,450 --> 00:03:27,420 và tôi có phải đặt các mảnh vào đúng nơi. 79 00:03:27,420 --> 00:03:29,360 >> Hôm nay chúng ta sẽ nói về Kohana, 80 00:03:29,360 --> 00:03:31,610 đó là một trong nhiều khuôn khổ PHP. 81 00:03:31,610 --> 00:03:34,550 Có khuôn khổ web, và có những người thân trong hầu như tất cả ngôn ngữ duy nhất, 82 00:03:34,550 --> 00:03:38,330 và tôi chọn Kohana Kohana vì được cho là 83 00:03:38,330 --> 00:03:43,250 và nói chung công nhận là khuôn khổ PHP đơn giản nhất để chọn lên. 84 00:03:43,250 --> 00:03:45,940 Đó là trọng lượng nhẹ nhất. 85 00:03:45,940 --> 00:03:48,470 Có những người khác ra khỏi đó đi kèm với nhiều người, nhiều tính năng hơn, 86 00:03:48,470 --> 00:03:51,590 nhưng họ có xu hướng khó khăn hơn để chọn lên. 87 00:03:51,590 --> 00:03:54,920 Và cuối cùng, Kohana sử dụng kiến ​​trúc MVC. 88 00:03:54,920 --> 00:03:57,780 Nó đủ nhẹ mà chúng ta theo nghĩa đen có thể xây dựng một dự án 89 00:03:57,780 --> 00:03:59,620 ngay tại đây ngay trước mắt bạn, và bạn có thể khá nhiều 90 00:03:59,620 --> 00:04:02,780 theo cùng khá dễ dàng. 91 00:04:02,780 --> 00:04:04,420 >> Kiến trúc MVC là gì? 92 00:04:04,420 --> 00:04:06,540 Nó là viết tắt của Model-View-Controller, 93 00:04:06,540 --> 00:04:09,560 và có thể nếu bạn nghĩ về đoạn code bạn đã viết cho đến nay 94 00:04:09,560 --> 00:04:11,280 cho một số psets phát triển web của bạn 95 00:04:11,280 --> 00:04:14,710 bạn có thể thấy một số những điều này, nhưng thông thường khi bạn bắt đầu viết 96 00:04:14,710 --> 00:04:16,500 một ứng dụng web phức tạp hơn, 97 00:04:16,500 --> 00:04:21,209 sự phân chia giữa các phân đoạn 3 càng trở nên rõ ràng hơn. 98 00:04:21,209 --> 00:04:26,740 Tôi đặt ra các MVC đây loại như một chồng, 99 00:04:26,740 --> 00:04:29,920 và thường bạn sẽ nghe thấy người ta nói về ngăn xếp trong phát triển web, 100 00:04:29,920 --> 00:04:33,760 và điều này là để minh họa cho ý tưởng rằng 101 00:04:33,760 --> 00:04:37,510 mỗi lớp, mỗi thành phần thực sự cố gắng để chỉ giao tiếp 102 00:04:37,510 --> 00:04:40,750 giữa 2 thành phần khác. 103 00:04:40,750 --> 00:04:44,550 Ai đó truy cập trang web của bạn là một khách hàng hoặc một trình duyệt. 104 00:04:44,550 --> 00:04:48,870 Chúng tương tác với chương trình của bạn thông qua các mã xem. 105 00:04:48,870 --> 00:04:50,500 Mã xem tương tác với bộ điều khiển. 106 00:04:50,500 --> 00:04:52,400 Bộ điều khiển tương tác với các mô hình, 107 00:04:52,400 --> 00:04:55,090 và mô hình tương tác với cơ sở dữ liệu SQL. 108 00:04:55,090 --> 00:04:59,670 Và không có nhảy ở giữa nếu bạn viết mã của bạn đúng. 109 00:04:59,670 --> 00:05:01,670 >> Làm những điều này làm gì? 110 00:05:01,670 --> 00:05:06,020 Mô hình cơ bản là đoạn mã mà đề với dữ liệu của bạn. 111 00:05:06,020 --> 00:05:09,100 Bất cứ điều gì mà những giao dịch với cơ sở dữ liệu của bạn, với các đối tượng mà bạn lưu trữ, 112 00:05:09,100 --> 00:05:11,280 hoặc lấy các đối tượng trong cơ sở dữ liệu, 113 00:05:11,280 --> 00:05:13,450 đó là tất cả các xử lý bởi các mô hình. 114 00:05:13,450 --> 00:05:15,290 Có thể bạn có các đối tượng trong cơ sở dữ liệu của bạn. 115 00:05:15,290 --> 00:05:17,700 Chúng ta sẽ tạo ra một mô hình phải làm gì với bài viết, 116 00:05:17,700 --> 00:05:19,760 do đó, một bài viết có thể có một số thuộc tính cho nó. 117 00:05:19,760 --> 00:05:23,900 Bạn có thể có chức năng xung quanh lưu trữ những bài viết hoặc lấy bài viết 118 00:05:23,900 --> 00:05:26,270 hoặc lọc các bài viết và vv và vv, 119 00:05:26,270 --> 00:05:28,880 và đó là tất cả các mã đó là xử lý bởi các mô hình. 120 00:05:28,880 --> 00:05:31,780 Bộ điều khiển là loại logic ứng dụng, 121 00:05:31,780 --> 00:05:37,910 và rất nhiều thứ khác nhau có thể đi vào các ứng dụng logic. 122 00:05:37,910 --> 00:05:39,790 Nếu bạn đang nói chuyện với một API khác nhau, 123 00:05:39,790 --> 00:05:42,310 đó có thể là nơi bạn đang làm việc với các ứng dụng logic. 124 00:05:42,310 --> 00:05:47,990 Nếu bạn đang cố gắng để có để mang lại dữ liệu từ nhiều mô hình khác nhau 125 00:05:47,990 --> 00:05:51,540 và phải kết hợp chúng một cách nào đó, thường có thể được xử lý bởi bộ điều khiển. 126 00:05:51,540 --> 00:05:53,820 Ví dụ, trên Facebook, nếu bạn bạn một ai đó, 127 00:05:53,820 --> 00:05:58,500 sau đó có lẽ đó hành vi thiết lập mối quan hệ đó 128 00:05:58,500 --> 00:06:00,490 có thể được thực hiện bởi bộ điều khiển. 129 00:06:00,490 --> 00:06:04,350 >> Và cuối cùng, xem là đoạn code đó là tạo ra những gì bạn thực sự nhìn thấy. 130 00:06:04,350 --> 00:06:07,410 Rất nhiều lần tôi nghĩ rằng trong psets CS50 131 00:06:07,410 --> 00:06:10,050 họ không thực sự khuyến khích các bạn để tách những thứ 3. 132 00:06:10,050 --> 00:06:12,430 Có thể bạn sẽ có lớn, tập tin dài này, nơi ở đầu 133 00:06:12,430 --> 00:06:15,130 bạn thực hiện một số truy vấn SQL và có thể làm một số xử lý 134 00:06:15,130 --> 00:06:17,020 trên các dữ liệu bạn lấy từ cơ sở dữ liệu, 135 00:06:17,020 --> 00:06:19,370 và sau đó bạn có tất cả HTML của bạn ở phía dưới. 136 00:06:19,370 --> 00:06:22,840 Và bạn có thể thấy rằng khi bạn tạo ngày càng nhiều các trang 137 00:06:22,840 --> 00:06:25,790 rằng bạn sẽ có một số sự lặp lại mã, và cũng có thể, 138 00:06:25,790 --> 00:06:29,600 điều này là tập tin của bạn được thực sự lớn và dài 139 00:06:29,600 --> 00:06:32,370 và trở nên khó sử dụng để quản lý. 140 00:06:32,370 --> 00:06:34,500 Lý do tại sao MVC là rất tốt xem 141 00:06:34,500 --> 00:06:36,120 là một số lý do. 142 00:06:36,120 --> 00:06:38,110 Điều đầu tiên là một cái gì đó gọi là tách mối quan tâm 143 00:06:38,110 --> 00:06:40,370 đó là ý tưởng rằng khi bạn có - 144 00:06:40,370 --> 00:06:43,520 lý tưởng 1 đoạn mã nên làm 1 việc và làm thực sự tốt, 145 00:06:43,520 --> 00:06:47,210 và bạn không nên kết hợp từng phần mã mà làm những việc khác nhau. 146 00:06:47,210 --> 00:06:49,230 Ví dụ, xem mã và mã mô hình, 147 00:06:49,230 --> 00:06:51,040 họ không thực sự có được liên quan. 148 00:06:51,040 --> 00:06:53,290 Họ không phải là trong cùng một file, vì vậy khi bạn có thể, tách chúng ra 149 00:06:53,290 --> 00:06:55,300 vì vậy nó dễ dàng để duy trì. 150 00:06:55,300 --> 00:06:57,130 >> Điều khác là sử dụng lại mã. 151 00:06:57,130 --> 00:06:59,770 Bạn có thể tìm thấy chính mình viết các truy vấn SQL tương tự hoặc làm 152 00:06:59,770 --> 00:07:03,060 truy vấn tương tự có thể được trừu tượng vào 1 chức năng, 153 00:07:03,060 --> 00:07:05,440 và đó là ý tưởng đằng sau các mô hình và bộ điều khiển, 154 00:07:05,440 --> 00:07:09,690 có nó trong một chức năng riêng biệt mà bạn có thể tái sử dụng ở những nơi khác nhau trong dự án của bạn. 155 00:07:09,690 --> 00:07:12,420 Và cuối cùng, đó là gắn liền với khô mã của bạn, 156 00:07:12,420 --> 00:07:14,700 hoặc không lặp lại chính mình, không lặp lại chính mình. 157 00:07:14,700 --> 00:07:18,090 Điều này rất dễ hiểu trong phát triển. 158 00:07:18,090 --> 00:07:20,110 Bất cứ khi nào bạn có thể, bạn không muốn lặp lại chính mình, bởi vì nếu bạn lặp lại chính mình, 159 00:07:20,760 --> 00:07:23,400  nó nhiều hơn nữa tốn kém để duy trì. 160 00:07:23,400 --> 00:07:26,040 Nếu bạn muốn thay đổi 1 điều, bạn phải thay đổi nó ở khắp mọi nơi, 161 00:07:26,040 --> 00:07:30,230 và dẫn đến lỗi, và đó là khủng khiếp. 162 00:07:30,230 --> 00:07:32,010 >> Rồi. 163 00:07:32,010 --> 00:07:37,270 Bất kỳ câu hỏi cho đến nay về Kohana ở tất cả? 164 00:07:37,270 --> 00:07:39,200 Tuyệt vời. 165 00:07:39,200 --> 00:07:42,300 Bây giờ chúng ta sẽ đi sâu vào phiên mã hóa trực tiếp, 166 00:07:42,300 --> 00:07:48,050 và hy vọng mọi thứ diễn ra tốt đẹp. 167 00:07:57,200 --> 00:08:00,050 Tôi sẽ về cơ bản xây dựng trang web này 168 00:08:00,050 --> 00:08:03,910 trên một máy chủ từ xa của tôi, và cách mà các bạn cũng có thể 169 00:08:03,910 --> 00:08:06,310 xem trang web và truy cập các trang web, 170 00:08:06,310 --> 00:08:10,990 và cũng là môi trường tốt hơn được cấu hình hơn máy tính từ xa của tôi, 171 00:08:10,990 --> 00:08:14,580 bởi vì nó đang chạy Linux thay vì OS X. 172 00:08:14,580 --> 00:08:16,260 Chúng ta theo nghĩa đen sẽ bắt đầu. 173 00:08:16,260 --> 00:08:18,110 KohanaFramework.org. 174 00:08:18,110 --> 00:08:21,350 Tôi sẽ tải về mã từ trang web. 175 00:08:21,350 --> 00:08:24,610 Tôi sẽ để sao chép địa chỉ liên kết, 176 00:08:24,610 --> 00:08:29,770 đi đến máy chủ của tôi, tải về nó, 177 00:08:29,770 --> 00:08:33,000 và tôi sẽ để giải nén nó. 178 00:08:38,330 --> 00:08:45,710 >> [Sinh viên] gì là lớn nhất bạn có thể làm cho văn bản? 179 00:08:45,710 --> 00:08:47,330 [Brandon Liu] Đó có phải là tốt hơn? 180 00:08:47,330 --> 00:08:50,070 [Sinh viên] Có phải đó là khả thi? >> [Brandon Liu] Vâng, đó là tốt. 181 00:08:50,070 --> 00:08:54,500 Tôi đã tải về một tập tin ZIP và giải nén đó vào một thư mục gọi là Kohana, 182 00:08:54,500 --> 00:08:58,820 và chúng ta sẽ phải đổi tên CS50-Kohana, 183 00:08:58,820 --> 00:09:01,140 và chúng ta hãy đi vào trong 184 00:09:01,140 --> 00:09:03,610 Tuyệt vời. 185 00:09:03,610 --> 00:09:06,870 Ở đây bạn thấy một loạt các tập tin khác nhau. 186 00:09:06,870 --> 00:09:10,140 Hầu hết các bạn có thể bỏ qua - we're không đi qua tất cả các tập tin duy nhất đó là ở đây 187 00:09:10,140 --> 00:09:13,130 vì hạn chế về thời gian của chúng tôi, 188 00:09:13,130 --> 00:09:16,310 nhưng nói chung khi bạn cài đặt Kohana, điều đầu tiên bạn làm 189 00:09:16,310 --> 00:09:23,210 là bạn hãy vào thư mục, 190 00:09:23,210 --> 00:09:26,050 và về cơ bản bạn sẽ làm một số xét nghiệm môi trường và những thứ linh tinh 191 00:09:26,050 --> 00:09:28,640 để đảm bảo môi trường của bạn được thiết lập đúng để chạy Kohana 192 00:09:28,640 --> 00:09:31,450 và chắc chắn rằng mọi thứ đều ổn. 193 00:09:31,450 --> 00:09:35,510 Bạn có thể thấy hầu hết mọi thứ trôi qua, nhưng nói chung bạn luôn luôn chạy vào vấn đề này 1 194 00:09:35,510 --> 00:09:38,180 nơi nó than phiền rằng một số thư mục là không ghi, 195 00:09:38,180 --> 00:09:40,410 và đó là vì một số điều khoản. 196 00:09:40,410 --> 00:09:43,080 Tôi không biết các bạn đã học được bao nhiêu về quyền truy cập tập tin trong CS50, 197 00:09:43,080 --> 00:09:47,920 nhưng nếu bạn làm phát triển web, bạn sẽ chạy vào vấn đề này rất nhiều. 198 00:09:47,920 --> 00:09:58,340 Tôi sẽ làm cho nó có thể ghi 199 00:09:58,340 --> 00:10:03,390 và tôi nghĩ rằng tôi cũng phải - có chúng tôi đi. 200 00:10:03,390 --> 00:10:07,040 >> Được rồi, vậy bây giờ bạn có thể nhìn thấy tất cả mọi thứ trôi qua, 201 00:10:07,040 --> 00:10:10,000 và bây giờ nó sẽ cho bạn đổi tên file install.php. 202 00:10:10,000 --> 00:10:15,630 Tôi sẽ di chuyển các tập tin install.php để installed.php, 203 00:10:15,630 --> 00:10:19,610 và bây giờ nếu tôi làm mới, 204 00:10:19,610 --> 00:10:22,810 nó mang lại cho tôi một số lỗi, và đây là nơi mà gỡ lỗi có in 205 00:10:22,810 --> 00:10:25,610 Đây là nơi bạn có thể xem những gì đang thực sự xảy ra. 206 00:10:25,610 --> 00:10:28,460 Vấn đề là, theo mặc định, Kohana giả định rằng 207 00:10:28,460 --> 00:10:31,480 dự án của bạn tại thư mục gốc của tên miền của bạn, 208 00:10:31,480 --> 00:10:35,920 do đó, nó mong bạn để được ở demo.brandonkliu.com. 209 00:10:35,920 --> 00:10:37,540 Chúng ta phải nói với nó rằng nó thực sự trong một thư mục con. 210 00:10:37,540 --> 00:10:39,820 Đó là trong một thư mục con gọi là CS50 Kohana. 211 00:10:39,820 --> 00:10:42,640 Có điều là, nó hiểu sai CS50-Kohana 212 00:10:42,640 --> 00:10:45,680 là cái gì khác, mà tôi sẽ giải thích cho bạn trong một giây. 213 00:10:45,680 --> 00:10:49,910 Nhưng tôi sẽ cho bạn biết đó là một cái gì đó để được mong đợi. 214 00:10:49,910 --> 00:10:53,700 Những gì chúng ta sẽ làm là chúng ta sẽ đi vào thư mục này được gọi là bootstrap.php, 215 00:10:53,700 --> 00:10:59,260 đó là thư mục cấu hình mà rất nhiều những thứ khác nhau được thiết lập. 216 00:10:59,260 --> 00:11:01,570 Tôi mở mà lên. 217 00:11:01,570 --> 00:11:09,790 Sau đó, có lẽ một trong những điều đầu tiên tôi sẽ làm là thay đổi múi giờ. 218 00:11:09,790 --> 00:11:13,910 >> Và sau đó chúng ta hãy xem. 219 00:11:13,910 --> 00:11:15,180 Aha! Ngay tại đây. 220 00:11:15,180 --> 00:11:18,690 Có một loạt các câu nói cấu hình khác nhau ở đây, 221 00:11:18,690 --> 00:11:21,700 nhưng một trong tôi đang tìm là điều này được gọi là URL cơ sở, 222 00:11:21,700 --> 00:11:24,570 và theo mặc định tôi nhận được nó thiết lập để Kohana, 223 00:11:24,570 --> 00:11:29,020 nhưng tôi sẽ thay đổi điều đó để CS50-Kohana, 224 00:11:29,020 --> 00:11:32,880 và tôi nghĩ rằng nên sửa chữa nó. 225 00:11:32,880 --> 00:11:34,150 Có, tuyệt vời. 226 00:11:34,150 --> 00:11:39,530 Theo mặc định, để thấy rằng nó làm việc, nó nói, "Xin chào thế giới." 227 00:11:39,530 --> 00:11:42,930 Ở đâu ra vậy? Làm thế nào mà chúng tôi nhận được Xin chào thế giới? 228 00:11:42,930 --> 00:11:47,640 Chính xác là mã mà thực sự đã viết rằng? 229 00:11:47,640 --> 00:11:50,240 Phải hiểu rằng, tôi sẽ giới thiệu khái niệm này được gọi là định tuyến. 230 00:11:50,240 --> 00:11:52,590 Khá nhiều tất cả các khuôn khổ web có khái niệm gọi là định tuyến, 231 00:11:52,590 --> 00:11:57,230 đó là phần của phần mềm mà sẽ bản đồ một URL nhất định 232 00:11:57,230 --> 00:12:01,550 để một phần nhất định của mã trong khuôn khổ của bạn. 233 00:12:01,550 --> 00:12:07,510 Ví dụ, nếu bạn có một số URL và bạn đi đến một số URL như foo.com / blog / tất cả 234 00:12:07,510 --> 00:12:11,170 sau đó những gì khuôn khổ sẽ làm - hoặc ít nhất là những gì Kohana sẽ làm - 235 00:12:11,170 --> 00:12:15,540 là nó sẽ tìm thấy một lớp được gọi là bộ điều khiển blog, 236 00:12:15,540 --> 00:12:18,720 và nó sẽ chạy các chức năng có tên là hành động tất cả. 237 00:12:18,720 --> 00:12:20,160 Tôi biết tôi đang nói về lớp học và chức năng, 238 00:12:20,160 --> 00:12:23,860 và tôi biết các bạn đã không được các lớp học và chức năng 239 00:12:23,860 --> 00:12:26,470 trong CS50 nào, nhưng bây giờ, 240 00:12:26,470 --> 00:12:29,800 bạn có thể nghĩ rằng các lớp học như chỉ là một nhóm chức năng, 241 00:12:29,800 --> 00:12:32,900 một cách để nhóm chức năng với nhau. 242 00:12:32,900 --> 00:12:37,690 Đó là thực sự tất cả các bạn cần biết. 243 00:12:37,690 --> 00:12:43,120 >> Bây giờ nếu chúng ta nhìn vào cấu trúc thư mục của chúng tôi, 244 00:12:43,120 --> 00:12:47,110 bên trong thư mục ứng dụng có một thư mục gọi là lớp học, 245 00:12:47,110 --> 00:12:49,200 và các thư mục khác được gọi là điều khiển và mô hình. 246 00:12:49,200 --> 00:12:52,530 Nếu bạn nhìn vào bên trong thư mục điều khiển, 247 00:12:52,530 --> 00:12:56,330 chúng ta thấy rằng có một tập tin gọi là chào, 248 00:12:56,330 --> 00:13:00,370 và bạn có thể thấy đây là một lớp được gọi là điều khiển Chào 249 00:13:00,370 --> 00:13:02,340 và có một chức năng được gọi là hành động chỉ số, 250 00:13:02,340 --> 00:13:06,360 và những gì nó làm là nó đặt cơ thể của phản ứng của bạn để Xin chào thế giới. 251 00:13:06,360 --> 00:13:08,730 Đó là nơi mà mã đang được viết. 252 00:13:08,730 --> 00:13:11,610 Một câu hỏi khác được, tốt, tôi đã không đi đến 253 00:13:11,610 --> 00:13:13,680 blah, blah, blah, / welcome / chỉ. 254 00:13:13,680 --> 00:13:16,250 Làm thế nào tôi kết thúc ở đây? 255 00:13:16,250 --> 00:13:20,410 Vâng, đó là đơn giản chỉ vì 256 00:13:20,410 --> 00:13:22,410 đây ở dưới cùng của file bootstrap của chúng tôi 257 00:13:22,410 --> 00:13:24,550 nơi chúng tôi thiết lập các tuyến đường của chúng tôi 258 00:13:24,550 --> 00:13:26,570 bạn có thể thấy rằng họ thiết lập một số mặc định cho bạn. 259 00:13:26,570 --> 00:13:28,990 Bộ điều khiển mặc định là Chào mừng. Hành động mặc định là Index. 260 00:13:28,990 --> 00:13:31,600 Đó là lý do tại sao khi chúng tôi đặt không có gì trong đó nó sẽ tự động đi đến bộ điều khiển Chào mừng 261 00:13:31,600 --> 00:13:33,940 và chỉ số hành động. 262 00:13:33,940 --> 00:13:37,460 >> Tất cả mọi thứ có ý nghĩa cho đến nay? 263 00:13:37,460 --> 00:13:40,850 Bây giờ, bạn có thể làm nhiều hơn là chỉ đi để điều khiển 264 00:13:40,850 --> 00:13:43,670 và một hành động cụ thể. 265 00:13:43,670 --> 00:13:48,480 Bạn cũng có thể vượt qua trong các thông số để điều khiển. 266 00:13:48,480 --> 00:13:56,390 Chỉ là một ví dụ, 267 00:13:56,390 --> 00:14:04,070 Tôi sẽ thêm một hành động khác để điều khiển này để cho bạn thấy. 268 00:14:04,070 --> 00:14:09,130 Chúng ta hãy gọi hành động này Echo, bởi vì nó sẽ cho bạn biết bất cứ điều gì bạn cho nó, 269 00:14:09,130 --> 00:14:17,510 và do đó, tôi về cơ bản sẽ lấy 270 00:14:17,510 --> 00:14:20,960 một tham số đó sẽ được gửi thông qua tôi để chương trình định tuyến, 271 00:14:20,960 --> 00:14:24,440 và như bạn có thể thấy ở đây, 272 00:14:24,440 --> 00:14:28,440 dòng này ngay tại đây, bạn có thể thấy rằng 273 00:14:28,440 --> 00:14:31,270 này về cơ bản có nghĩa là bạn có bộ điều khiển, và bạn có một /, 274 00:14:31,270 --> 00:14:33,480 và bạn có hành động, và bạn có / khác, 275 00:14:33,480 --> 00:14:39,140 và đó sẽ là thông số, và vì chúng tôi có tên ID này 276 00:14:39,140 --> 00:14:42,450 trong dấu ngoặc nhọn, có nghĩa là chúng ta đặt tên ID tham số này. 277 00:14:42,450 --> 00:14:45,490 Sau đó trong mã điều khiển của tôi nếu tôi muốn lấy một tổ chức của tham số đó, 278 00:14:45,490 --> 00:14:51,790 Tôi có thể sử dụng mã tôi đã viết, tìm tham số có tên ID. 279 00:14:51,790 --> 00:14:59,290 Đó là những gì tôi đã làm ở đây, và tôi sẽ quay trở lại và nói, 280 00:14:59,290 --> 00:15:07,090 "Bạn nói" đó. 281 00:15:07,090 --> 00:15:10,760 Và vì vậy bây giờ nếu tôi đi đến trang web của chúng tôi, 282 00:15:10,760 --> 00:15:19,550 Tôi đi đến cs50-kohana/welcome/echo/Helloooo-- 283 00:15:19,550 --> 00:15:21,420 oh, đúng rồi. 284 00:15:21,420 --> 00:15:23,930 Có 1 bước tôi rời ra. 285 00:15:23,930 --> 00:15:27,020 Đây là một phần của ý tưởng mã hóa trực tiếp. 286 00:15:27,020 --> 00:15:36,100 >> Đây là 1 điều. Chúng ta hãy xem. 287 00:15:36,100 --> 00:15:38,870 Vì vậy, thông thường mặc định với rất nhiều các ứng dụng web 288 00:15:38,870 --> 00:15:42,820 bạn phải bao gồm điều này index.php trong URL của bạn, 289 00:15:42,820 --> 00:15:46,410 bởi vì ý tưởng là index.php là loại điểm vào 290 00:15:46,410 --> 00:15:48,250 ứng dụng của bạn, nhưng tất nhiên, 291 00:15:48,250 --> 00:15:50,110 đó là loại gây phiền nhiễu có. 292 00:15:50,110 --> 00:15:53,790 Bạn không muốn có index.php xuất hiện trong URL của bạn, 293 00:15:53,790 --> 00:15:56,080 và khá nhiều mỗi khuôn khổ web ra khỏi hộp 294 00:15:56,080 --> 00:15:58,440 có vấn đề index.php này, 295 00:15:58,440 --> 00:16:03,370 và vì vậy bạn phải có một số biện pháp để có thể loại bỏ. 296 00:16:03,370 --> 00:16:07,540 Và như vậy trong trường hợp này, 297 00:16:07,540 --> 00:16:11,450 những gì chúng ta sẽ làm là chúng ta sẽ sử dụng một tập tin gọi là htaccess., 298 00:16:11,450 --> 00:16:13,900 và điều này là một cái gì đó cụ thể cho các máy chủ web Apache, 299 00:16:13,900 --> 00:16:16,290 và nó có thể làm những việc như viết lại URL 300 00:16:16,290 --> 00:16:19,350 và các URL chuyển hướng và vv và vv, 301 00:16:19,350 --> 00:16:24,280 và Kohana là tốt đẹp, đủ để cung cấp một tập tin htaccess mẫu. mà chúng ta có thể sử dụng. 302 00:16:24,280 --> 00:16:28,300 >> Như bạn thấy, có một tập tin có tên là example.htaccess, 303 00:16:28,300 --> 00:16:33,410 và chúng ta sẽ sao chép mà đến htaccess.. 304 00:16:33,410 --> 00:16:36,950 Tôi sẽ mở và chỉnh sửa nó, 305 00:16:36,950 --> 00:16:40,840 và về cơ bản nó là một loạt các thứ khác nhau. 306 00:16:40,840 --> 00:16:45,320 Dòng chính mà bạn có thể muốn xem xét là ngay tại đây. 307 00:16:45,320 --> 00:16:49,840 Ý tưởng là điều này đặt ra một quy tắc mà nói, 308 00:16:49,840 --> 00:16:56,400 "Được rồi, bất cứ điều gì bạn gõ vào, thêm vào trước index.php cho điều đó." 309 00:16:56,400 --> 00:16:58,710 Bạn có thể thấy điều đó. 310 00:16:58,710 --> 00:17:00,370 Các. * Viết tắt của bất cứ điều gì, phù hợp với bất cứ điều gì, 311 00:17:00,370 --> 00:17:03,300 và sau đó là phần thứ hai là index.php / $ 0, 312 00:17:03,300 --> 00:17:07,410 và $ 0 đề cập đến bất cứ điều gì là lần xuất hiện trước đây. 313 00:17:07,410 --> 00:17:09,500 Điều đó có ý nghĩa? 314 00:17:09,500 --> 00:17:12,190 Nhưng điều thực sự quan trọng tôi muốn thay đổi là thay đổi cơ sở viết lại này, 315 00:17:12,190 --> 00:17:14,300 là cơ sở URL. 316 00:17:14,300 --> 00:17:17,780 Nó loại giả định nơi bạn đang làm việc từ. 317 00:17:17,780 --> 00:17:22,560 Tôi sẽ thêm CS50 Kohana đó, 318 00:17:22,560 --> 00:17:26,530 và cách mà bây giờ nếu tôi loại bỏ các index.php, 319 00:17:26,530 --> 00:17:32,110 nó phải làm việc, và tôi sẽ thêm một số con số 320 00:17:32,110 --> 00:17:36,380 để cho bạn thấy rằng nó thực sự đã làm việc. 321 00:17:36,380 --> 00:17:38,130 Âm thanh tốt. 322 00:17:38,130 --> 00:17:40,260 >> Mọi thắc mắc cho đến nay? 323 00:17:40,260 --> 00:17:42,300 [Sinh viên] Làm thế nào mà nó biết để làm cho 123? 324 00:17:42,300 --> 00:17:44,120 Là một cuộc tranh cãi? 325 00:17:44,120 --> 00:17:46,560 Chính xác. Bạn có thể nghĩ nó giống như một cuộc tranh cãi. 326 00:17:46,560 --> 00:17:52,410 Nhưng điều kỳ lạ, mặc dù là cách nào đó Kohana 327 00:17:52,410 --> 00:17:54,910 là họ không làm điều đó một cách chính xác như một đối số. 328 00:17:54,910 --> 00:17:56,930 Bạn phải lấy nó như thế này. 329 00:17:56,930 --> 00:18:01,030 Bạn phải lấy các đối tượng yêu cầu và yêu cầu các tham số được đặt tên ID, 330 00:18:01,030 --> 00:18:03,240 và rằng tên ID đến từ tập tin bootstrap 331 00:18:03,240 --> 00:18:06,990 mà tôi thấy trước đó, và tên ID là trong những dấu ngoặc nhọn, 332 00:18:06,990 --> 00:18:11,580 và đó là cách bạn lấy những thông số. 333 00:18:11,580 --> 00:18:14,010 Tuyệt vời. 334 00:18:14,010 --> 00:18:17,550 Bất kỳ câu hỏi nào khác không? 335 00:18:17,550 --> 00:18:20,500 Như tôi đã nói, điều khiển, họ xử lý logic ứng dụng, 336 00:18:20,500 --> 00:18:22,980 vì vậy đó là 1 ví dụ bạn có thể xem that - 337 00:18:22,980 --> 00:18:24,830 nó rất cơ bản, nhưng nó vẫn còn ứng dụng logic, 338 00:18:24,830 --> 00:18:27,980 ý tưởng lấy các tham số và tạo ra một chuỗi mới 339 00:18:27,980 --> 00:18:31,920 nói rằng, "Anh nói blah", và sau đó nhổ nước bọt mà lại cho bạn. 340 00:18:31,920 --> 00:18:34,030 Và nói chung là những gì bạn làm là bạn tạo các bộ điều khiển khác nhau. 341 00:18:34,030 --> 00:18:36,450 Bạn tạo các bộ điều khiển riêng biệt cho các bộ phận khác nhau của trang web của bạn. 342 00:18:36,450 --> 00:18:38,160 >> Hôm nay chúng ta sẽ làm cho một trang web rất đơn giản, 343 00:18:38,160 --> 00:18:40,420 và nó sẽ là một blog rất cơ bản. 344 00:18:40,420 --> 00:18:43,780 Chúng ta sẽ làm cho một bộ điều khiển mới chỉ dành cho các bài viết trong một blog. 345 00:18:43,780 --> 00:18:47,060 Nhưng sau đó nếu tôi cũng thêm ý kiến ​​để bài viết trên blog, 346 00:18:47,060 --> 00:18:50,140 sau đó tôi có lẽ sẽ muốn thực hiện một bộ điều khiển mới cho những ý kiến. 347 00:18:50,140 --> 00:18:53,380 Nếu tôi muốn thêm người dùng, tôi có lẽ sẽ thêm một bộ điều khiển mới cho những người sử dụng, 348 00:18:53,380 --> 00:18:57,000 và nói chung, ý tưởng là bất cứ khi nào bạn có một mô hình mới, 349 00:18:57,000 --> 00:18:59,630 một đối tượng dữ liệu mới mà bạn đang làm việc với, 350 00:18:59,630 --> 00:19:02,970 bạn có một bộ điều khiển duy nhất cho đối tượng dữ liệu. 351 00:19:02,970 --> 00:19:04,370 Hôm nay chúng tôi sẽ chỉ làm việc với 1 đối tượng dữ liệu, 352 00:19:04,370 --> 00:19:06,250 và đó sẽ là bài viết, 353 00:19:06,250 --> 00:19:08,710 và bạn cũng có thể nghĩ rằng các đối tượng dữ liệu như tương ứng với bảng. 354 00:19:08,710 --> 00:19:12,160 Nói chung mỗi bảng tương ứng với 1 loại đối tượng dữ liệu, 355 00:19:12,160 --> 00:19:15,160 do đó, các bảng bài sẽ có 1 bài viết mô hình, 356 00:19:15,160 --> 00:19:18,230 trong đó sẽ có 1 bài điều khiển tương ứng với đó, 357 00:19:18,230 --> 00:19:22,190 và tương tự cho ý kiến, tương tự cho người sử dụng, vv và vv. 358 00:19:22,190 --> 00:19:24,070 Và đó là một quy luật chung của ngón tay cái. 359 00:19:24,070 --> 00:19:27,460 Hiện đang có là trường hợp đặc biệt, nơi bạn có thể khác nhau từ đó, 360 00:19:27,460 --> 00:19:29,300 nhưng 90% thời gian đó là những gì bạn sẽ phải làm, 361 00:19:29,300 --> 00:19:32,810 và tôi sẽ chỉ cho bạn đó là những gì chúng ta sẽ phải làm ngày hôm nay. 362 00:19:32,810 --> 00:19:35,490 Thêm 1 khái niệm trước khi chúng ta đi sâu trở lại vào mã, 363 00:19:35,490 --> 00:19:37,710 ý tưởng này của đối tượng bản đồ quan hệ. 364 00:19:37,710 --> 00:19:41,200 >> Các bạn đã thực hiện một pset phát triển web, 365 00:19:41,200 --> 00:19:43,820 và bạn đã nhìn thấy rằng bạn thực hiện một truy vấn SQL, 366 00:19:43,820 --> 00:19:46,510 và bất cứ điều gì nó sẽ trả về cho bạn các hàng. 367 00:19:46,510 --> 00:19:50,040 Bạn sẽ có được các hàng, và chỉ số bạn chúng bằng một số tên, 368 00:19:50,040 --> 00:19:55,480 tên của cột và bảng, 369 00:19:55,480 --> 00:19:57,630 và đó là cách bạn làm việc với nó, 370 00:19:57,630 --> 00:19:59,290 và nó có thể là một chút rườm rà. 371 00:19:59,290 --> 00:20:01,810 Nhưng hơn nữa, nếu bạn có mối quan hệ trong cơ sở dữ liệu của bạn, 372 00:20:01,810 --> 00:20:05,280 ví dụ như nếu tôi có ý kiến ​​và bài viết, 373 00:20:05,280 --> 00:20:11,240 thì có lẽ tôi muốn lấy bài của mẹ xet. 374 00:20:11,240 --> 00:20:14,350 Nếu tôi sử dụng chỉ hàng trong SQL, sau đó tất cả tôi có thể nhận được là ID 375 00:20:14,350 --> 00:20:19,310 của bài viết cha mẹ và không phải là bài thực tế bản thân. 376 00:20:19,310 --> 00:20:21,680 Nhưng khi chúng tôi đang mã hóa, những gì chúng ta thực sự muốn là để thực sự lấy 377 00:20:21,680 --> 00:20:23,550  phụ huynh gửi bản thân đôi khi. 378 00:20:23,550 --> 00:20:25,730 Đối tượng những gì bản đồ quan hệ không được 379 00:20:25,730 --> 00:20:29,480 nó có kết quả của các truy vấn cơ sở dữ liệu 380 00:20:29,480 --> 00:20:32,420 và đặt nó vào các đối tượng cho bạn, đó là rất đẹp để làm việc với 381 00:20:32,420 --> 00:20:34,770 các mảng đồng bằng và các hàng. 382 00:20:34,770 --> 00:20:37,550 >> Ví dụ, bây giờ khi tôi có một nhận xét có lẽ, 383 00:20:37,550 --> 00:20:40,900 và tôi muốn lấy bài mẹ của nó, 384 00:20:40,900 --> 00:20:43,440 và tôi có thể bình luận mũi tên bài, 385 00:20:43,440 --> 00:20:45,230 sau đó nó sẽ thực sự cung cấp cho tôi các đối tượng bài 386 00:20:45,230 --> 00:20:47,940 tương ứng với các bài mẹ thực tế, không chỉ là một số ID, 387 00:20:47,940 --> 00:20:52,210 mà tôi nếu không sẽ phải sử dụng và thực hiện một truy vấn SQL để lấy bài, 388 00:20:52,210 --> 00:20:57,430 đó là cồng kềnh và không cần thiết. 389 00:20:57,430 --> 00:21:01,840 Và hơn nữa, bằng cách ánh xạ tất cả các dòng dữ liệu thành các đối tượng, 390 00:21:01,840 --> 00:21:03,760 bạn cũng có thể đính kèm nhiều chức năng hơn cho các đối tượng, 391 00:21:03,760 --> 00:21:09,700 ví dụ như vậy, tôi đã nói chuyện về cách các lớp học chủ yếu là nhóm các chức năng. 392 00:21:09,700 --> 00:21:11,620 Bạn có thể nghĩ về nó như thế. 393 00:21:11,620 --> 00:21:15,290 Ví dụ, có lẽ tôi có đối tượng bài viết này, 394 00:21:15,290 --> 00:21:17,830 và có lẽ tôi muốn có một số loại chức năng gắn liền với nó 395 00:21:17,830 --> 00:21:20,300 về cơ bản nói với tôi nó đã được gần đây đã đăng? 396 00:21:20,300 --> 00:21:23,570 Được nó được đăng tải trong tuần trước, đúng hay sai? 397 00:21:23,570 --> 00:21:27,320 Và đó là một chức năng tôi có thể đính kèm vào đối tượng đó, 398 00:21:27,320 --> 00:21:31,300 và nó thực sự thuận tiện để có nó trong cùng một vị trí, 399 00:21:31,300 --> 00:21:33,820 và có một loạt các chức năng khác nhau mà bạn có thể tạo ra 400 00:21:33,820 --> 00:21:37,990 cho các đối tượng, và nó thực sự tốt đẹp để có thể gắn nó vào một lớp học, 401 00:21:37,990 --> 00:21:41,700 đến một đối tượng, trong khi nếu bạn chỉ có các hàng từ cơ sở dữ liệu của bạn, 402 00:21:41,700 --> 00:21:43,790 sau đó bạn có thể không thực sự gắn bất kỳ chức năng đó. 403 00:21:43,790 --> 00:21:47,850 Đó là nghĩa đen chỉ là dữ liệu. 404 00:21:47,850 --> 00:21:50,550 Bất kỳ câu hỏi về điều đó ở tất cả? 405 00:21:50,550 --> 00:21:52,710 ORMs là phát triển web rất phổ biến, 406 00:21:52,710 --> 00:21:56,330 và có rất nhiều loại khác nhau của ORMs, 407 00:21:56,330 --> 00:21:58,450 và Kohana có ORM riêng của mình. 408 00:21:58,450 --> 00:22:05,050 Nó rất cơ bản, nhưng bạn sẽ nhận được một hương vị của nó như thế nào. 409 00:22:05,050 --> 00:22:08,780 >> Hãy tạo ra một mô hình cho bài đăng trên blog của chúng tôi, 410 00:22:08,780 --> 00:22:12,350 và điều đầu tiên chúng ta cần làm là tạo ra một bảng thực tế 411 00:22:12,350 --> 00:22:16,680 trong cơ sở dữ liệu của chúng tôi để thực sự lưu trữ dữ liệu của chúng tôi cho những bài viết. 412 00:22:16,680 --> 00:22:19,260 Điều đầu tiên tôi sẽ làm là đi đến phpMyAdmin. 413 00:22:19,260 --> 00:22:21,410 Các bạn đã sử dụng phpMyAdmin trước? 414 00:22:21,410 --> 00:22:23,400 Được rồi, tuyệt vời, vì vậy các bạn đã biết đó là gì, 415 00:22:23,400 --> 00:22:32,200 và tôi sẽ tạo một bảng mới gọi là Kohana bài viết, 416 00:22:32,200 --> 00:22:37,820 và nó sẽ được thực sự đơn giản. 417 00:22:37,820 --> 00:22:40,190 Tôi sẽ cần phải đăng nhập lại in 418 00:23:02,620 --> 00:23:04,640 Tất cả chúng ta sẽ làm hôm nay là có một tác giả và một cơ thể, 419 00:23:04,640 --> 00:23:11,930 chỉ cần giữ cho nó đơn giản. 420 00:23:11,930 --> 00:23:15,620 Tôi sẽ tạo ra bảng đó, 421 00:23:15,620 --> 00:23:19,620 và bây giờ chúng tôi chỉ có một bảng đại diện cho bài viết của chúng tôi 422 00:23:19,620 --> 00:23:23,370 với 2 lĩnh vực cho tác giả của chúng tôi và cơ thể của chúng tôi. 423 00:23:23,370 --> 00:23:26,290 Một điều khác tôi sẽ làm bây giờ là 424 00:23:26,290 --> 00:23:29,820 cấu hình ứng dụng web của tôi để nó biết làm thế nào để kết nối với cơ sở dữ liệu, 425 00:23:29,820 --> 00:23:31,950 và điều này, một lần nữa, là cái gì đó bạn sẽ phải làm gì với tất cả các ứng dụng web. 426 00:23:31,950 --> 00:23:34,790 Bạn phải nói cho nó tên người dùng và mật khẩu 427 00:23:34,790 --> 00:23:36,990 và tên của cơ sở dữ liệu và vv và vv 428 00:23:36,990 --> 00:23:40,000 để tìm ra cách để thực sự kết nối với cơ sở dữ liệu của bạn. 429 00:23:40,000 --> 00:23:58,710 >> Trong Kohana, chúng tôi có một cái gì đó gọi là một mô-đun cơ sở dữ liệu, 430 00:23:58,710 --> 00:24:02,690 và trong thư mục cấu hình chúng ta có thư mục này được gọi là cơ sở dữ liệu, 431 00:24:02,690 --> 00:24:07,330 và như bạn có thể thấy, có một loạt các thiết lập mà bạn đã thiết lập ở đây 432 00:24:07,330 --> 00:24:09,860 để cho nó tên người dùng và mật khẩu là gì 433 00:24:09,860 --> 00:24:13,110 cho cơ sở dữ liệu vì vậy tôi thực sự có thể kết nối với nó. 434 00:24:13,110 --> 00:24:15,010 Và vì tôi không muốn hai người thực sự biết 435 00:24:15,010 --> 00:24:17,190 tên người dùng và mật khẩu của cơ sở dữ liệu của tôi, 436 00:24:17,190 --> 00:24:23,840 Tôi có một tập tin mà tôi đã đặt tất cả lên, và tôi sẽ để sao chép và dán hơn. 437 00:24:33,080 --> 00:24:36,870 Tuyệt vời. 438 00:24:36,870 --> 00:24:39,880 Được rồi. Tôi nghĩ rằng đó là tất cả các cấu hình tôi cần phải làm, 439 00:24:39,880 --> 00:24:41,070 nhưng chúng ta hãy xem. 440 00:24:41,070 --> 00:24:43,720 Chúng tôi sẽ tiếp tục làm việc trong nó, và nếu một cái gì đó bị treo, 441 00:24:43,720 --> 00:24:47,490 sau đó chúng tôi sẽ sửa chữa nó. 442 00:24:47,490 --> 00:24:51,830 Bây giờ những gì tôi sẽ làm là tôi sẽ tạo ra một bộ điều khiển mới. 443 00:24:51,830 --> 00:24:53,190 Hoặc thực sự, xin lỗi. 444 00:24:53,190 --> 00:24:55,080 Đầu tiên tôi có để tạo ra một mô hình mới. 445 00:24:55,080 --> 00:25:01,620 Tôi sẽ tạo ra một mô hình mới gọi Post.php, 446 00:25:01,620 --> 00:25:12,440 và những gì chúng ta sẽ làm là chúng ta sẽ gọi nó là lớp Model_Post. 447 00:25:12,440 --> 00:25:15,390 Nhận được một số cú pháp làm nổi bật trên, 448 00:25:15,390 --> 00:25:19,750 và vì vậy khi tôi nói, "mở rộng ORM," đó là cơ bản 449 00:25:19,750 --> 00:25:21,210 một số chương trình hướng đối tượng hơn, 450 00:25:21,210 --> 00:25:23,340 mà tiếc là các bạn đã không học được trong CS50 nào, 451 00:25:23,340 --> 00:25:25,290 nhưng nó khá dễ dàng để chọn lên. 452 00:25:25,290 --> 00:25:27,950 Nó mang lại cho tôi tất cả các chức năng bổ sung này mà đi kèm trong gói ORM này, 453 00:25:27,950 --> 00:25:31,120 và vì vậy tôi có được một loạt các chức năng bổ sung và những thứ miễn phí, 454 00:25:31,120 --> 00:25:34,810 trong đó bạn sẽ thấy một chút trong một giây. 455 00:25:34,810 --> 00:25:37,670 >> Ngay bây giờ thực sự tất cả những gì cần làm là tạo ra lớp này. 456 00:25:37,670 --> 00:25:39,160 Tôi thậm chí không cần phải thực hiện bất kỳ chức năng hoặc bất cứ điều gì, 457 00:25:39,160 --> 00:25:41,770 nhưng tôi đã tạo ra một lớp đại diện cho bảng, 458 00:25:41,770 --> 00:25:44,140 và bởi vì tôi đã mở rộng thêm lớp ORM này, 459 00:25:44,140 --> 00:25:51,080 Tôi nhận được một bó của những thứ miễn phí, vì vậy bây giờ bạn không cần phải thiết lập bất cứ điều gì nhiều hơn lên. 460 00:25:51,080 --> 00:25:53,530 Và bây giờ những gì tôi sẽ làm là tôi sẽ tạo ra một bộ điều khiển mới, 461 00:25:53,530 --> 00:25:58,480 mà tôi sẽ đặt tên blog.php, 462 00:25:58,480 --> 00:26:04,350 và tôi sẽ phải sao chép trên bộ điều khiển Chào mừng 463 00:26:04,350 --> 00:26:11,950 vì vậy tôi không cần phải nhập lại một số công cụ, 464 00:26:11,950 --> 00:26:20,720 và bây giờ tôi phải đổi tên này. 465 00:26:20,720 --> 00:26:24,710 Bây giờ những gì tôi sẽ làm để kiểm tra để chắc chắn rằng tất cả mọi thứ đang làm việc ra, 466 00:26:24,710 --> 00:26:27,820 Tôi sẽ lấy bài đầu tiên từ cơ sở dữ liệu của tôi 467 00:26:27,820 --> 00:26:32,680 và in cơ thể của bài viết trên màn hình. 468 00:26:32,680 --> 00:26:37,920 Để làm điều đó những gì tôi sẽ làm đầu tiên là tôi sẽ lưu các bài viết 469 00:26:37,920 --> 00:26:48,770 cho một biến vì vậy những gì chúng ta sẽ làm là - 470 00:26:48,770 --> 00:26:52,090 trong Kohana những gì bạn làm là để lấy các đối tượng bài 471 00:26:52,090 --> 00:26:55,380 đó là loại cồng kềnh, nhưng bạn phải làm điều này được gọi là ORM :: factory, 472 00:26:55,380 --> 00:26:57,750 và sau đó bạn vượt qua trong tên của mô hình mà bạn muốn, 473 00:26:57,750 --> 00:27:00,490 và nó trả về đối tượng ORM đại diện cho mô hình đó. 474 00:27:00,490 --> 00:27:04,860 Và sau đó, như tôi đã nói, khi chúng ta mở rộng đối tượng ORM, 475 00:27:04,860 --> 00:27:07,320 chúng tôi nhận được tất cả những phương pháp này miễn phí, ví dụ như vậy, 476 00:27:07,320 --> 00:27:09,200 chúng tôi có được chức năng này mới được gọi là "tìm thấy tất cả" 477 00:27:09,200 --> 00:27:12,160 tự động trả về mọi bài duy nhất trong cơ sở dữ liệu, 478 00:27:12,160 --> 00:27:14,850 mà là khá thuận tiện. 479 00:27:14,850 --> 00:27:17,480 >> Và bây giờ trong cơ thể tôi sẽ trở lại 480 00:27:17,480 --> 00:27:24,860 bài viết đầu tiên và trở lại cơ thể của nó. 481 00:27:24,860 --> 00:27:27,930 Và tất nhiên, tôi cần phải tạo ra một bài, 482 00:27:27,930 --> 00:27:31,880 vì vậy hãy chèn một bài mới. 483 00:27:31,880 --> 00:27:37,870 Tôi sẽ nói, "Brandon, bài đầu tiên của tôi." 484 00:27:37,870 --> 00:27:40,010 Tuyệt vời. 485 00:27:40,010 --> 00:27:45,910 Và bây giờ chúng ta sẽ đi đến các blog 486 00:27:45,910 --> 00:27:50,960 và nếu tất cả hoạt động tốt - oh, đây là một số điều cho phép tập tin câm khác nữa. 487 00:27:50,960 --> 00:27:56,090 Giữ trên 1 giây. Đó là loại ngớ ngẩn. 488 00:28:06,700 --> 00:28:08,490 Có chúng tôi đi. Được rồi. 489 00:28:08,490 --> 00:28:10,040 Tôi cố định vấn đề cho phép. 490 00:28:10,040 --> 00:28:12,040 Nó đã cố gắng để tạo ra một số tập tin và một số nhật ký, 491 00:28:12,040 --> 00:28:15,400 và các điều khoản, một lần nữa, không được thiết lập đúng, vì vậy tôi đã làm cho nó 492 00:28:15,400 --> 00:28:18,320 do đó, những tác phẩm đã được ghi và thực thi 493 00:28:18,320 --> 00:28:21,090 do đó, nó thực sự có thể đăng nhập vào mọi thứ. 494 00:28:21,090 --> 00:28:24,220 Bây giờ nó đem lại cho tôi một câu nói ngoại lệ, "lớp ORM không tìm thấy" 495 00:28:24,220 --> 00:28:26,960 và đó là bởi vì tôi đã quên một bước. 496 00:28:26,960 --> 00:28:37,010 Đó là quá xấu. 497 00:28:37,010 --> 00:28:40,270 Trong các tập tin thư mục khởi động, có các mô-đun đây, 498 00:28:40,270 --> 00:28:42,480 mà bạn có thể chọn để kích hoạt hoặc vô hiệu hóa. 499 00:28:42,480 --> 00:28:44,340 Đây là một loạt các tính năng khác nhau mà bạn có thể chọn để sử dụng 500 00:28:44,340 --> 00:28:46,180 trong Kohana, đó là loại tốt đẹp. 501 00:28:46,180 --> 00:28:49,090 >> Ví dụ, họ có một mô-đun xác thực 502 00:28:49,090 --> 00:28:51,170 mà bạn có thể sử dụng để xác thực người sử dụng. 503 00:28:51,170 --> 00:28:53,390 Họ có một mô-đun bộ nhớ đệm nếu bạn muốn thực hiện 504 00:28:53,390 --> 00:28:57,870 một số loại bộ nhớ đệm trở lại cuối cùng để làm cho công tác ứng dụng nhanh hơn và những thứ linh tinh. 505 00:28:57,870 --> 00:29:02,140 Chúng tôi cần phải kích hoạt cơ sở dữ liệu và các mô-đun ORM, 506 00:29:02,140 --> 00:29:04,280 bởi vì như tôi đã nói, chúng tôi đang sử dụng cơ sở dữ liệu, rõ ràng, 507 00:29:04,280 --> 00:29:08,200 và chúng tôi cũng cần phải kích hoạt module ORM, 508 00:29:08,200 --> 00:29:12,220 bởi vì chúng tôi muốn có chức năng bổ sung, đó là tốt đẹp để có. 509 00:29:12,220 --> 00:29:14,240 Tất cả tôi phải làm là bỏ ghi chú những 2 dòng, 510 00:29:14,240 --> 00:29:18,760 và bây giờ nếu tôi làm mới, nó đã cho tôi một lỗi khác. 511 00:29:18,760 --> 00:29:22,100 Nó nói, "Class Model_Post không tìm thấy." 512 00:29:22,100 --> 00:29:30,210 Bây giờ đây là một vấn đề tốt để có. 513 00:29:30,210 --> 00:29:37,660 Chúng ta hãy xem. 514 00:29:37,660 --> 00:29:42,200 Làm cho nó công cộng. 515 00:29:42,200 --> 00:29:46,450 Giữ số trên. 516 00:30:11,610 --> 00:30:13,160 Oh, em yêu. 517 00:30:13,160 --> 00:30:18,590 Tôi không biết tại sao nó không thể tìm thấy điều đó. 518 00:30:18,590 --> 00:30:21,030 Đó là thực sự lạ. 519 00:30:21,030 --> 00:30:23,820 Tôi có lớp học này ngay tại đây. 520 00:30:23,820 --> 00:30:28,650 Tôi đoán tôi có thể phải - oh. 521 00:30:28,650 --> 00:30:32,010 Tôi rất ngớ ngẩn. Tôi quên thêm một thẻ PHP. 522 00:30:32,010 --> 00:30:34,670 Đó là lý do tại sao. 523 00:30:34,670 --> 00:30:41,260 Bây giờ tôi phải lùi lại 1 sự thay đổi mà tôi chỉ cần làm. 524 00:30:41,260 --> 00:30:44,270 >> Rồi. Có chúng tôi đi. 525 00:30:44,270 --> 00:30:47,500 Đó là thực sự ngớ ngẩn. Tôi không có một thẻ PHP mở. 526 00:30:47,500 --> 00:30:49,900 Nhưng như bạn thấy, bây giờ nó hoạt động đúng, phải không? 527 00:30:49,900 --> 00:30:51,240 Chúng tôi có 1 bài viết. 528 00:30:51,240 --> 00:30:54,730 Chúng tôi nắm lấy bài đầu tiên, và bây giờ chúng tôi in ra cơ thể của nó. 529 00:30:54,730 --> 00:30:58,010 Tuyệt vời. Tuyệt vời. 530 00:30:58,010 --> 00:31:01,470 Bất kỳ câu hỏi cho đến nay? 531 00:31:01,470 --> 00:31:04,100 Nope? Bất kỳ câu hỏi? 532 00:31:04,100 --> 00:31:08,340 Được rồi, vì vậy chúng tôi chỉ tạo ra mô hình bài, rất cơ bản, 533 00:31:08,340 --> 00:31:10,930 và chúng ta sẽ thêm một số chức năng sau này. 534 00:31:10,930 --> 00:31:13,600 Chúng ta có thể thêm kiểm chứng thực và lọc. 535 00:31:13,600 --> 00:31:15,650 Kiểm chứng thực là một trong những điều 536 00:31:15,650 --> 00:31:18,150 mà khuôn khổ giải quyết cho bạn thực sự, thực sự tốt, 537 00:31:18,150 --> 00:31:21,310 và tôi không nghĩ rằng các bạn phải làm điều này cho pset CS50 của bạn, 538 00:31:21,310 --> 00:31:24,000 nhưng nếu bạn làm phát triển web cho dự án cuối cùng của bạn, 539 00:31:24,000 --> 00:31:26,280 bạn đang có khả năng sẽ muốn làm một số loại xác nhận, 540 00:31:26,280 --> 00:31:28,290 như không có tên người dùng trống, 541 00:31:28,290 --> 00:31:31,950 có thể có một mật khẩu có ít nhất một số chiều dài, những điều như thế. 542 00:31:31,950 --> 00:31:34,750 Và nó thực sự cồng kềnh để thực hiện những điều này bằng chính mình, 543 00:31:34,750 --> 00:31:37,390 và khá nhiều mỗi khuôn khổ web duy nhất nào đó cho bạn 544 00:31:37,390 --> 00:31:41,140 và cho phép bạn làm điều đó một cách rất sạch sẽ. 545 00:31:41,140 --> 00:31:44,340 Và mô hình là nơi bạn thường thể hiện những quy tắc xác nhận, 546 00:31:44,340 --> 00:31:48,790 bởi vì nó xác định một mô hình có giá trị hay không. 547 00:31:48,790 --> 00:31:51,350 >> Nhưng hiện nay, chúng ta sẽ đặt cho đến khi sau đó, 548 00:31:51,350 --> 00:31:53,520 và bây giờ chúng ta sẽ làm việc trên một phần khác, 549 00:31:53,520 --> 00:31:55,400 và chúng tôi sẽ cố gắng và làm cho một cái nhìn mới 550 00:31:55,400 --> 00:31:59,580 liệt kê tất cả các bài viết. 551 00:31:59,580 --> 00:32:02,490 Các bước liên quan trong việc đưa ra một hành động mới cho danh sách tất cả các bài viết 552 00:32:02,490 --> 00:32:04,810 là để lấy một danh sách của tất cả các bài viết 553 00:32:04,810 --> 00:32:11,990 và sau đó hiển thị danh sách của tất cả các bài viết thông qua một cái nhìn. 554 00:32:11,990 --> 00:32:16,420 Ngay tại đây, may mắn thay đủ, chúng tôi đã nắm lấy tất cả các bài viết 555 00:32:16,420 --> 00:32:20,310 sử dụng dòng đầu tiên này, tìm thấy tất cả các chức năng, 556 00:32:20,310 --> 00:32:22,520 và bây giờ những gì chúng ta sẽ làm là cho đến nay 557 00:32:22,520 --> 00:32:25,350 Tôi đã trực tiếp thiết lập các cơ thể của phản ứng 558 00:32:25,350 --> 00:32:29,090 bằng cách đi qua chuỗi, nhưng bây giờ tôi muốn sử dụng một cái nhìn, 559 00:32:29,090 --> 00:32:31,870 và sự khác biệt giữa quan điểm và chỉ làm điều này 560 00:32:31,870 --> 00:32:35,330 được với quan điểm tôi có thể có một tốt đẹp, lớn mẫu HTML, 561 00:32:35,330 --> 00:32:37,710 và những gì tôi có thể làm là vượt qua nó biến nhất định 562 00:32:37,710 --> 00:32:42,200 và sau đó đã xem tự động cư mẫu của nó 563 00:32:42,200 --> 00:32:44,690 sử dụng các biến. 564 00:32:44,690 --> 00:32:50,780 Những gì tôi sẽ làm là tôi sẽ tạo ra một cái nhìn mới, 565 00:32:50,780 --> 00:32:55,940 và tôi sẽ đặt tên cho xem một cái gì đó như "blog / chỉ," 566 00:32:55,940 --> 00:33:08,480 và tôi sẽ về cơ bản liên kết này - oh, những gì tôi viết? 567 00:33:08,480 --> 00:33:12,910 Bộ não của tôi là ở một nơi khác. 568 00:33:12,910 --> 00:33:16,600 Tôi sẽ để ràng buộc các bài viết biến để xem, 569 00:33:16,600 --> 00:33:19,950 vì vậy cách mà xem đã truy cập vào biến bài này. 570 00:33:19,950 --> 00:33:26,140 >> Và vì vậy bây giờ tôi cần phải tạo quan điểm này, 571 00:33:26,140 --> 00:33:28,500 vì vậy ở đây chúng tôi có thư mục này được gọi là "Xem" 572 00:33:28,500 --> 00:33:32,150 và lần đầu tiên, tôi sẽ tạo ra một thư mục mới theo đó được gọi là "Blog". 573 00:33:32,150 --> 00:33:35,810 Này là tốt đẹp. Bằng cách đó chúng ta có thể có một hệ thống phân cấp tốt đẹp cho quan điểm của mình. 574 00:33:35,810 --> 00:33:43,910 Và sau đó tôi sẽ tạo ra một tập tin trong đó được gọi là "index.php". 575 00:33:43,910 --> 00:33:45,780 Tuyệt vời. 576 00:33:45,780 --> 00:33:52,930 Trên thực tế, chúng ta có cả hai ở đây. 577 00:33:52,930 --> 00:33:56,760 Làm cho một tập tin xem có lẽ là một phần đơn giản nhất của tất cả điều này, 578 00:33:56,760 --> 00:33:59,090 và đây là những điều có thể bạn đã quen thuộc với. 579 00:33:59,090 --> 00:34:01,240 Chúng ta sẽ làm một cái gì đó thực sự đơn giản, 580 00:34:01,240 --> 00:34:05,360 bắt đầu nói, "danh sách bài đăng trên blog của tôi." 581 00:34:05,360 --> 00:34:14,860 Sau đó chúng ta có thể đi qua, 582 00:34:14,860 --> 00:34:17,920 và chúng tôi có thể lặp qua mảng bài viết, 583 00:34:17,920 --> 00:34:21,760 lấy tất cả các bài viết và nói điều gì đó như - 584 00:34:21,760 --> 00:34:25,290 có thể thêm một dòng 585 00:34:25,290 --> 00:34:42,460 và sau đó in ra tác giả và cơ thể. 586 00:34:42,460 --> 00:34:44,480 Đó có ý nghĩa cho đến nay? 587 00:34:44,480 --> 00:34:50,870 Và chúng ta hãy xem nếu nó hoạt động. 588 00:34:50,870 --> 00:34:53,489 Không có gì xảy ra. 589 00:34:53,489 --> 00:34:55,090 Tôi tự hỏi tại sao. 590 00:34:55,090 --> 00:34:58,760 Oh, tôi bị mất 1 bước. Rất ngớ ngẩn của tôi. 591 00:34:58,760 --> 00:35:01,640 Tôi tạo ra một cái nhìn, nhưng tôi đã không đặt xem như là phản ứng, 592 00:35:01,640 --> 00:35:03,190 vì vậy bạn phải làm điều 1 hơn. 593 00:35:03,190 --> 00:35:12,610 Bạn phải làm "cơ thể phản ứng này" và đặt nó là quan điểm. 594 00:35:12,610 --> 00:35:14,760 Có chúng tôi đi. 595 00:35:14,760 --> 00:35:17,200 Chúng tôi có tiêu đề của chúng tôi, và sau đó chúng tôi có một bài viết, 596 00:35:17,200 --> 00:35:20,500 và chỉ cần cho đá, chúng ta hãy chèn bài khác 597 00:35:20,500 --> 00:35:23,390 vì vậy chúng tôi có thể thấy một danh sách. 598 00:35:31,800 --> 00:35:36,650 Và chèn những 2 bài viết, 599 00:35:36,650 --> 00:35:39,500 và bây giờ nếu tôi làm mới trang, 600 00:35:39,500 --> 00:35:42,060 chúng ta thấy tất cả những bài viết ở đây. 601 00:35:42,060 --> 00:35:44,250 >> Điều đó có ý nghĩa cho đến nay? 602 00:35:44,250 --> 00:35:46,400 Vâng, một câu hỏi? Oh, không sao. 603 00:35:46,400 --> 00:35:51,440 Như bạn có thể thấy, chúng ta đã có thể tách tất cả các mã số ra 604 00:35:51,440 --> 00:35:53,920 thành phần khác nhau, và sau đó bạn có thể thấy rõ ràng nhất với mã xem. 605 00:35:53,920 --> 00:35:57,810 Tập tin này ở đây thể hiện quan điểm, 606 00:35:57,810 --> 00:36:01,220 nó chỉ quan tâm đến đại diện cho dữ liệu, hiển thị dữ liệu. 607 00:36:01,220 --> 00:36:04,310 Nó được thông qua một số loại dữ liệu, và tất cả nó chỉ là hiển thị nó cho bạn. 608 00:36:04,310 --> 00:36:07,660 Trong tất cả các phần khác của mã của bạn, bạn sẽ không phải lo lắng về điều đó, 609 00:36:07,660 --> 00:36:10,480 và tương tự, mã tầm nhìn của bạn không phải lo lắng bất cứ điều gì về 610 00:36:10,480 --> 00:36:13,390 làm thế nào để truy cập vào cơ sở dữ liệu và vv và vv, 611 00:36:13,390 --> 00:36:19,950 đó là thực sự tốt và làm cho mã của bạn rất nhiều bảo trì hơn. 612 00:36:19,950 --> 00:36:23,390 Như tôi đã nói, quan điểm, họ năng động trong đó 613 00:36:23,390 --> 00:36:27,080 đó là 1 tập tin, nhưng nó sẽ tạo ra quan điểm khác nhau 614 00:36:27,080 --> 00:36:29,940 dựa trên các biến bạn thực sự vượt qua trong, 615 00:36:29,940 --> 00:36:32,370 và hơn nữa, có rất nhiều các chức năng trợ giúp khác nhau 616 00:36:32,370 --> 00:36:34,230 mà bạn có thể sử dụng để giúp bạn viết mã của bạn nhanh hơn, 617 00:36:34,230 --> 00:36:36,320 mà tôi sẽ chỉ cho bạn chỉ trong một giây. 618 00:36:36,320 --> 00:36:38,050 Yeah. 619 00:36:38,050 --> 00:36:42,490 >> [Sinh viên] Vì vậy, $ 0 là một bộ điều khiển, phải không? 620 00:36:42,490 --> 00:36:44,000 Đó là điều thứ hai. 621 00:36:44,000 --> 00:36:46,090 Câu hỏi đặt ra là được $ 0 một bộ điều khiển? 622 00:36:46,090 --> 00:36:48,610 $ 0 là một biến tôi tạo ra ở đây. 623 00:36:48,610 --> 00:36:51,320 Tôi tạo ra một cái nhìn đầu tiên. Tôi được giao cho một số biến. 624 00:36:51,320 --> 00:36:54,960 Sau đó, tôi chuyển nó vào chức năng này, thiết lập nó như là cơ thể của các phản ứng. 625 00:36:54,960 --> 00:36:57,260 Điều đó có ý nghĩa? 626 00:36:57,260 --> 00:37:02,200 [Sinh viên] Vì vậy, xem :: nhà máy, là xem như một lớp học 627 00:37:02,200 --> 00:37:06,610 hoặc một thư viện [nghe được] chức năng nhà máy? 628 00:37:06,610 --> 00:37:10,640 Câu hỏi đặt ra là về chức năng xem :: nhà máy, 629 00:37:10,640 --> 00:37:14,020 và về cơ bản đây là một số chi tiết lập trình hướng đối tượng cơ bản. 630 00:37:14,020 --> 00:37:18,000 Xem là lớp xem, và nó có một phương pháp gọi là "Nhà máy" 631 00:37:18,000 --> 00:37:24,170 và đó là một cách để lấy các đối tượng đó được đặt tên "blog / chỉ." 632 00:37:24,170 --> 00:37:27,140 Và đó là một số công cụ lập trình hướng đối tượng hơn 633 00:37:27,140 --> 00:37:33,010 rằng tôi sẽ không đi vào đây quá nhiều. 634 00:37:33,010 --> 00:37:36,400 Bây giờ rõ ràng, chúng tôi muốn tạo bài viết mới, 635 00:37:36,400 --> 00:37:38,790 nhưng chúng tôi không muốn có để làm điều đó thông qua một cơ sở dữ liệu, 636 00:37:38,790 --> 00:37:41,280 vì vậy chúng tôi đang đi để tạo ra một hành động mới để tạo ra một bài mới, 637 00:37:41,280 --> 00:37:43,050 và có rất nhiều thứ chúng ta phải làm. 638 00:37:43,050 --> 00:37:45,910 >> Điều đầu tiên chúng ta sẽ làm gì - hãy giải quyết những việc này một. 639 00:37:45,910 --> 00:37:48,320 Điều đầu tiên chúng tôi sẽ làm là chúng ta phải tạo ra một hình thức 640 00:37:48,320 --> 00:37:54,460 để chèn một bài mới, 641 00:37:54,460 --> 00:37:57,360 nhưng tôi cũng sẽ thêm một hành động mới nhất, 642 00:37:57,360 --> 00:38:01,050 để thêm một hành động mới chỉ là dễ dàng như 643 00:38:01,050 --> 00:38:03,490 thêm một chức năng mới với bộ điều khiển của bạn, 644 00:38:03,490 --> 00:38:13,710 và bây giờ tôi sẽ làm một cái gì đó rất cơ bản, 645 00:38:13,710 --> 00:38:20,850 chỉ cần lấy quan điểm này và gửi nó, chỉ cần hiển thị nó cho bạn. 646 00:38:20,850 --> 00:38:26,220 Và sau đó bây giờ tôi sẽ tạo ra một tập tin mới xem, 647 00:38:26,220 --> 00:38:33,690 và tôi sẽ bắt đầu viết một số công cụ. 648 00:38:33,690 --> 00:38:36,540 Những gì tốt đẹp về Kohana là họ cung cấp một số chức năng trợ giúp khác nhau 649 00:38:36,540 --> 00:38:38,790 để bạn có thể viết mã xem dễ dàng hơn, 650 00:38:38,790 --> 00:38:41,970 và 1 trong những chức năng trợ giúp hoặc mô-đun trợ giúp 651 00:38:41,970 --> 00:38:45,860 được xung quanh văn bản hình thức. 652 00:38:45,860 --> 00:38:49,460 Đối với văn bản hình thức, tôi không thực sự phải trực tiếp viết bất kỳ HTML bản thân mình. 653 00:38:49,460 --> 00:38:51,100 Các bạn đã viết các hình thức HTML. 654 00:38:51,100 --> 00:38:54,850 Bạn biết làm thế nào nó có thể được thực sự, thực sự đau đớn và phức tạp để viết các hình thức. 655 00:38:54,850 --> 00:38:59,970 Nó không phải vui vẻ, vì vậy may mắn thay, 656 00:38:59,970 --> 00:39:04,860 chúng tôi về cơ bản có thể viết một hình thức sử dụng Kohana của 657 00:39:04,860 --> 00:39:11,190 hình thành các chức năng trợ giúp để làm điều đó cho chúng ta. 658 00:39:11,190 --> 00:39:17,340 Chúng ta sẽ về cơ bản có các lĩnh vực cho mọi điều duy nhất chúng ta có, 659 00:39:17,340 --> 00:39:23,160 do đó, một cho các tác giả và một cho các cơ quan. 660 00:39:23,160 --> 00:39:27,090 Chúng ta sẽ có một nhãn, và chúng ta sẽ có một đầu vào. 661 00:39:37,450 --> 00:39:41,360 >> Và cuối cùng, chúng ta sẽ có một bài nộp. 662 00:39:49,350 --> 00:39:52,230 Và như bạn có thể thấy, đây là sạch hơn nhiều để viết 663 00:39:52,230 --> 00:39:58,150 hơn tất cả những gì HTML lộn xộn, đó là loại tốt đẹp. 664 00:39:58,150 --> 00:40:00,930 Cấp, có khuôn khổ web khác có nó thậm chí còn sạch hơn, 665 00:40:00,930 --> 00:40:04,440 nhưng ít nhất đây là tốt hơn so với văn bản HTML mình. 666 00:40:09,400 --> 00:40:11,130 Tuyệt vời, vì vậy đây là những gì bạn nhìn thấy. 667 00:40:11,130 --> 00:40:13,530 Đó là loại lộn xộn, 668 00:40:13,530 --> 00:40:19,720 vì vậy tôi sẽ để thêm vào một dòng có 669 00:40:19,720 --> 00:40:21,180 để làm cho rằng nhìn một chút đẹp hơn. 670 00:40:21,180 --> 00:40:23,330 Vâng, tất nhiên, nó vẫn có vẻ thực sự, thực sự xấu, nhưng chúng tôi chỉ tập trung 671 00:40:23,330 --> 00:40:26,050 về các chức năng cho bây giờ và không về thẩm mỹ. 672 00:40:26,050 --> 00:40:28,010 Không có thời gian để làm tất cả mọi thứ. 673 00:40:28,010 --> 00:40:30,600 Và bạn có thể thấy, chúng ta có một hình thức siêu cơ bản, 674 00:40:30,600 --> 00:40:32,080 đó là loại tốt đẹp. 675 00:40:32,080 --> 00:40:36,730 Mã này tôi sẽ nói là sạch hơn cố gắng để viết một HTML hình thành chính mình, 676 00:40:36,730 --> 00:40:40,290 vì vậy đó là tốt đẹp. 677 00:40:40,290 --> 00:40:42,030 Cái gì tiếp theo? 678 00:40:42,030 --> 00:40:49,260 Bây giờ chúng ta cần phải làm việc với hành động. 679 00:40:49,260 --> 00:40:51,240 Thông thường khi bạn viết các hình thức HTML, 680 00:40:51,240 --> 00:40:54,070 bạn phải cho nó, nơi nó sẽ gửi biểu mẫu để. 681 00:40:54,070 --> 00:40:56,050 Theo mặc định trong hầu hết các web framework 682 00:40:56,050 --> 00:40:58,200 nó trình với cùng URL chính xác, vì vậy điều này là, 683 00:40:58,200 --> 00:41:01,310 nếu bạn gửi một yêu cầu get to / blog / mới, 684 00:41:01,310 --> 00:41:03,240 nó sẽ hiển thị cho bạn mẫu đơn, 685 00:41:03,240 --> 00:41:06,810 nhưng nếu bạn gửi một yêu cầu đến bài / blog / mới với các dữ liệu, 686 00:41:06,810 --> 00:41:10,000 nó thực sự nên cố gắng tiết kiệm bài đó 687 00:41:10,000 --> 00:41:13,300 và làm điều gì đó với nó. 688 00:41:20,630 --> 00:41:22,180 >> Những gì chúng tôi sẽ làm là 689 00:41:22,180 --> 00:41:25,320 về cơ bản tất cả chúng ta phải làm gì để kiểm tra xem đó là một yêu cầu bài hoặc nhận được yêu cầu 690 00:41:25,320 --> 00:41:29,350 là để kiểm tra các biến bài bạn có thể thiết lập là gì. 691 00:41:29,350 --> 00:41:34,560 Và nếu biến bài được thiết lập, sau đó chúng tôi sẽ cố gắng và tạo ra một bài mới. 692 00:41:34,560 --> 00:41:38,440 Một lần nữa, chúng tôi chỉ làm điều này, 693 00:41:38,440 --> 00:41:41,090 và tạo ra một bài mới, và chúng tôi đang theo nghĩa đen sẽ 694 00:41:41,090 --> 00:41:51,150 thiết lập các lĩnh vực của mình như thế này, 695 00:41:51,150 --> 00:41:55,640 và sau đó chúng ta sẽ lưu nó. 696 00:41:55,640 --> 00:41:59,200 Và sau đó tôi sẽ chuyển hướng 697 00:41:59,200 --> 00:42:07,660 để trang chỉ mục để họ có thể xem danh sách của chúng ta về bài viết một lần nữa. 698 00:42:07,660 --> 00:42:09,620 Chúng ta hãy cố gắng đó. 699 00:42:09,620 --> 00:42:15,160 Tôi sẽ nói, "Brandon" 700 00:42:15,160 --> 00:42:18,140 và sau đó nộp bài, và nếu mọi việc suôn sẻ, 701 00:42:18,140 --> 00:42:21,390 như bạn có thể thấy, nó chuyển hướng tôi đến trang chỉ mục, 702 00:42:21,390 --> 00:42:24,140 và nếu tôi di chuyển xuống phía dưới, chúng ta có một bài mới được chèn vào. 703 00:42:24,140 --> 00:42:26,430 Yay! 704 00:42:26,430 --> 00:42:28,430 Vâng, câu hỏi. 705 00:42:28,430 --> 00:42:31,760 >> [Sinh viên] Điều gì nếu bạn đã bước vào một điều chính xác 706 00:42:31,760 --> 00:42:33,380 bạn đã nhập trước? 707 00:42:33,380 --> 00:42:36,950 Liệu nó kiểm tra để chắc chắn rằng bạn đã không bị trùng lặp 708 00:42:36,950 --> 00:42:38,810 nộp cùng? 709 00:42:38,810 --> 00:42:41,660 Được mặc định, không có, bởi vì theo mặc định - 710 00:42:41,660 --> 00:42:46,470 xin lỗi, câu hỏi là nếu bạn nhập vào các dữ liệu chính xác cùng một trong các hình thức 711 00:42:46,470 --> 00:42:50,180 trình đó, nó sẽ cho phép bạn chèn một đối tượng trùng lặp, 712 00:42:50,180 --> 00:42:52,550 một bản sao nhập cảnh, về cơ bản? 713 00:42:52,550 --> 00:42:54,070 Ngay bây giờ, vâng, nó sẽ cho phép bạn làm điều đó, 714 00:42:54,070 --> 00:42:58,860 bởi vì trong cơ sở dữ liệu đó là hoàn toàn hợp lệ để có hàng hoàn toàn trùng lặp, 715 00:42:58,860 --> 00:43:02,260 nhưng nếu đó là một mối quan tâm, sau đó bạn có thể thêm kiểm chứng, ví dụ, 716 00:43:02,260 --> 00:43:06,430 để đảm bảo rằng nếu điều này là chính xác giống như một cái gì đó đã tồn tại, 717 00:43:06,430 --> 00:43:08,720 sau đó nói rằng đó là một đối tượng không hợp lệ, 718 00:43:08,720 --> 00:43:11,200 và sau đó bạn thậm chí có thể xác định thông báo lỗi của bạn 719 00:43:11,200 --> 00:43:14,390 và nói, "không hợp lệ vì điều này đã tồn tại" hoặc một cái gì đó như thế. 720 00:43:14,390 --> 00:43:22,420 Nhưng trong trường hợp này, tôi chỉ có thể tạo ra một cái gì đó trùng lặp. 721 00:43:22,420 --> 00:43:26,010 Bây giờ chúng ta hãy cố gắng và thêm một số kiểm chứng thực. 722 00:43:26,010 --> 00:43:30,400 Vấn đề này ngay bây giờ là 723 00:43:30,400 --> 00:43:34,220 Tôi nghĩa là có thể gửi một bài hoàn toàn trống. 724 00:43:34,220 --> 00:43:37,500 Tôi có thể nhấp vào nút này ngay bây giờ, và có chúng tôi đi. 725 00:43:37,500 --> 00:43:40,290 Bạn có thể không thực sự nhìn thấy nó, nhưng dòng này thêm ở đây 726 00:43:40,290 --> 00:43:43,830 chỉ ra rằng tôi thật sự có một bài viết mới. 727 00:43:43,830 --> 00:43:46,050 Nó chỉ có một tác giả trống và một cơ thể trống, 728 00:43:46,050 --> 00:43:48,630 và chúng tôi không muốn để cho phép mọi người làm điều đó. 729 00:43:48,630 --> 00:43:52,550 Đây là nơi xác nhận có in 730 00:43:52,550 --> 00:43:57,540 >> Tôi có thể đi đến đối tượng mô hình của tôi, 731 00:43:57,540 --> 00:43:59,530 và bây giờ tôi có thể thêm một chức năng mới xác định 732 00:43:59,530 --> 00:44:02,000 những gì quy tắc xác nhận tôi nên thêm vào mô hình này 733 00:44:02,000 --> 00:44:06,840 để đảm bảo rằng nó có giá trị và xác định những gì nó có nghĩa là một bài hợp lệ? 734 00:44:06,840 --> 00:44:10,210 Và tôi muốn nói đó chỉ là một bài hợp lệ nếu cả tác giả và cơ thể 735 00:44:10,210 --> 00:44:15,150 không trống, và đây là cách bạn làm điều đó trong Kohana. 736 00:44:15,150 --> 00:44:18,750 Bạn tạo ra một chức năng mới được gọi là "Nội quy" 737 00:44:18,750 --> 00:44:20,210 và sau đó về cơ bản bạn trả lại một mảng kết hợp 738 00:44:20,210 --> 00:44:24,230 định nghĩa các quy tắc xác nhận cho đối tượng này. 739 00:44:24,230 --> 00:44:27,530 Chúng ta sẽ quay trở lại mảng, và sau đó những gì chúng ta sẽ làm là 740 00:44:27,530 --> 00:44:32,820 nói "tác giả", nó đi vào một mảng, 741 00:44:32,820 --> 00:44:37,720 đó đi vào một mảng được gọi là "không có sản phẩm nào." 742 00:44:37,720 --> 00:44:41,480 Và sau đó tôi sẽ nói "thể xác". 743 00:44:50,980 --> 00:44:54,120 Được rồi, và cú pháp cho việc này và cơ cấu này 744 00:44:54,120 --> 00:44:56,530 có thể nhìn một chút rườm rà và phức tạp một chút. 745 00:44:56,530 --> 00:44:59,330 Nếu bạn đọc những tài liệu hướng dẫn, nó khá đơn giản để tìm ra, 746 00:44:59,330 --> 00:45:02,500 Nhưng về cơ bản đây là những gì bạn cần làm để xác định 747 00:45:02,500 --> 00:45:04,130 một số quy tắc xác nhận, và có rất nhiều quy tắc khác nhau 748 00:45:04,130 --> 00:45:06,810 rằng Kohana sẽ cung cấp cho bạn miễn phí, như bạn có thể thêm các quy tắc để nói 749 00:45:06,810 --> 00:45:08,410 nó phải được ít nhất là chiều dài này. 750 00:45:08,410 --> 00:45:11,800 Có lẽ nó phải là số. Có lẽ nó phải được số alpha. 751 00:45:11,800 --> 00:45:14,410 Có lẽ nó đã được nhiều nhất là chiều dài này, vv và vv. 752 00:45:14,410 --> 00:45:17,730 Có rất nhiều quy tắc khác nhau mà Kohana cung cấp cho bạn, 753 00:45:17,730 --> 00:45:19,610 và bạn có thể đi trên trang web của họ, xem xét các tài liệu, 754 00:45:19,610 --> 00:45:23,150 và bạn có thể thấy tất cả những điều khác nhau mà bạn có thể làm. 755 00:45:23,150 --> 00:45:25,650 >> Nhưng điều này là tất cả tôi phải làm, 756 00:45:25,650 --> 00:45:30,490 và bây giờ chúng ta hãy xem những gì xảy ra 757 00:45:30,490 --> 00:45:34,060 nếu tôi gửi một bài trống. 758 00:45:34,060 --> 00:45:36,960 Điều gì sẽ xảy ra? Ồ, không, tôi nhận được một lỗi. 759 00:45:36,960 --> 00:45:39,440 Tôi nhận được một ngoại lệ xác nhận. 760 00:45:39,440 --> 00:45:41,070 Vâng, đó là tốt. 761 00:45:41,070 --> 00:45:43,200 Nó nói với tôi rằng mô hình của tôi là không hợp lệ, 762 00:45:43,200 --> 00:45:45,780 nhưng tôi không muốn hiển thị một ngoại lệ 763 00:45:45,780 --> 00:45:48,720 cho người sử dụng của tôi khi họ cố gắng để gửi một cái gì đó không hợp lệ, phải không? 764 00:45:48,720 --> 00:45:51,560 Tôi muốn cung cấp cho họ một số loại thông báo lỗi thân thiện 765 00:45:51,560 --> 00:45:53,610 khi gặp khó khăn. 766 00:45:53,610 --> 00:46:01,830 Những gì chúng ta sẽ làm là chúng ta sẽ 767 00:46:01,830 --> 00:46:04,490 bọc tất cả mọi thứ trong một vòng lặp cố gắng nắm bắt. 768 00:46:04,490 --> 00:46:06,750 Trên thực tế, tôi nghĩ rằng đây cũng là một cái gì đó bạn không biết được chưa 769 00:46:06,750 --> 00:46:10,820 trong CS50, bởi vì C, ngôn ngữ lập trình C, 770 00:46:10,820 --> 00:46:14,000 không có trường hợp ngoại lệ, nhưng hầu hết các ngôn ngữ khác duy nhất 771 00:46:14,000 --> 00:46:16,700 có trường hợp ngoại lệ, như vậy thực sự, thực sự một thời gian ngắn, 772 00:46:16,700 --> 00:46:19,430 một ngoại lệ là cái gì đó một đoạn mã có thể 773 00:46:19,430 --> 00:46:21,430 ném một ngoại lệ khi họ gặp khó khăn, 774 00:46:21,430 --> 00:46:23,410 nhưng sau đó có thể một số phần khác của mã cao hơn 775 00:46:23,410 --> 00:46:25,810 có thể bắt ngoại lệ đó và làm điều gì đó với nó. 776 00:46:25,810 --> 00:46:27,710 >> Ví dụ, trong trường hợp này, 777 00:46:27,710 --> 00:46:29,940 các đoạn mã đó là cố gắng để tiết kiệm một mô hình, 778 00:46:29,940 --> 00:46:33,170 nó xác nhận các mô hình, và nếu nó nói, "Được rồi, mô hình này là không hợp lệ" 779 00:46:33,170 --> 00:46:36,150 nó sẽ ném một ngoại lệ, và đây là loại tương đương 780 00:46:36,150 --> 00:46:39,870 trong C, bạn có thể trả về một -1 hoặc một cái gì đó như thế. 781 00:46:39,870 --> 00:46:42,320 Và sau đó đối với tôi, chức năng này, mã của tôi 782 00:46:42,320 --> 00:46:46,310 ở một mức độ cao hơn, tôi có thể thử và bắt ngoại lệ 783 00:46:46,310 --> 00:46:49,330 và về cơ bản nói, "Được rồi, nếu tôi bắt ngoại lệ, những gì tôi sẽ làm gì?" 784 00:46:49,330 --> 00:46:51,570 Hoặc tôi có thể chọn không bắt ngoại lệ và cho phép một người nào đó cao hơn 785 00:46:51,570 --> 00:46:54,400 bắt các ngoại lệ, hoặc nếu không có ai bắt nó, 786 00:46:54,400 --> 00:46:56,820 sau đó toàn bộ chương trình bị treo và nói: 787 00:46:56,820 --> 00:46:59,170 "Một cái gì đó đã đi sai, và tôi không thể xử lý nó." 788 00:46:59,170 --> 00:47:04,490 >> Nhưng những gì chúng tôi làm là bạn quấn một đoạn mã trong một khối thử, 789 00:47:04,490 --> 00:47:09,030 và sau đó bạn cũng có thêm một cái gì đó gọi là một khối catch, 790 00:47:09,030 --> 00:47:17,300 đó là loại mã mà sẽ cố gắng và bắt ngoại lệ có thể xảy ra. 791 00:47:17,300 --> 00:47:20,430 Và do đó, nếu tôi bắt ngoại lệ đặc biệt này 792 00:47:20,430 --> 00:47:23,110 hoặc huỷ bỏ hiệu lực ngoại lệ, sau đó những gì tôi sẽ làm là 793 00:47:23,110 --> 00:47:31,210 Tôi sẽ thiết lập lỗi - Tôi nghĩ rằng đó là cách tôi làm điều đó - 794 00:47:31,210 --> 00:47:35,370 và tôi sẽ thiết lập các lỗi cho một số đối tượng. 795 00:47:35,370 --> 00:47:40,920 Và sau đó những gì tôi sẽ làm là nếu nó chạm ngoại lệ này, 796 00:47:40,920 --> 00:47:43,090 nó sẽ không để chuyển hướng, và nếu nó không chuyển hướng, 797 00:47:43,090 --> 00:47:46,160 nó sẽ đi ra khỏi nếu blog 798 00:47:46,160 --> 00:47:49,920 và nhấn blog này / mới, được muốn tôi muốn làm. 799 00:47:49,920 --> 00:47:53,190 Nếu có một lỗi, sau đó tôi muốn quay trở lại với hình thức 800 00:47:53,190 --> 00:47:55,100 và hiển thị những sai sót. 801 00:47:55,100 --> 00:48:00,780 Bây giờ những gì tôi muốn làm là tôi muốn vượt qua trong những lỗi 802 00:48:00,780 --> 00:48:07,010 để xem. 803 00:48:07,010 --> 00:48:10,360 Được rồi, tôi nghĩ rằng tôi có quan điểm ngay tại đây, 804 00:48:10,360 --> 00:48:14,660 và về cơ bản tôi muốn để hiển thị các lỗi nếu chúng tồn tại. 805 00:48:14,660 --> 00:48:19,740 Trước khi tôi viết HTML cho rằng, tôi sẽ thực sự nhanh chóng 806 00:48:19,740 --> 00:48:21,720 bạn thấy những gì cấu trúc của lỗi này trông biến thích, 807 00:48:21,720 --> 00:48:23,080 và điều này là một thực hành tốt nói chung. 808 00:48:23,080 --> 00:48:25,070 Rất nhiều lần bạn sẽ có được một cái gì đó trở lại từ một số phương pháp, 809 00:48:25,070 --> 00:48:27,250 một số chức năng trong khuôn khổ web, 810 00:48:27,250 --> 00:48:29,410 và bạn không biết những gì các biến như thế nào, 811 00:48:29,410 --> 00:48:31,210 do đó bạn không biết làm thế nào để làm việc với nó. 812 00:48:31,210 --> 00:48:37,790 Tôi sẽ sử dụng một phương pháp in r cơ bản in ra. 813 00:48:37,790 --> 00:48:41,100 >> Và như bạn thấy, nó nói với tôi nó là một mảng liên kết, 814 00:48:41,100 --> 00:48:44,880 và bạn có một chìa khóa, tác giả, điểm chuỗi này, 815 00:48:44,880 --> 00:48:47,050 tác giả không phải là trống rỗng, và quan trọng khác, cơ thể, 816 00:48:47,050 --> 00:48:49,680 điểm khác chuỗi, cơ thể không phải là sản phẩm nào. 817 00:48:49,680 --> 00:48:52,130 Tôi như, sao, mát mẻ. 818 00:48:52,130 --> 00:48:56,230 Sau đó, tôi có thể lặp qua mảng và in ra tất cả các tin nhắn đơn. 819 00:48:56,230 --> 00:49:02,150 Đó là cơ bản giống như một mảng kết hợp với một loạt các tin nhắn. 820 00:49:02,150 --> 00:49:13,500 Những gì tôi sẽ làm là "nếu lỗi" 821 00:49:13,500 --> 00:49:17,140 và tôi sẽ tạo ra một danh sách không có thứ tự, 822 00:49:17,140 --> 00:49:20,860 và tôi sẽ để lặp qua tất cả các lỗi. 823 00:49:33,730 --> 00:49:38,710 Và điều này, và bây giờ tôi sẽ cố gắng trình này một lần nữa, 824 00:49:38,710 --> 00:49:41,200 và chúng ta hãy xem những gì chúng tôi nhận được. 825 00:49:41,200 --> 00:49:45,370 Bây giờ chúng ta có được danh sách này tốt đẹp của lỗi, 826 00:49:45,370 --> 00:49:48,630 và điều này vẫn còn khá xấu xí, nhưng điều này rõ ràng có thể được định dạng để nhìn đẹp, 827 00:49:48,630 --> 00:49:51,620 nhưng ý tưởng cơ bản là chỉ trong một vài dòng mã, 828 00:49:51,620 --> 00:49:53,720 chúng tôi có thể xác nhận mô hình của chúng tôi, 829 00:49:53,720 --> 00:49:56,510 đảm bảo rằng các lĩnh vực nhất định là không có sản phẩm nào, 830 00:49:56,510 --> 00:49:59,740 và nếu một cái gì đó đã đi sai, sau đó trở lại một số loại thông báo lỗi 831 00:49:59,740 --> 00:50:01,760 Sau đó tôi có thể trình bày lại cho người sử dụng. 832 00:50:01,760 --> 00:50:03,910 Bạn cũng có thể tùy chỉnh xác nhận của bạn 833 00:50:03,910 --> 00:50:07,590 để bạn thực sự có thể có một thông báo lỗi 834 00:50:07,590 --> 00:50:09,620 đó là cụ thể hơn để ứng dụng của bạn hoặc một cái gì đó như thế. 835 00:50:09,620 --> 00:50:14,600 Tất cả những gì nói chung là tùy chỉnh. 836 00:50:14,600 --> 00:50:17,150 >> Thật không may, chúng tôi đang sắp hết thời gian, 837 00:50:17,150 --> 00:50:20,040 vì vậy tôi sẽ phải cắt đứt các phiên mã hóa trực tiếp ở đây. 838 00:50:20,040 --> 00:50:22,980 Có một loạt các tính năng khác mà tôi muốn chứng minh cho bạn 839 00:50:22,980 --> 00:50:25,650 trong ví dụ này. 840 00:50:25,650 --> 00:50:27,620 Ví dụ, bạn có thể thêm các mẫu để trang web của bạn, 841 00:50:27,620 --> 00:50:31,110 như vậy có lẽ có một số loại mã HTML mà bạn muốn áp dụng 842 00:50:31,110 --> 00:50:35,190 để mỗi trang duy nhất trong trang web của bạn, và thay vì dán mà 843 00:50:35,190 --> 00:50:40,630 trong mỗi tập tin hình duy nhất bạn có, mà rõ ràng sẽ là một thực tế xấu, 844 00:50:40,630 --> 00:50:43,020 về cơ bản bạn có thể xác định các mẫu này, 845 00:50:43,020 --> 00:50:46,660 và sau đó trong bộ điều khiển của bạn nói, "Được rồi, tôi đang sử dụng mẫu này." 846 00:50:46,660 --> 00:50:50,130 "Có tất cả các quan điểm của tôi sử dụng mẫu này." 847 00:50:50,130 --> 00:50:52,470 Và một điều cuối cùng tôi muốn chứng minh cho bạn là tốt 848 00:50:52,470 --> 00:50:57,800 rằng chúng ta không có thời gian cho là cross-site scripting, 849 00:50:57,800 --> 00:51:01,430 và về cơ bản tôi nghĩ các bạn có thể nhìn thấy trong CS50 - 850 00:51:01,430 --> 00:51:03,770 Tôi nghĩ rằng David Malan có thể nói chuyện về cách bạn thường có thể tiêm 851 00:51:03,770 --> 00:51:08,040 Mã JavaScript vào - có bạn nói về điều này? 852 00:51:08,040 --> 00:51:10,220 Có thể? Có thể không? 853 00:51:10,220 --> 00:51:12,670 >> Nhưng rất nhiều lần bạn có thể đưa mã JavaScript độc hại 854 00:51:12,670 --> 00:51:15,630 vào cơ sở dữ liệu của một ai đó, và nếu họ không thoát khỏi điều đó đúng, 855 00:51:15,630 --> 00:51:18,280 sau đó khi họ trình bày dữ liệu lại cho rằng người sử dụng, 856 00:51:18,280 --> 00:51:21,310 sau đó nó có thể chạy một số loại mã JavaScript ngẫu nhiên bạn không muốn xảy ra, 857 00:51:21,310 --> 00:51:23,050 và tôi sẽ chứng minh làm thế nào bạn muốn làm điều đó trong Kohana. 858 00:51:23,050 --> 00:51:25,380 Nó thực sự thực sự, thực sự dễ dàng. 859 00:51:25,380 --> 00:51:31,920 Tôi có thể làm điều đó ngay bây giờ trong 2 giây theo nghĩa đen. 860 00:51:31,920 --> 00:51:34,560 Tất cả bạn phải làm là về cơ bản bọc những điều này 861 00:51:34,560 --> 00:51:46,920 trong điều này được gọi là các thực thể HTML. 862 00:51:46,920 --> 00:51:51,180 Và điều đó sẽ tự động thoát khỏi tất cả các ký tự đúng 863 00:51:51,180 --> 00:51:54,730 và chắc chắn rằng bạn không nhận được vấn đề này. 864 00:51:54,730 --> 00:51:57,220 [Sinh viên] Bạn viết thử nghiệm đầu tiên không chính xác. 865 00:51:57,220 --> 00:52:01,030 [Brandon Liu] Oh, oops. 866 00:52:01,030 --> 00:52:06,420 >> Được rồi, đó là tất cả tôi đã chia sẻ với bạn ngày hôm nay. 867 00:52:06,420 --> 00:52:09,930 Các slide sẽ được đăng, nhưng đây là những thường 868 00:52:09,930 --> 00:52:13,900 các nguồn tài nguyên duy nhất mà bạn thực sự nên cần phải bắt đầu với Kohana. 869 00:52:13,900 --> 00:52:16,770 Bạn có thể vào trang web. Họ có một hướng dẫn sử dụng, và họ cũng có một nhà thám hiểm API. 870 00:52:16,770 --> 00:52:20,630 Chúng ta có thể khám phá tất cả các chức năng khác nhau và chức năng trợ giúp mà họ dành cho bạn. 871 00:52:20,630 --> 00:52:22,070 Họ thường có đầy đủ thông tin trên trang web 872 00:52:22,070 --> 00:52:25,310 mà bạn có thể sử dụng để bắt đầu và có được đi với Kohana. 873 00:52:25,310 --> 00:52:30,840 Hiện có không có nhiều hướng dẫn, tôi nghĩ rằng, cho Kohana, bên ngoài 874 00:52:30,840 --> 00:52:33,880 những gì họ có trên trang web ở đây, vì vậy điều này có lẽ là đặt cược tốt nhất của bạn. 875 00:52:33,880 --> 00:52:35,600 Nhưng nếu bạn muốn đi với khuôn khổ web 876 00:52:35,600 --> 00:52:37,120 và bạn không muốn phải nhận một ngôn ngữ mới, 877 00:52:37,120 --> 00:52:39,780 và bạn muốn cái gì đó là tương đối nhẹ và có một đường cong học tập dễ dàng, 878 00:52:39,780 --> 00:52:41,570 Tôi chắc chắn sẽ đề nghị Kohana. 879 00:52:41,570 --> 00:52:44,040 Đó có thể là cung cấp tốt nhất cho điều đó. 880 00:52:44,040 --> 00:52:46,830 Điều buồn cười, mặc dù, là nếu chúng ta đang sử dụng Ruby on Rails, 881 00:52:46,830 --> 00:52:48,550 chúng ta có thể nhân rộng những gì chúng ta chỉ cần làm 882 00:52:48,550 --> 00:52:51,430 và có lẽ trong dưới 3 phút. 883 00:52:51,430 --> 00:52:54,710 Không phải trò đùa, nhưng học Ruby on Rails mất lâu hơn rất nhiều 884 00:52:54,710 --> 00:52:56,780 hơn nó sẽ làm để tìm hiểu Kohana. 885 00:52:56,780 --> 00:52:58,840 Đó là cơ bản sự lựa chọn của bạn về những gì bạn muốn chọn để tìm hiểu, 886 00:52:58,840 --> 00:53:01,260 nhưng nếu bạn muốn nhận được và chạy một cách nhanh chóng, 887 00:53:01,260 --> 00:53:03,870 Kohana chắc chắn là một lựa chọn rất tốt. 888 00:53:03,870 --> 00:53:06,730 >> Bất kỳ câu hỏi cuối cùng trước khi chúng tôi kết thúc? Vâng. 889 00:53:06,730 --> 00:53:08,020 [Sinh viên] Làm thế nào chúng tôi sẽ tích hợp mà 890 00:53:08,020 --> 00:53:13,120 trong một khuôn khổ CSS như bạn đang sử dụng khi bạn đã được hướng dẫn? 891 00:53:13,120 --> 00:53:16,700 Câu hỏi đặt ra là làm thế nào chúng tôi sẽ tích hợp điều đó với một khuôn khổ CSS? 892 00:53:16,700 --> 00:53:18,740 Những gì chúng ta có lẽ sẽ làm là chúng ta có thể sẽ bao gồm 893 00:53:18,740 --> 00:53:21,090 một thư mục mới, nơi chúng tôi sẽ đổ tất cả các tập tin CSS của chúng tôi, 894 00:53:21,090 --> 00:53:23,010 và sau đó chúng tôi cũng muốn thêm một mẫu mới. 895 00:53:23,010 --> 00:53:26,090 Trong các mẫu chúng tôi bao gồm các tập tin CSS 896 00:53:26,090 --> 00:53:28,410 để đảm bảo rằng họ đang được giới thiệu trên mỗi trang duy nhất, 897 00:53:28,410 --> 00:53:32,220 và sau đó khi bạn thực sự đang viết HTML, 898 00:53:32,220 --> 00:53:34,010 bạn chỉ cần thêm các lớp học và những thứ linh tinh thích hợp, 899 00:53:34,010 --> 00:53:36,100 và ví dụ, khi bạn đang sử dụng một cái gì đó giống như hình thức 900 00:53:36,100 --> 00:53:40,710 chức năng trợ giúp, bạn có thể thêm các thông số hơn sau đó 901 00:53:40,710 --> 00:53:42,830 để xác định những gì các lớp học bạn muốn được gắn liền với những điều khác nhau 902 00:53:42,830 --> 00:53:47,820 để họ có thể phong cách nó đúng, và đó là cơ bản làm thế nào bạn sẽ đi. 903 00:53:47,820 --> 00:53:50,100 >> Bất kỳ câu hỏi khác? 904 00:53:50,100 --> 00:53:52,090 Tuyệt vời. 905 00:53:52,090 --> 00:53:58,540 Cảm ơn bạn đã dành thời gian của bạn, và cảm ơn các bạn đã đến. 906 00:53:58,540 --> 00:54:05,170 Tôi sẽ không để thêm rất nhiều người khác, 907 00:54:05,170 --> 00:54:08,560 nhưng 1 điều thực sự nhanh chóng là chúng ta không có một liên kết 908 00:54:08,560 --> 00:54:12,590 mẫu. 909 00:54:12,590 --> 00:54:14,310 Thực sự câm. 910 00:54:14,310 --> 00:54:20,110 Chúng ta hãy thêm một - thực sự trong quan điểm, blog, chỉ số, 911 00:54:20,110 --> 00:54:23,890 chúng ta hãy thực sự nhanh chóng thêm một liên kết mà đi đến trang mới, 912 00:54:23,890 --> 00:54:26,770 trang mà chúng ta có thể chèn một bài mới. 913 00:54:26,770 --> 00:54:29,950 Chúng ta sẽ làm điều này. 914 00:54:29,950 --> 00:54:34,020 Những gì tốt đẹp là có nhóm này toàn bộ các chức năng trợ giúp HTML 915 00:54:34,020 --> 00:54:37,090 mà làm những việc khác nhau cho bạn, vì vậy bạn đã thấy các thực thể 916 00:54:37,090 --> 00:54:41,980 hoạt động ở đây, nhưng họ cũng có một chức năng được gọi là "neo" 917 00:54:41,980 --> 00:54:45,400 mà bạn có thể gõ vào blog / mới 918 00:54:45,400 --> 00:54:49,550 và nói, "Đăng một blog mới." 919 00:54:49,550 --> 00:54:51,850 Và nó sẽ tạo ra rằng liên kết cho bạn, 920 00:54:51,850 --> 00:54:54,120 và điều này dường như thực sự tầm thường để làm, nhưng điều này là tốt đẹp, 921 00:54:54,120 --> 00:54:58,720 vì giả sử rằng bạn đang di chuyển trang web của bạn từ 1 tên miền khác. 922 00:54:58,720 --> 00:55:01,390 Và nếu bạn chỉ cần viết ra các URL chính mình, 923 00:55:01,390 --> 00:55:04,350 sau đó bạn sẽ phải thay đổi tất cả các URL. 924 00:55:04,350 --> 00:55:06,850 Hoặc có thể bạn di chuyển nó từ 1 thư mục con để thư mục con khác. 925 00:55:06,850 --> 00:55:08,790 Bạn sẽ phải thay đổi tất cả các URL chính mình, 926 00:55:08,790 --> 00:55:12,180 và đó là không có niềm vui. 927 00:55:12,180 --> 00:55:14,510 Bạn có thể sử dụng neo này ngay tại đây, 928 00:55:14,510 --> 00:55:18,950 và bạn có thể thay đổi tên miền hoặc tiền tố thư mục con 929 00:55:18,950 --> 00:55:20,640 trong file cấu hình một lần, 930 00:55:20,640 --> 00:55:22,980 và sau đó nó sẽ được áp dụng ở khắp mọi nơi, và điều này là, một lần nữa, 931 00:55:22,980 --> 00:55:26,930 một ví dụ tuyệt vời của không lặp lại chính mình, làm khô mã của bạn ra. 932 00:55:26,930 --> 00:55:30,370 Bất cứ nơi nào bạn đang lặp lại chính mình, cố gắng và trích xuất trong một số loại tập tin cấu hình 933 00:55:30,370 --> 00:55:34,160 hoặc đến một chức năng khác nhau và có nó xử lý đó cho bạn. 934 00:55:34,160 --> 00:55:42,930 >> Và điều cuối cùng mà tôi muốn cho các bạn là 935 00:55:42,930 --> 00:55:50,250 giả sử chúng ta đang trở lại tại bài viết này, và tôi đã sáng tác một số bài luận thực sự lâu dài, 936 00:55:50,250 --> 00:55:52,670 nhưng tôi quên bao gồm tác giả của tôi. 937 00:55:52,670 --> 00:55:55,210 Bây giờ khi tôi nhấp vào "Gửi bài viết" 938 00:55:55,210 --> 00:55:57,270 Tôi chỉ mất tất cả mọi thứ. 939 00:55:57,270 --> 00:56:00,000 Không! Thực sự buồn. 940 00:56:00,000 --> 00:56:03,870 Vậy làm thế nào để bạn đối phó với điều đó? 941 00:56:03,870 --> 00:56:06,070 Đây là những gì chúng tôi làm. 942 00:56:06,070 --> 00:56:09,340 Những gì chúng tôi làm là ở đây cho các chức năng đầu vào và vùng văn bản, 943 00:56:09,340 --> 00:56:12,700 nếu chúng ta bao gồm một tham số thứ hai, thì giá trị của tham số thứ hai là 944 00:56:12,700 --> 00:56:16,620 là có được những gì lĩnh vực này sẽ được ban đầu dân cư với. 945 00:56:16,620 --> 00:56:23,570 Những gì chúng ta có thể làm là trong điều khiển blog của chúng tôi, 946 00:56:23,570 --> 00:56:25,360 chúng ta có thể ràng buộc một biến khác. 947 00:56:25,360 --> 00:56:27,050 Gọi nó là "giá trị" có thể. 948 00:56:27,050 --> 00:56:30,620 Và vượt qua trong mảng bài, theo nghĩa đen. 949 00:56:30,620 --> 00:56:32,620 Điều đó có nghĩa rằng nếu xác nhận không thành, 950 00:56:32,620 --> 00:56:36,570 vượt qua để tôi viết mảng mà tôi gửi từ yêu cầu cuối cùng, 951 00:56:36,570 --> 00:56:38,420 và cách mà tôi có thể sử dụng các giá trị từ trình cuối cùng của tôi 952 00:56:38,420 --> 00:56:44,540 để phục hồi lại các lĩnh vực. 953 00:56:44,540 --> 00:56:49,600 Bây giờ tôi có thể làm một cái gì đó như giá trị tác giả 954 00:56:49,600 --> 00:56:55,180 và các giá trị cơ thể, và cách mà bây giờ nếu tôi làm một số công cụ ngẫu nhiên 955 00:56:55,180 --> 00:57:01,490 và nhấn "Gửi bài viết", sau đó nó vẫn ở đó. 956 00:57:01,490 --> 00:57:03,830 Nhưng chúng ta sẽ chạy vào một vấn đề khác. 957 00:57:03,830 --> 00:57:07,670 Điều đó làm việc, nhưng nếu tôi đi đến trang lần đầu tiên, 958 00:57:07,670 --> 00:57:09,720 nó sẽ sụp đổ, và đó là bởi vì lần đầu tiên 959 00:57:09,720 --> 00:57:13,730 chúng tôi đi đến trang, biến bài viết này chưa được xác định được nêu ra. 960 00:57:13,730 --> 00:57:18,170 Nó là vô giá trị. Nó không tồn tại. 961 00:57:18,170 --> 00:57:21,630 >> Và những gì chúng tôi muốn nói là nếu phím này tồn tại, 962 00:57:21,630 --> 00:57:27,750 sau đó trả về giá trị của mảng này, 963 00:57:27,750 --> 00:57:30,450 nhưng nếu phím không tồn tại, sau đó trả về một chuỗi trống. 964 00:57:30,450 --> 00:57:32,150 Đó là chức năng chúng tôi muốn ở đây. 965 00:57:32,150 --> 00:57:34,690 Chúng tôi muốn kiểm tra xem phím tồn tại trước khi cố gắng truy cập mảng, 966 00:57:34,690 --> 00:57:36,580 và may mắn thay đủ, 967 00:57:36,580 --> 00:57:38,570 Kohana cũng cho chúng ta một chức năng trợ giúp cho điều đó. 968 00:57:38,570 --> 00:57:41,040 Họ có toàn bộ phần mềm này các chức năng 969 00:57:41,040 --> 00:57:43,660 dưới tên ARR, viết tắt của mảng, 970 00:57:43,660 --> 00:57:45,800 và họ có 1 chức năng được gọi là "có" 971 00:57:45,800 --> 00:57:48,690 và bạn có thể vượt qua trong mảng, 972 00:57:48,690 --> 00:57:50,740 và bạn có thể vượt qua trong tên của khóa. 973 00:57:50,740 --> 00:57:54,330 Sau đó, về cơ bản những gì nó sẽ làm là nó sẽ cố gắng để có được chìa khóa, 974 00:57:54,330 --> 00:57:56,470 nhưng quan trọng đó không tồn tại trong mảng, 975 00:57:56,470 --> 00:58:00,900 sau đó nó sẽ trở lại để trống, hoặc chúng ta cũng có thể chỉ định một mặc định, tôi tin rằng, 976 00:58:00,900 --> 00:58:03,500 đó là tốt đẹp. 977 00:58:09,740 --> 00:58:13,150 Bây giờ nếu chúng ta làm điều tương tự một lần nữa, 978 00:58:13,150 --> 00:58:15,970 sau đó bạn nhìn thấy bây giờ nó hoạt động lần đầu tiên, 979 00:58:15,970 --> 00:58:18,080 và một lần nữa, nếu chúng ta gõ vào một số công cụ ngẫu nhiên 980 00:58:18,080 --> 00:58:23,210 và cố gắng gửi, sau đó nó vẫn ở đó. 981 00:58:23,210 --> 00:58:31,640 >> Và tôi đoán tôi cũng có thể chỉ cho bạn cách để thêm một mẫu thực sự nhanh chóng. 982 00:58:31,640 --> 00:58:36,140 Những gì chúng ta có thể làm đầu tiên là chúng ta có thể thêm một cái nhìn mới gọi là "template.php" 983 00:58:36,140 --> 00:58:38,890 trong thư mục Views, 984 00:58:38,890 --> 00:58:44,730 và những gì tôi sẽ làm là tôi sẽ in ra một cái gì đó gọi là "nội dung" 985 00:58:44,730 --> 00:58:49,130 mà là có được nội dung chính của tôi. 986 00:58:49,130 --> 00:58:51,380 Và có thể ở rất dưới cùng tôi sẽ thêm, nói, 987 00:58:51,380 --> 00:58:53,340 bản quyền. 988 00:58:53,340 --> 00:58:56,150 [Câu hỏi sinh viên không nghe được] 989 00:58:56,150 --> 00:58:58,050 [Brandon Liu] Có lẽ đây là một mẫu siêu cơ bản tôi muốn sử dụng. 990 00:58:58,050 --> 00:59:02,840 Tôi muốn có một thư mục với quyền tác giả của tôi trên mỗi trang duy nhất, 991 00:59:02,840 --> 00:59:05,560 và bây giờ những gì tôi sẽ làm trong điều khiển của tôi 992 00:59:05,560 --> 00:59:07,740 bây giờ là thay vì nói, "mở rộng điều khiển" 993 00:59:07,740 --> 00:59:11,870 Tôi sẽ nói, "mở rộng Controller_Template" 994 00:59:11,870 --> 00:59:15,890 và bây giờ thay vì nói, "cơ thể phản ứng bằng quan điểm này," 995 00:59:15,890 --> 00:59:24,110 Tôi sẽ nói, "nội dung mẫu này là -" 996 00:59:24,110 --> 00:59:27,690 và tôi nghĩ rằng - để tôi đặt một dấu bằng? 997 00:59:27,690 --> 00:59:32,710 Tôi quên. Vâng, tôi nghĩ vậy. 998 00:59:32,710 --> 00:59:37,710 Và bây giờ tôi thiết rằng biến nội dung tương đương với xem. 999 00:59:37,710 --> 00:59:40,960 Tôi có thể làm như vậy ở đây. 1000 00:59:49,620 --> 00:59:57,170 Và bây giờ nếu tôi làm mới, bạn có thể nhìn thấy bây giờ bản quyền này được thêm vào đó, 1001 00:59:57,170 --> 01:00:00,350 và chỉ cần thực hiện một số bài ngẫu nhiên, 1002 01:00:00,350 --> 01:00:06,760 và sau đó, một lần nữa, bạn sẽ thấy rằng bản quyền là ở dưới cùng của trang. 1003 01:00:06,760 --> 01:00:10,730 >> Đại. Đó là tất cả tôi muốn cho các bạn thấy. 1004 01:00:10,730 --> 01:00:14,970 [Vỗ tay] 1005 01:00:14,970 --> 01:00:18,950 Bất kỳ câu hỏi? 1006 01:00:18,950 --> 01:00:21,000 [CS50.TV]