1 00:00:00,000 --> 00:00:03,920 >> [MUSIC CHƠI] 2 00:00:03,920 --> 00:00:11,760 3 00:00:11,760 --> 00:00:13,800 >> DAVID J. Malan: Tất cả đúng. 4 00:00:13,800 --> 00:00:15,640 Đây là CS50. 5 00:00:15,640 --> 00:00:17,620 Đây là khởi đầu của tuần tám. 6 00:00:17,620 --> 00:00:22,440 Và bạn có thể nhớ lại rằng chúng tôi rời đi Lần cuối cùng nhìn vào một ngôn ngữ mới 7 00:00:22,440 --> 00:00:23,240 hoàn toàn. 8 00:00:23,240 --> 00:00:25,905 Trong thực tế, một trong đó là khá trọng lượng nhẹ và nó thậm chí không 9 00:00:25,905 --> 00:00:26,940 một ngôn ngữ lập trình. 10 00:00:26,940 --> 00:00:31,100 Đó là một ngôn ngữ đánh dấu cho phép chúng tôi thực sự cấu trúc và làm cho các trang web. 11 00:00:31,100 --> 00:00:33,350 Và khi bạn cái gì khác kết hợp với this-- 12 00:00:33,350 --> 00:00:35,670 hoặc bạn sẽ sớm biết, nếu bạn chưa có. 13 00:00:35,670 --> 00:00:38,530 Chúng ta sẽ sử dụng Cascading Style Sheets, hoặc CSS, mà 14 00:00:38,530 --> 00:00:40,971 là một loại ngôn ngữ với tính chất và giá trị 15 00:00:40,971 --> 00:00:43,220 đó là sẽ để cho chúng tôi làm điều muốn thay đổi màu sắc 16 00:00:43,220 --> 00:00:46,010 và thay đổi vị trí và các loại điều chỉnh. 17 00:00:46,010 --> 00:00:49,940 Nhưng hôm nay trở đi, chúng ta bắt đầu tập trung vào ngôn ngữ mạnh hơn, 18 00:00:49,940 --> 00:00:52,810 ngôn ngữ lập trình thực tế như PHP. 19 00:00:52,810 --> 00:00:54,880 >> Vì vậy, PHP đã được khoảng một thời gian. 20 00:00:54,880 --> 00:00:56,810 Và như bạn sẽ thấy, nó được thiết kế chủ yếu 21 00:00:56,810 --> 00:01:00,280 sớm cho thực tế sử dụng trong phát triển web 22 00:01:00,280 --> 00:01:02,360 và thực sự tạo ra các trang web. 23 00:01:02,360 --> 00:01:04,849 Vì vậy, những gì các loại tính năng không một ngôn ngữ 24 00:01:04,849 --> 00:01:10,040 cần để làm web các trang tự động với nó? 25 00:01:10,040 --> 00:01:14,760 >> Nói cách khác, nếu bạn muốn tạo ra nội dung dynamically-- như Facebook 26 00:01:14,760 --> 00:01:19,480 Newsfeed, mà thay đổi liên tục, hoặc tin nhắn tức thời mà bật lên từ thời gian 27 00:01:19,480 --> 00:01:21,872 để time-- giống như những gì là phần quan trọng của chức năng 28 00:01:21,872 --> 00:01:24,580 bạn cần trong một ngôn ngữ lập trình mà sẽ cho phép bạn tự động 29 00:01:24,580 --> 00:01:28,070 in thông tin mới vào màn hình? 30 00:01:28,070 --> 00:01:28,685 >> HỌC SINH: Mã. 31 00:01:28,685 --> 00:01:29,560 DAVID J. Malan: Mã. 32 00:01:29,560 --> 00:01:30,440 OK. 33 00:01:30,440 --> 00:01:31,995 Chúng tôi sẽ lấy nó. 34 00:01:31,995 --> 00:01:35,310 Một chút chính xác. 35 00:01:35,310 --> 00:01:37,639 Ý tôi là, chúng ta có thể làm này với C, thẳng thắn. 36 00:01:37,639 --> 00:01:38,930 Nó sẽ là một cơn đau ở cổ. 37 00:01:38,930 --> 00:01:41,045 But-- cam kết này là? 38 00:01:41,045 --> 00:01:41,895 >> HỌC SINH: Yeah. 39 00:01:41,895 --> 00:01:42,677 Biến, có lẽ? 40 00:01:42,677 --> 00:01:43,760 DAVID J. Malan: Biến. 41 00:01:43,760 --> 00:01:44,160 OK, chắc chắn. 42 00:01:44,160 --> 00:01:45,740 Biến chắc chắn có thể giúp chúng tôi ra. 43 00:01:45,740 --> 00:01:47,020 Và ngay cả một cái gì đó đơn giản hơn. 44 00:01:47,020 --> 00:01:50,640 Chúng tôi sử dụng nó trong rất đầu tiên chương trình của ngày đầu tiên 45 00:01:50,640 --> 00:01:55,686 khi chúng ta thực sự nói "hello world". 46 00:01:55,686 --> 00:01:56,570 >> HỌC SINH: Print. 47 00:01:56,570 --> 00:01:57,778 >> DAVID J. Malan: In, phải không? 48 00:01:57,778 --> 00:02:01,050 Print, hoặc printf trong thế giới của C. Vì vậy, tất cả các thời gian này, 49 00:02:01,050 --> 00:02:03,362 chúng tôi đã có tại của chúng tôi xử lý một language-- C, 50 00:02:03,362 --> 00:02:05,570 trong particular-- và thậm chí Scratch cho rằng vấn đề đó 51 00:02:05,570 --> 00:02:07,400 có thể tạo ra chuỗi văn bản. 52 00:02:07,400 --> 00:02:11,090 >> Vâng, nếu HTML, như chúng ta đã thấy tuần trước, là chỉ là một bó toàn bộ các chuỗi văn bản 53 00:02:11,090 --> 00:02:14,692 mặc dù có dấu ngoặc mở và đóng cửa ngoặc và một số loại vần 54 00:02:14,692 --> 00:02:16,650 và lý do đằng sau nó, cũng sau đó chúng ta có thể thực sự 55 00:02:16,650 --> 00:02:20,440 bắt đầu tạo ra các trang web hoặc thủ công bằng cách gõ chúng ra trong gedit 56 00:02:20,440 --> 00:02:23,870 hoặc trong Microsoft Word, cho rằng matter-- chúng ta chỉ cần một trình soạn thảo văn bản. 57 00:02:23,870 --> 00:02:26,830 >> Hoặc chúng ta có thể viết mã, để gợi ý của bạn 58 00:02:26,830 --> 00:02:30,435 trước đó, mà có thể cho chúng tôi tự động tạo ra HTML, 59 00:02:30,435 --> 00:02:32,560 và đó là những gì chúng ta sẽ để bắt đầu làm việc với PHP 60 00:02:32,560 --> 00:02:34,900 và cuối cùng thậm chí với một ngôn ngữ được gọi là JavaScript, 61 00:02:34,900 --> 00:02:37,910 là sử dụng một ngôn ngữ để tạo ra khác. 62 00:02:37,910 --> 00:02:40,720 Và quả thực, đây là những gì Facebook và nhiều, rất nhiều các trang web khác 63 00:02:40,720 --> 00:02:44,530 làm gì để thực sự tự động hiển thị thông tin mới cho bạn. 64 00:02:44,530 --> 00:02:47,117 >> Vì vậy, hãy bắt đầu với một this-- khó hiểu nhìn dòng, nhưng một 65 00:02:47,117 --> 00:02:48,450 đó là thực sự khá mạnh mẽ. 66 00:02:48,450 --> 00:02:51,210 Như vậy đến nay, chúng tôi đã sử dụng C, mà là một ngôn ngữ biên dịch. 67 00:02:51,210 --> 00:02:55,050 Và chỉ một recap-- nhanh chóng một biên soạn ngôn ngữ có những gì đặc trưng? 68 00:02:55,050 --> 00:02:59,050 Bạn rõ ràng là cần phải biên dịch nó, nhưng điều đó không có nghĩa là gì? 69 00:02:59,050 --> 00:03:00,505 Yeah? 70 00:03:00,505 --> 00:03:02,940 >> HỌC SINH: Nó cần phải được lắp ráp thành mã máy. 71 00:03:02,940 --> 00:03:03,060 >> DAVID J. Malan: OK. 72 00:03:03,060 --> 00:03:04,530 Nó cần phải được lắp ráp thành mã máy. 73 00:03:04,530 --> 00:03:07,340 Vì vậy, bạn lấy mã nguồn của bạn, đó là loại tiếng Anh như thế nào. 74 00:03:07,340 --> 00:03:09,270 Bạn chuyển đổi đó để cấp một cái gì đó thấp hơn, 75 00:03:09,270 --> 00:03:11,590 được gọi là cuối cùng đối tượng code-- 0 và 1. 76 00:03:11,590 --> 00:03:14,830 Và đó là những người của 0 và 1 của mà một CPU, giống như những người thực hiện bởi Intel, 77 00:03:14,830 --> 00:03:16,110 thực sự hiểu. 78 00:03:16,110 --> 00:03:19,690 >> Bây giờ, PHP và Python và Ruby và JavaScript và chùm khác 79 00:03:19,690 --> 00:03:23,190 ngôn ngữ không được biên dịch ngôn ngữ nhưng giải thích ngôn ngữ, 80 00:03:23,190 --> 00:03:26,630 có nghĩa là bạn chỉ cần gõ họ và sau đó bạn không biến chúng thành 0 và 1. 81 00:03:26,630 --> 00:03:30,790 Thay vào đó bạn chỉ cần cung cấp sau đó là đầu vào cho chương trình của người khác, 82 00:03:30,790 --> 00:03:32,080 được gọi là một thông dịch viên. 83 00:03:32,080 --> 00:03:34,460 Và của người đó chương trình đã được thiết kế 84 00:03:34,460 --> 00:03:38,280 để hiểu những gì mỗi và tất cả các biểu tượng trong Python hay PHP 85 00:03:38,280 --> 00:03:42,650 hay Ruby hoặc bất kỳ số lượng các ngôn ngữ khác có nghĩa. 86 00:03:42,650 --> 00:03:44,760 >> Và vì vậy tất cả chúng ta cần là một cái gì đó như thế này. 87 00:03:44,760 --> 00:03:46,350 Vì vậy, trong thực tế, tôi sẽ đi qua để thiết bị 88 00:03:46,350 --> 00:03:48,100 ở đây, chỉ cần vào bất kỳ cửa sổ cũ, và chúng tôi 89 00:03:48,100 --> 00:03:52,580 sẽ đi trước và mở một tập tin tên, nói, xin chào. 90 00:03:52,580 --> 00:03:55,780 Bây giờ trước đây, tôi có thể đã lưu này thậm chí có phần mở rộng tập tin, 91 00:03:55,780 --> 00:03:57,910 nhưng tôi sẽ làm một cái gì đó thậm chí còn đơn giản ở đây. 92 00:03:57,910 --> 00:04:02,450 Tôi sẽ đi trước và bắt đầu tập tin này với cú pháp khó hiểu này. 93 00:04:02,450 --> 00:04:06,310 Vì vậy, người sử dụng ", bin, env, cho môi trường, php. " 94 00:04:06,310 --> 00:04:10,670 >> Điều này chỉ đơn giản là một dòng mã đó là sẽ nói cho hệ điều hành của tôi, 95 00:04:10,670 --> 00:04:13,730 đi tìm ở địa phương của bạn môi trường bất cứ điều gì có nghĩa là, 96 00:04:13,730 --> 00:04:18,149 bất cứ nơi nào PHP is-- các interpreter-- và đi trước và sử dụng thông dịch 97 00:04:18,149 --> 00:04:20,589 để giải thích các mã sau đây. 98 00:04:20,589 --> 00:04:22,760 Bây giờ, đây là loại một tính năng xấu xí của PHP. 99 00:04:22,760 --> 00:04:24,980 Nhưng trong ngôn ngữ này, bất kỳ thời gian bạn viết mã PHP, 100 00:04:24,980 --> 00:04:29,200 bạn cần phải có một trong những xấu xí Thẻ PHP phân định ranh giới đầu 101 00:04:29,200 --> 00:04:32,220 của bạn code-- 00:04:37,430 >> Nhưng dưới đây, bây giờ tôi có thể làm điều gì đó khá đơn giản, giống như printf chào dấu phẩy 103 00:04:37,430 --> 00:04:40,922 thế giới dấu gạch chéo ngược n gần quote, ngoặc gần. 104 00:04:40,922 --> 00:04:42,630 Và sau đó chỉ cần cho tốt biện pháp, tôi sẽ 105 00:04:42,630 --> 00:04:45,380 đi trước và gần tag php của tôi ở đây 106 00:04:45,380 --> 00:04:47,390 để tất cả mọi thứ nhìn độc đáo khá in. 107 00:04:47,390 --> 00:04:50,780 >> Và ngay sau khi tôi nhấp vào Lưu, gedit là đủ thực sự thông minh 108 00:04:50,780 --> 00:04:54,620 nhìn vào dòng đầu tiên và nhận ra, oh, bạn viết mã PHP. 109 00:04:54,620 --> 00:04:56,710 Hãy để tôi làm nổi bật cú pháp nó với các màu sắc 110 00:04:56,710 --> 00:04:58,690 ở đây để nó đứng ra nhiều hơn một chút. 111 00:04:58,690 --> 00:05:01,300 Nhưng bây giờ tôi sẽ đi xuống cửa sổ thiết bị đầu cuối của tôi. 112 00:05:01,300 --> 00:05:02,340 Tôi sẽ phóng to. 113 00:05:02,340 --> 00:05:06,860 >> Chương trình này được gọi là "xin chào", vì vậy tôi sẽ làm chấm dấu gạch chéo hello, 114 00:05:06,860 --> 00:05:07,990 nhưng cho phép từ chối. 115 00:05:07,990 --> 00:05:08,490 Và bash. 116 00:05:08,490 --> 00:05:10,610 Chúng tôi thực sự nghe nói rằng điều một vài tuần trước 117 00:05:10,610 --> 00:05:13,140 trong bối cảnh Shellshock, một trong những lỗi. 118 00:05:13,140 --> 00:05:16,240 >> Nhưng sự cho phép phủ nhận chúng tôi đã nhìn thấy trước, có lẽ trong một bối cảnh khác nhau. 119 00:05:16,240 --> 00:05:19,060 Có ai nhớ lại cách bạn có thể sửa chữa một cái gì đó 120 00:05:19,060 --> 00:05:22,100 nơi cho phép bị từ chối như thế này? 121 00:05:22,100 --> 00:05:23,490 Lệnh là gì, ít nhất? 122 00:05:23,490 --> 00:05:24,159 >> HỌC SINH: Chmod. 123 00:05:24,159 --> 00:05:26,700 DAVID J. Malan: Yeah, chmod, để thay đổi chế độ của một tập tin. 124 00:05:26,700 --> 00:05:30,171 Và bạn sẽ nhận được tất cả các chi tiết được sử dụng để tuần tới này với một vấn đề tiếp theo 125 00:05:30,171 --> 00:05:30,670 thiết lập. 126 00:05:30,670 --> 00:05:33,211 Nhưng bây giờ, tôi sẽ thay đổi chế độ không phải là có thể đọc được, 127 00:05:33,211 --> 00:05:36,650 nhưng để cho tất cả mọi người executeability đặc quyền, khả năng 128 00:05:36,650 --> 00:05:37,710 để chạy tập tin này. 129 00:05:37,710 --> 00:05:40,360 Và tôi sẽ giao đó đến tập tin hello. 130 00:05:40,360 --> 00:05:45,150 >> Nếu bây giờ tôi làm dấu chấm dấu gạch chéo chào nhập, bạn thấy, trên thực tế, chương trình của tôi, xin chào thế giới. 131 00:05:45,150 --> 00:05:48,760 Và những gì đã làm tôi bước bỏ qua rõ ràng hoàn toàn? 132 00:05:48,760 --> 00:05:49,520 Biên dịch. 133 00:05:49,520 --> 00:05:51,680 Vì vậy, tôi chỉ cần chạy chương trình này khá đơn giản. 134 00:05:51,680 --> 00:05:55,690 >> Và nó quay ra bạn có thể làm điều này với rất nhiều cú pháp gợi nhớ của C. 135 00:05:55,690 --> 00:06:03,400 Hãy để tôi đi vào hôm nay mã nguồn, mà tôi đưa vào thư mục vhost của tôi 136 00:06:03,400 --> 00:06:05,250 ở đây, vì lý do thực chúng tôi sẽ quay trở lại. 137 00:06:05,250 --> 00:06:09,350 Và tôi sẽ đi vào, hãy nói, điều kiện 1. 138 00:06:09,350 --> 00:06:12,450 >> Và bạn sẽ thấy ở đây, lần đầu tiên và trước hết, một bó toàn bộ các ý kiến. 139 00:06:12,450 --> 00:06:15,240 Nhưng điều này là thực sự một tái tạo trong PHP 140 00:06:15,240 --> 00:06:18,960 của một chương trình, chúng tôi đã làm trong tuần một điều kiện được gọi là 1.c 141 00:06:18,960 --> 00:06:20,690 mà mục đích trong cuộc sống của chương trình này 142 00:06:20,690 --> 00:06:22,950 rõ ràng là yêu cầu người sử dụng cho một số nguyên 143 00:06:22,950 --> 00:06:25,270 và sau đó làm một số bông phân tích về nó đó 144 00:06:25,270 --> 00:06:29,510 bạn nói nếu đó là tích cực hay tiêu cực hoặc bằng số không. 145 00:06:29,510 --> 00:06:34,220 Và tôi mang lại điều này chỉ bởi vì, ngoại trừ có lẽ một chi tiết nhỏ, 146 00:06:34,220 --> 00:06:37,150 nó không thể phân biệt rất xa C. 147 00:06:37,150 --> 00:06:39,930 >> Một trong những đặc điểm gì ở đây là có thể nhảy ra ngoài 148 00:06:39,930 --> 00:06:41,410 lúc bạn là một chút khác nhau? 149 00:06:41,410 --> 00:06:42,160 Có lẽ hai điều. 150 00:06:42,160 --> 00:06:42,660 Yeah? 151 00:06:42,660 --> 00:06:44,070 >> HỌC SINH: Dollar dấu hiệu n? 152 00:06:44,070 --> 00:06:44,944 >> DAVID J. Malan: Yeah. 153 00:06:44,944 --> 00:06:46,210 Vì vậy, ký hiệu đô la n là hiện tại. 154 00:06:46,210 --> 00:06:48,120 Và dấu hiệu đồng đô la, như chúng ta sẽ thấy, sẽ 155 00:06:48,120 --> 00:06:51,460 là một sửa chữa để đầu của bất kỳ biến trong PHP. 156 00:06:51,460 --> 00:06:54,250 Đó là cả tốt và tốt trong bad-- rằng đó là loại rõ ràng những gì 157 00:06:54,250 --> 00:06:56,797 một biến, xấu ở chỗ nó nhưng một điều cần gõ. 158 00:06:56,797 --> 00:06:58,630 Và có một khác điều chúng tôi đã không khá 159 00:06:58,630 --> 00:07:00,876 nhìn thấy, ít nhất bởi chính tả này. yeah? 160 00:07:00,876 --> 00:07:01,630 >> HỌC SINH: Readline. 161 00:07:01,630 --> 00:07:02,671 >> DAVID J. Malan: Readline. 162 00:07:02,671 --> 00:07:06,550 Readline chúng ta không nhìn thấy, mỗi gia nhập, trong C, mặc dù có tồn tại một cái gì đó 163 00:07:06,550 --> 00:07:09,530 tương tự, nhưng chúng tôi đã sử dụng getString, và đây là đối tác của mình. 164 00:07:09,530 --> 00:07:12,950 Vì vậy, nếu tôi đi vào này thư mục, đó sẽ xảy ra, 165 00:07:12,950 --> 00:07:18,030 như tôi sẽ giải thích một chút trong vhost của tôi thư mục và mã nguồn của tôi Một thư mục, 166 00:07:18,030 --> 00:07:22,730 và tôi đi trước và làm dấu chấm dấu gạch chéo conditions-- whoops-- dấu chấm dấu gạch chéo 167 00:07:22,730 --> 00:07:26,710 điều kiện 1, bạn sẽ thấy, một lần nữa, sự cho phép issue-- cùng bị từ chối. 168 00:07:26,710 --> 00:07:33,610 >> Vì vậy, hãy để tôi phóng to và làm chmod một cộng x về điều kiện, điều kiện dấu gạch chéo dấu chấm. 169 00:07:33,610 --> 00:07:35,222 Tôi muốn một số nguyên, xin vui lòng, 50. 170 00:07:35,222 --> 00:07:36,930 Và chúng tôi có thể chơi này trò chơi cả ngày dài. 171 00:07:36,930 --> 00:07:39,140 Nó sẽ cư xử chính xác như nó đã làm trong tuần một. 172 00:07:39,140 --> 00:07:42,860 >> OK như vậy không phải tất cả những gì khác nhau, ngoại trừ không chỉ là chút nhẹ của cú pháp, 173 00:07:42,860 --> 00:07:45,490 nhưng ở phía trên, tôi một lần nữa có dòng này mà 174 00:07:45,490 --> 00:07:49,760 cho phép tôi để tạo ra một cái gì đó trông giống như một chương trình C được gọi là hello, 175 00:07:49,760 --> 00:07:51,150 được gọi là các điều kiện 1. 176 00:07:51,150 --> 00:07:54,520 Nhưng nó không phải là 0 và những người thân Tôi đang thực hiện trực tiếp. 177 00:07:54,520 --> 00:07:57,620 Đó là thay vì chạy này thông dịch viên có tên 178 00:07:57,620 --> 00:07:59,440 sẽ xảy ra là giống với ngôn ngữ. 179 00:07:59,440 --> 00:08:04,970 Chương trình này được gọi là PHP, và mã của tôi bên dưới một dòng đang được thông qua vào nó. 180 00:08:04,970 --> 00:08:07,740 >> Chúng tôi có thể làm khác khá đơn giản Ví dụ gợi nhớ đến một cái gì đó 181 00:08:07,740 --> 00:08:09,240 chúng tôi đã làm tuần trước. 182 00:08:09,240 --> 00:08:12,020 Một lần nữa, đây là một loại đoạn mã tùy ý 183 00:08:12,020 --> 00:08:14,000 mà dường như không những gì khi bạn chạy nó? 184 00:08:14,000 --> 00:08:15,625 Có gì này sẽ in, có lẽ? 185 00:08:15,625 --> 00:08:23,540 186 00:08:23,540 --> 00:08:28,250 >> Vì vậy, ban đầu trên đường 16, đó là sẽ nói x bây giờ là 2, có lẽ. 187 00:08:28,250 --> 00:08:30,920 % D là giống như $ i cho printf. 188 00:08:30,920 --> 00:08:33,460 Vì vậy, sau đó nó cubing, dấu chấm, dấu chấm, dấu chấm, trong dòng 17. 189 00:08:33,460 --> 00:08:36,299 Và sau đó dòng 18 xuất hiện để gọi một hàm Cubed. 190 00:08:36,299 --> 00:08:37,600 Và nơi được Cubed xác định? 191 00:08:37,600 --> 00:08:40,319 >> Vâng, nó trông giống như trong dòng 25, do đó không phải tất cả những gì khác nhau. 192 00:08:40,319 --> 00:08:42,610 Tôi đã có một số ý kiến ​​trên nó, nhưng đối với hầu hết các phần, 193 00:08:42,610 --> 00:08:45,370 đó là một khá đơn giản porting hoặc chuyển đổi 194 00:08:45,370 --> 00:08:48,470 từ chương trình C với phiên bản PHP. 195 00:08:48,470 --> 00:08:52,670 Nhưng hiện nay có một vài sự khác biệt mà có lẽ nên nhảy ra ngoài. 196 00:08:52,670 --> 00:08:56,100 Những gì người khác là khác nhau về cách bạn có thể viết cùng chương trình này trong C? 197 00:08:56,100 --> 00:08:57,900 >> HỌC SINH: [không nghe được]. 198 00:08:57,900 --> 00:09:00,070 >> DAVID J. Malan: Có không có nguyên mẫu lên hàng đầu. 199 00:09:00,070 --> 00:09:03,210 Vì vậy, PHP-- và thẳng thắn, một rất nhiều languages-- hiện đại 200 00:09:03,210 --> 00:09:06,920 là thông minh hơn rất nhiều và hữu ích hơn hơn so với trình biên dịch C trong đó bạn 201 00:09:06,920 --> 00:09:09,740 có thể đặt các chức năng ở đây, bạn có thể đặt một chức năng xuống đây, 202 00:09:09,740 --> 00:09:12,740 và thông dịch viên sẽ để bạn có được sự ủng hộ của đọc 203 00:09:12,740 --> 00:09:16,010 toàn bộ tập tin trước khi quyết định rằng một số chức năng không tồn tại. 204 00:09:16,010 --> 00:09:17,970 Vì vậy, cải tiến tốt đẹp năm sau đó. 205 00:09:17,970 --> 00:09:22,126 Nhưng cũng có một cái gì đó khác nhau hoặc vắng mặt ở đây. 206 00:09:22,126 --> 00:09:22,626 Yeah? 207 00:09:22,626 --> 00:09:25,084 >> HỌC SINH: [không nghe được]. 208 00:09:25,084 --> 00:09:27,750 DAVID J. Malan: Chúng tôi không cần phải kê khai các loại của các biến, 209 00:09:27,750 --> 00:09:31,780 vì vậy chúng tôi sẽ thấy trước khi dài có nhiều loại khác nhau trong PHP, 210 00:09:31,780 --> 00:09:34,970 nhưng bạn không cần phải xác định chúng, đó cũng là cả tốt và xấu. 211 00:09:34,970 --> 00:09:36,623 Và có một điều mất tích khác. 212 00:09:36,623 --> 00:09:37,430 >> HỌC SINH: Không có thư viện. 213 00:09:37,430 --> 00:09:38,630 >> DAVID J. Malan: Không có thư viện. 214 00:09:38,630 --> 00:09:39,350 OK, vì vậy đó là tốt đẹp. 215 00:09:39,350 --> 00:09:40,540 Chúng tôi nhận được rất nhiều ra khỏi hộp. 216 00:09:40,540 --> 00:09:43,373 Vì vậy, có thực sự là một nhiều hơn thứ hơn tôi nghĩ là khác nhau. 217 00:09:43,373 --> 00:09:44,350 Làm thế nào về cách thức trở lại? 218 00:09:44,350 --> 00:09:46,032 Đó là những gì? 219 00:09:46,032 --> 00:09:46,740 Nói nó một lần nữa? 220 00:09:46,740 --> 00:09:47,960 >> HỌC SINH: Pointer. 221 00:09:47,960 --> 00:09:49,270 >> DAVID J. Malan: Không có con trỏ. 222 00:09:49,270 --> 00:09:51,280 OK, ít nhất là trong ví dụ này, không có. 223 00:09:51,280 --> 00:09:52,070 Đó là công bằng. 224 00:09:52,070 --> 00:09:55,090 Vì vậy, không có con trỏ trong PHP thực sự nói chung. 225 00:09:55,090 --> 00:09:58,730 Có một cái gì đó gọi là tài liệu tham khảo, nhưng chúng tôi sẽ không dành quá nhiều thời gian ở đó. 226 00:09:58,730 --> 00:09:59,520 Và những gì khác? 227 00:09:59,520 --> 00:10:00,185 >> HỌC SINH: Main. 228 00:10:00,185 --> 00:10:01,060 DAVID J. Malan: Main. 229 00:10:01,060 --> 00:10:02,768 Vì vậy, đây là Biggie Tôi đã nghĩ đến. 230 00:10:02,768 --> 00:10:04,660 Chú ý không có điểm vào chính. 231 00:10:04,660 --> 00:10:06,525 Bạn chỉ cần bắt đầu viết mã của bạn. 232 00:10:06,525 --> 00:10:08,400 Và điều này thực sự sẽ được thuận lợi 233 00:10:08,400 --> 00:10:10,560 khi chúng tôi chuyển trong giây lát để thực sự sử dụng 234 00:10:10,560 --> 00:10:13,980 cùng một ngôn ngữ này dựa trên web lập trình, mà chúng 235 00:10:13,980 --> 00:10:16,580 không muốn chỉ có một điểm nhập cảnh. 236 00:10:16,580 --> 00:10:19,980 Chúng tôi có thể muốn có một loạt các URL, một loạt các tập tin khác nhau 237 00:10:19,980 --> 00:10:22,930 tất cả tham gia trong sử dụng đầu vào và sản xuất đầu ra. 238 00:10:22,930 --> 00:10:27,130 >> Nhưng ở đây là rất phong độ ví dụ mà tôi đã hứa thời gian qua, 239 00:10:27,130 --> 00:10:30,130 cụ thể là trong thư mục này ở đây, lỗi chính tả. 240 00:10:30,130 --> 00:10:33,680 Vì vậy, trong tập tin Speller này, mà chúng tôi sẽ không dành quá nhiều thời gian trên, có 241 00:10:33,680 --> 00:10:37,870 cơ bản là một porting-- P-O-R-T. Nó chỉ là từ được đưa ra khi, nói, 242 00:10:37,870 --> 00:10:40,800 bạn chuyển đổi từ một ngôn ngữ khác bằng tay thường. 243 00:10:40,800 --> 00:10:45,680 >> Đây là một porting của PC phiên bản của Speller từ PSET 5. 244 00:10:45,680 --> 00:10:48,856 Và tôi về cơ bản đã cố gắng để chuyển đổi từng dòng như là chặt chẽ nhất có thể. 245 00:10:48,856 --> 00:10:51,730 Vì vậy, nếu bạn muốn loại điều, nó thực sự là giá trị tại một số điểm 246 00:10:51,730 --> 00:10:54,229 kéo cả hai lên bên bên cạnh và nhìn thấy những gì là cùng 247 00:10:54,229 --> 00:10:55,230 và những gì khác nhau. 248 00:10:55,230 --> 00:10:57,510 Nhưng họ đang khá darn tương tự. 249 00:10:57,510 --> 00:11:00,110 Nếu bạn còn nhớ những gì Speller thậm chí trông giống như, 250 00:11:00,110 --> 00:11:02,110 ngay cả khi bạn không phải thay đổi tập tin này, 251 00:11:02,110 --> 00:11:04,860 nó khá tương tự cấu trúc chỉ với một cặp vợ chồng 252 00:11:04,860 --> 00:11:06,200 những thay đổi ở đây và ở đó. 253 00:11:06,200 --> 00:11:10,140 >> Vì vậy, đây chỉ là để nói rằng nó khá đơn giản để chuyển đổi Speller 254 00:11:10,140 --> 00:11:12,000 từ C đến PHP. 255 00:11:12,000 --> 00:11:15,390 Nhưng trong từ điển, có một cái gì đó thậm chí còn hấp dẫn hơn. 256 00:11:15,390 --> 00:11:19,270 Hãy để tôi đi trước và tạo ra tập tin dictionary.php của riêng tôi. 257 00:11:19,270 --> 00:11:24,010 Vì vậy, một chút khác nhau trong đó chúng tôi sẽ gọi nó là .php thay vì .c. 258 00:11:24,010 --> 00:11:26,980 Bởi vì đây là một file PHP, tôi do-- hơi annoyingly-- có 259 00:11:26,980 --> 00:11:30,132 để bắt đầu tập tin với một thẻ php như thế. 260 00:11:30,132 --> 00:11:32,340 Và tôi sẽ đi trước và xác định một vài chức năng. 261 00:11:32,340 --> 00:11:35,770 Chức năng gọi là kiểm tra, đó là sẽ mất trong một từ như trước đây. 262 00:11:35,770 --> 00:11:37,520 Nhưng của lập luận này sẽ có một đô la 263 00:11:37,520 --> 00:11:39,840 ký bởi vì chúng tôi, một lần nữa, bằng cách sử dụng PHP. 264 00:11:39,840 --> 00:11:42,350 Một chức năng từ dictionary.c đã tải 265 00:11:42,350 --> 00:11:47,120 và nó đã cho vào tên của từ điển, vì vậy tôi sẽ nhận được rằng chức năng sẵn sàng để đi. 266 00:11:47,120 --> 00:11:50,920 >> Một số khác trong dictionary.c là gì? 267 00:11:50,920 --> 00:11:54,580 Kích thước là một trong những người đẹp nhất, tại nhất là nếu bạn giữ một số biến xung quanh. 268 00:11:54,580 --> 00:11:57,830 nên kích thước chỉ phải trả lại một biến. 269 00:11:57,830 --> 00:11:59,090 Và sau đó là dỡ bỏ. 270 00:11:59,090 --> 00:12:02,830 >> Vì vậy, đã có bốn chức năng trong vấn đề thiết lập 5 271 00:12:02,830 --> 00:12:06,770 mà bạn cần để thực hiện với một số cấu trúc dữ liệu hoặc cấu trúc. 272 00:12:06,770 --> 00:12:10,170 Vì vậy, tôi hứa rằng trong PHP, chúng ta có thể khai báo 273 00:12:10,170 --> 00:12:14,490 một bảng băm, ví dụ, tất cả những gì dễ dàng hơn. 274 00:12:14,490 --> 00:12:17,377 Trong thực tế, nếu tôi muốn có một bảng băm, Tôi chỉ sẽ đi như thế 275 00:12:17,377 --> 00:12:18,460 và có bảng băm của tôi. 276 00:12:18,460 --> 00:12:21,555 Và đó là lưu ý, phong độ, rằng chúng ta rời đi vào thời gian qua. 277 00:12:21,555 --> 00:12:23,930 Và bạn biết không, nếu tôi muốn một biến cho kích thước, tốt, 278 00:12:23,930 --> 00:12:25,867 này là không phải tất cả là khác nhau từ C, 279 00:12:25,867 --> 00:12:27,450 nhưng tôi sẽ đi trước và làm điều đó. 280 00:12:27,450 --> 00:12:28,630 Và nhận thấy không có kiểu dữ liệu. 281 00:12:28,630 --> 00:12:31,180 Và tôi sẽ quay trở lại sau đó và thực sự thêm một số ý kiến ​​ở đây. 282 00:12:31,180 --> 00:12:32,480 Nhưng những gì về tải? 283 00:12:32,480 --> 00:12:35,780 >> Nếu từ điển ký hiệu đô la là tên của tập tin của tôi 284 00:12:35,780 --> 00:12:39,600 và tôi thực sự muốn tải Nói cách vào bảng này bây giờ, 285 00:12:39,600 --> 00:12:42,360 Tôi thực sự có thể làm một cái gì đó khá đơn giản. 286 00:12:42,360 --> 00:12:44,880 One-- và đây là minorly annoying-- trong PHP, 287 00:12:44,880 --> 00:12:47,710 bạn phải xác định bên trong của một hàm nếu bạn 288 00:12:47,710 --> 00:12:51,060 muốn truy cập một số toàn cầu biến đó là định nghĩa bên ngoài. 289 00:12:51,060 --> 00:12:53,530 >> Nhưng đó không phải là đặc biệt thú vị ngay bây giờ. 290 00:12:53,530 --> 00:12:57,920 Điều thú vị hơn này là dành cho mỗi xây dựng mà tôi đã đề cập thời gian qua. 291 00:12:57,920 --> 00:13:01,880 Và nó chỉ ra rằng PHP có một chức năng được gọi là tập tin có mục đích trong cuộc sống 292 00:13:01,880 --> 00:13:05,550 là để mở một tập tin và đọc tất cả các dòng của nó vào một mảng 293 00:13:05,550 --> 00:13:06,840 và giao lại cho. 294 00:13:06,840 --> 00:13:12,170 >> Đó là để nói rằng tôi có thể làm từ điển để mà bây giờ có hiệu quả khi tôi gọi tập tin, 295 00:13:12,170 --> 00:13:15,472 điều này sẽ đưa cho tôi trở lại một loạt các từ trong tập tin. 296 00:13:15,472 --> 00:13:16,430 Đó không phải là tất cả những gì tốt. 297 00:13:16,430 --> 00:13:20,130 Nó vẫn sẽ là một dòng các từ ngữ, một cái gì đó tuyến tính. 298 00:13:20,130 --> 00:13:23,880 Nhưng tôi có thể đi trước và lặp đi lặp lại trên mỗi của những từ này sử dụng 299 00:13:23,880 --> 00:13:25,710 cú pháp mà chúng ta đã thấy thời gian một thời gian ngắn vừa qua. 300 00:13:25,710 --> 00:13:27,940 Và bạn sẽ thấy nó nhiều hơn trong PSET sắp tới. 301 00:13:27,940 --> 00:13:32,070 >> Nhưng bây giờ tôi có một vòng lặp iterating trên mỗi từ trong từ điển. 302 00:13:32,070 --> 00:13:36,100 Và trên mỗi lần lặp, nhớ lại tôi gọi từ hiện tại "từ". 303 00:13:36,100 --> 00:13:39,790 Và tất cả nó sẽ làm để đặt một từ vào từ điển 304 00:13:39,790 --> 00:13:43,530 sẽ từ đoán "true". 305 00:13:43,530 --> 00:13:44,740 Đó là chức năng chèn của tôi. 306 00:13:44,740 --> 00:13:46,661 Đó là chức năng tải của tôi cho từ điển của tôi. 307 00:13:46,661 --> 00:13:49,410 Bây giờ đó là một chút của một cheat vì, bạn biết những gì, có thực sự 308 00:13:49,410 --> 00:13:52,920 dấu gạch chéo ngược n vào cuối của các từ mà tôi có lẽ nên loại bỏ, 309 00:13:52,920 --> 00:13:56,380 nhưng đó không phải là một vấn đề bởi vì PHP có một chức năng gọi là dấu có nghĩa đen 310 00:13:56,380 --> 00:13:58,480 sườn ra một nhân vật ở cuối. 311 00:13:58,480 --> 00:13:59,400 Vì vậy, không có vấn đề đó. 312 00:13:59,400 --> 00:14:02,199 Chúng tôi đã đi trước và thực sự rút ngắn chỉ này. 313 00:14:02,199 --> 00:14:05,240 Và bây giờ tôi có lẽ nên theo dõi kích thước, vì vậy chúng ta ít nhất là làm this-- 314 00:14:05,240 --> 00:14:05,835 kích thước ++. 315 00:14:05,835 --> 00:14:07,339 Tôi có thể làm điều đó như trước. 316 00:14:07,339 --> 00:14:10,380 Và sau đó điều này có lẽ sẽ chỉ làm việc tốt, để quay trở lại đúng. 317 00:14:10,380 --> 00:14:10,930 Xong. 318 00:14:10,930 --> 00:14:11,797 PSET 5. 319 00:14:11,797 --> 00:14:13,545 >> [Cười] 320 00:14:13,545 --> 00:14:14,420 >> DAVID J. Malan: OK. 321 00:14:14,420 --> 00:14:16,628 Chúng tôi sẽ làm điều đó một lần nữa với PSET tiếp theo, quá. 322 00:14:16,628 --> 00:14:18,730 Vì vậy, những gì về kích thước? 323 00:14:18,730 --> 00:14:22,080 Vâng, một hy vọng điều này là về như bạn mong chờ thời gian qua, 324 00:14:22,080 --> 00:14:24,460 mặc dù tôi phải làm Điều này toàn cầu ngu ngốc. 325 00:14:24,460 --> 00:14:26,610 Nó chỉ là một tạo tác từ thiết kế của ngôn ngữ. 326 00:14:26,610 --> 00:14:28,450 >> Nhưng kiểm tra là một chút thú vị hơn. 327 00:14:28,450 --> 00:14:31,420 Vì vậy, nếu tôi đã thông qua bằng đô la ký văn bản, tôi lần đầu tiên 328 00:14:31,420 --> 00:14:34,060 muốn có quyền truy cập vào rằng bảng biến toàn cầu. 329 00:14:34,060 --> 00:14:36,700 Và bây giờ nếu tôi muốn kiểm tra nếu một từ là có, 330 00:14:36,700 --> 00:14:44,350 Tôi chỉ có thể nói nếu nó là sự thật mà sau đây được thiết lập trong bảng, 331 00:14:44,350 --> 00:14:49,957 sau đó đi trước và trở lại true; khác, trả về false. 332 00:14:49,957 --> 00:14:51,180 Xong. 333 00:14:51,180 --> 00:14:52,440 Nửa kia của PSET 5. 334 00:14:52,440 --> 00:14:54,540 >> Tất cả các bên phải, vì vậy một lần nữa, tôi cắt một vài góc. 335 00:14:54,540 --> 00:14:56,831 Trong công bằng, tôi nên có lẽ dành một vài giây nữa 336 00:14:56,831 --> 00:14:58,300 về việc thực hiện này. 337 00:14:58,300 --> 00:15:01,860 Và tôi có lẽ không nên thử tất cả các giờ bạn đặt trên PSET rất nhiều. 338 00:15:01,860 --> 00:15:04,045 Vì vậy, strtolower là một chức năng. 339 00:15:04,045 --> 00:15:06,670 Một cái gì đó tương tự như hiện sinh trong C, ít nhất là cho các nhân vật, 340 00:15:06,670 --> 00:15:08,560 nhưng PHP đã bị một phiên bản toàn bộ chuỗi. 341 00:15:08,560 --> 00:15:11,226 >> Điều đó sẽ buộc tất cả mọi thứ thành chữ thường, mà một số bạn 342 00:15:11,226 --> 00:15:14,944 có thể đã thực hiện để canonicalize gì bạn đã được đặt trong từ điển của bạn. 343 00:15:14,944 --> 00:15:16,360 Và bây giờ bạn có thể làm điều này trong C, quá. 344 00:15:16,360 --> 00:15:17,780 Điều này không có gì để làm với PHP. 345 00:15:17,780 --> 00:15:20,260 >> Nhưng bất cứ lúc nào bạn có một điều kiện Boolean, 346 00:15:20,260 --> 00:15:22,680 giống như một cái gì đó trên đường 10 đó, mà chỉ là 347 00:15:22,680 --> 00:15:27,145 sẽ đánh giá đúng sự thật hoặc sai, và nếu khác rõ ràng 348 00:15:27,145 --> 00:15:33,620 đang trở lại đúng hay sai, tôi có thể chỉ đơn giản là thực sự làm cho quyến rũ này 349 00:15:33,620 --> 00:15:38,360 và chỉ cần làm một cái gì đó như thế này. 350 00:15:38,360 --> 00:15:40,500 Vì vậy, có chức năng kiểm tra của tôi. 351 00:15:40,500 --> 00:15:42,560 Phải, nếu Boolean trả về một sự thật hay một sai lầm, 352 00:15:42,560 --> 00:15:44,630 chúng ta hãy quay trở lại nó ngay lập tức. 353 00:15:44,630 --> 00:15:47,340 >> Và có một vài điều chỉnh khác Tôi có thể thực hiện ở đây và ở đó. 354 00:15:47,340 --> 00:15:51,380 Dỡ bỏ Load--, bằng cách này, đó là thực hiện. 355 00:15:51,380 --> 00:15:52,850 Không có gì để làm ở đó. 356 00:15:52,850 --> 00:15:55,840 Kể từ khi tất cả các bộ nhớ trong PHP và nhiều ngôn ngữ khác 357 00:15:55,840 --> 00:15:57,570 thực sự là quản lý cho bạn. 358 00:15:57,570 --> 00:16:00,330 Vì vậy, trong khi ở C, bạn đã học được đau đớn, 359 00:16:00,330 --> 00:16:04,700 bất cứ điều gì bạn malloc hoặc calloc hoặc realloc, bạn phải giải phóng chính mình. 360 00:16:04,700 --> 00:16:08,770 Bất cứ điều gì bạn fopen, bạn phải fclose, để các nguồn lực được giải thoát cuối cùng 361 00:16:08,770 --> 00:16:11,690 và các công cụ như Valgrind không thông báo và không phàn nàn, 362 00:16:11,690 --> 00:16:13,570 đó là một điều tốt để chạy trên chúng. 363 00:16:13,570 --> 00:16:16,190 >> Nhưng chắc chắn, có phải có một số đánh bắt, phải không? 364 00:16:16,190 --> 00:16:19,400 Nếu không, chúng tôi loại lãng phí một bó toàn bộ tuần. 365 00:16:19,400 --> 00:16:23,270 Vì vậy, có bất kỳ số lý do tại sao chúng ta loại có quỹ đạo này, 366 00:16:23,270 --> 00:16:24,440 nhưng có một trade-off. 367 00:16:24,440 --> 00:16:25,820 Đúng, điều này đã được chủ đề. 368 00:16:25,820 --> 00:16:29,690 >> Vì vậy, những gì có thể một thương mại-off ở đây di chuyển, từ C đến PHP? 369 00:16:29,690 --> 00:16:33,250 Cảm thấy như tất cả các chiến thắng cho đến nay khác hơn một chút xấu xí ở đây hay ở đó. 370 00:16:33,250 --> 00:16:34,040 Yeah. 371 00:16:34,040 --> 00:16:34,700 Đó là những gì? 372 00:16:34,700 --> 00:16:36,064 >> HỌC SINH: [không nghe được] bộ nhớ. 373 00:16:36,064 --> 00:16:36,980 DAVID J. Malan: Tốc độ. 374 00:16:36,980 --> 00:16:37,479 OK. 375 00:16:37,479 --> 00:16:40,720 Vâng, tốc độ của tôi là khá nhanh. 376 00:16:40,720 --> 00:16:42,020 Phải không? 377 00:16:42,020 --> 00:16:44,320 Nhưng tốc độ thực hiện của chương trình? 378 00:16:44,320 --> 00:16:45,580 OK, vì vậy đó là một điểm công bằng. 379 00:16:45,580 --> 00:16:50,930 >> Vì vậy, nó sẽ xảy ra, tôi trước cued lên cả hai giải pháp cố gắng của tôi, một trong những 380 00:16:50,930 --> 00:16:53,510 Tôi đã có trên bảng lớn là một giải pháp dựa trên thử, 381 00:16:53,510 --> 00:16:55,510 và tôi đã có trong thư mục này ở đây. 382 00:16:55,510 --> 00:16:58,510 Vì vậy, tôi trong một thời điểm, tôi có thể đi trước và chạy trên của King James Bible, 383 00:16:58,510 --> 00:16:59,657 nhấn Enter. 384 00:16:59,657 --> 00:17:01,990 Và đây là hy vọng chính xác thực hiện lúc kết thúc, 385 00:17:01,990 --> 00:17:05,109 mang lại cho tôi thời gian trong tổng số 0,38 giây cho rằng 386 00:17:05,109 --> 00:17:07,270 một ví dụ nào tùy ý. 387 00:17:07,270 --> 00:17:09,270 >> Và nếu bây giờ tôi đi vào trong này cửa sổ terminal thứ hai 388 00:17:09,270 --> 00:17:14,569 ở đây, nơi đầu tiên tôi mở gedit, chúng ta hãy tôi đi vào code-- ngày nay mà, một lần nữa, 389 00:17:14,569 --> 00:17:19,650 là trong thư mục này và here-- hãy để tôi đi trước và chạy Speller. 390 00:17:19,650 --> 00:17:23,470 Vì vậy, chỉ để được rõ ràng, đây là phiên bản PHP. 391 00:17:23,470 --> 00:17:25,170 Tôi chỉ thấy đầu của nó ở đây. 392 00:17:25,170 --> 00:17:32,020 >> Vì vậy, nếu tôi làm Speller của dấu ngã CS50 PSET 5 văn bản, King James, nhập. 393 00:17:32,020 --> 00:17:39,700 394 00:17:39,700 --> 00:17:43,050 Nó vẫn còn nhanh hơn so với văn bản nó trong C, nhưng tổng thời gian 395 00:17:43,050 --> 00:17:47,650 là, thông báo, 0,93, trong khi của tôi Thực hiện dựa trên C là 0,38. 396 00:17:47,650 --> 00:17:49,110 Vì vậy, nó là một sự khác biệt không tầm thường. 397 00:17:49,110 --> 00:17:51,100 >> Và đây chỉ là trên một tập tin. 398 00:17:51,100 --> 00:17:53,480 Nếu bạn đang chạy hai chương trình so với các bảng lớn 399 00:17:53,480 --> 00:17:56,510 và có một bó toàn bộ các yếu tố đầu vào thử nghiệm, điều này chắc chắn sẽ tăng lên. 400 00:17:56,510 --> 00:18:00,310 Và nếu chúng ta có các bộ dữ liệu lớn hơn, này, quá, sẽ thêm lên tất cả các chi tiết. 401 00:18:00,310 --> 00:18:04,820 Vì vậy, có, thanh toán một số giá tốc độ thực sự là trường hợp. 402 00:18:04,820 --> 00:18:05,470 Những gì khác? 403 00:18:05,470 --> 00:18:08,000 404 00:18:08,000 --> 00:18:08,860 Yeah? 405 00:18:08,860 --> 00:18:10,340 >> HỌC SINH: Số tiền sử dụng bộ nhớ RAM. 406 00:18:10,340 --> 00:18:11,756 >> DAVID J. Malan: Số tiền sử dụng bộ nhớ RAM. 407 00:18:11,756 --> 00:18:15,380 Vì vậy, tôi đã không cung cấp cho một thứ hai nghĩ khi viết PHP này 408 00:18:15,380 --> 00:18:17,300 phiên bản như thế nào nhiều bộ nhớ tôi đã sử dụng. 409 00:18:17,300 --> 00:18:22,080 Tôi hoàn toàn trì hoãn đó để PHP bản thân và bất cứ ai đã viết chương trình đó. 410 00:18:22,080 --> 00:18:24,500 Và đó có thể là OK, nhưng nếu tôi thực sự thực sự 411 00:18:24,500 --> 00:18:28,420 quan tâm đến hiệu suất ép càng nhiều ra khỏi chương trình của tôi hoặc ra khỏi trang web của tôi 412 00:18:28,420 --> 00:18:31,150 hoặc ra khỏi bất kỳ công cụ Tôi đang xây dựng, có thể 413 00:18:31,150 --> 00:18:33,310 PHP, thực sự, không phải là ngôn ngữ bên phải. 414 00:18:33,310 --> 00:18:36,330 >> Và trên thực tế, đó là lý do tại sao, cho Ví dụ, nhiều servers-- web 415 00:18:36,330 --> 00:18:38,980 các chương trình thực tế phục vụ lên web content-- 416 00:18:38,980 --> 00:18:41,810 không được viết bằng PHP hoặc Python hay Ruby. 417 00:18:41,810 --> 00:18:44,630 Chúng được viết như bây giờ bạn sẽ làm gì với PSEt 6, 418 00:18:44,630 --> 00:18:48,120 trong C để bạn có thể ép mỗi bit của hiệu năng của nó 419 00:18:48,120 --> 00:18:50,780 và thực sự thực hiện kiểm soát tốt hạt hơn những gì 420 00:18:50,780 --> 00:18:52,980 đang diễn ra bên dưới mui xe và không chỉ cần mang nó 421 00:18:52,980 --> 00:18:54,890 cho phép một số cao hơn cấu trúc dữ liệu cấp độ. 422 00:18:54,890 --> 00:18:58,071 >> Xem xét, sau khi tất cả, bất cứ ai trong PHP thực hiện 423 00:18:58,071 --> 00:19:00,070 rằng khái niệm về một băm table-- nó thực sự 424 00:19:00,070 --> 00:19:04,260 đúng gọi là array-- kết hợp ông ấy hay cô ấy có bất cứ ý tưởng gì loại 425 00:19:04,260 --> 00:19:07,090 đầu vào bạn sẽ được đưa vào cơ cấu? 426 00:19:07,090 --> 00:19:08,260 Vì vậy, rõ ràng là không, phải không? 427 00:19:08,260 --> 00:19:10,340 Đó là một công cụ chung trong bộ công cụ đó là 428 00:19:10,340 --> 00:19:13,430 cung cấp cho bất cứ ai muốn sử dụng nó, và vì vậy chắc chắn nó 429 00:19:13,430 --> 00:19:17,680 không thể được tối ưu hóa cuối cùng chính xác những gì bạn muốn làm. 430 00:19:17,680 --> 00:19:21,180 >> Vì vậy, thời gian phát triển thương mại-offs-- might khác nhau, hiệu suất có thể khác nhau, 431 00:19:21,180 --> 00:19:23,120 phức tạp hoặc sử dụng bộ nhớ có thể khác nhau. 432 00:19:23,120 --> 00:19:24,820 Và vì vậy những gì bạn sẽ tìm thấy ngày càng là có 433 00:19:24,820 --> 00:19:26,570 sẽ khác nhau công cụ cho việc buôn bán. 434 00:19:26,570 --> 00:19:31,160 Và trong thực tế, một phần lớn của siêu dự án chính thức của người dân trong lớp học này, 435 00:19:31,160 --> 00:19:34,360 tin hay không, C không phải là đi là ngôn ngữ quyền sử dụng. 436 00:19:34,360 --> 00:19:37,880 >> Và trên thực tế, một trong những takeaways cuối cùng cho bất kỳ lớp học như thế này 437 00:19:37,880 --> 00:19:40,510 là để có được bạn suy nghĩ về, tốt, những gì bạn nên kéo giảm 438 00:19:40,510 --> 00:19:42,710 kệ khi bạn muốn để giải quyết một số vấn đề. 439 00:19:42,710 --> 00:19:46,720 Và quả thực, chúng ta sẽ qua cây cầu này thậm chí nhiều hơn như chúng ta nhìn vào nhiều ngôn ngữ 440 00:19:46,720 --> 00:19:47,920 thậm chí cao hơn ngày hôm nay. 441 00:19:47,920 --> 00:19:50,530 >> Vì vậy, hãy chuyển ngay bây giờ để có lẽ là một bối cảnh quen thuộc hơn 442 00:19:50,530 --> 00:19:52,480 cho việc sử dụng một ngôn ngữ như PHP. 443 00:19:52,480 --> 00:19:56,720 Nó hơi thường được sử dụng tại dòng lệnh, viết kịch bản 444 00:19:56,720 --> 00:19:59,050 như tôi đã làm, nhưng nó nhiều, phổ biến hơn nhiều. 445 00:19:59,050 --> 00:20:02,350 Và nó được dự định sẽ được sử dụng trong dạng tập tin mà thường kết thúc 446 00:20:02,350 --> 00:20:05,060 trong .php-- nhưng đó là không phải là một prerequisite-- 447 00:20:05,060 --> 00:20:07,990 mà mình tạo ra nội dung web. 448 00:20:07,990 --> 00:20:11,310 >> Vì vậy, hãy để tôi đi trước và mở một vài ví dụ tôi chuẩn bị trước. 449 00:20:11,310 --> 00:20:15,100 Và thực tế đây là loại thực tầng trong đó một trong những điều đầu tiên 450 00:20:15,100 --> 00:20:18,200 Tôi đã làm bản thân mình sau khi hoàn thành CS50 và có thể, tôi nghĩ rằng, 451 00:20:18,200 --> 00:20:21,350 CS51 năm trước đây là của tôi bạn cùng phòng và tôi đã giúp đỡ 452 00:20:21,350 --> 00:20:24,320 để chạy thể thao trong sinh viên năm nhất chương trình thể thao, trong đó, tại thời điểm đó, 453 00:20:24,320 --> 00:20:28,610 sinh viên năm nhất đã đăng ký khác nhau thể thao bằng cách điền vào một mảnh giấy, 454 00:20:28,610 --> 00:20:31,800 như nó đã được gọi là, đi bộ băng qua sân để Wigglesworth, 455 00:20:31,800 --> 00:20:34,030 và thả nó trong một số cửa thả của giám thị. 456 00:20:34,030 --> 00:20:37,210 Và sau đó anh ta hoặc cô sẽ đi qua họ và sau đó thực sự email cho chúng tôi bằng tay 457 00:20:37,210 --> 00:20:39,140 rằng chúng tôi đã đăng ký cho một số môn thể thao. 458 00:20:39,140 --> 00:20:41,166 >> Vì vậy, rõ ràng, một cơ hội để cải thiện. 459 00:20:41,166 --> 00:20:44,040 Những ngày này, bạn có thể chuyển sang chỉ Hình thức Google, nhưng trở lại trong ngày, 460 00:20:44,040 --> 00:20:46,914 chúng tôi đã phải thực sự đạt for-- này đã thậm chí không lâu ago-- đạt 461 00:20:46,914 --> 00:20:49,410 cho một lập trình ngôn ngữ đó không phải là PHP. 462 00:20:49,410 --> 00:20:51,200 Vào thời điểm đó, nó là một cái gì đó gọi là Perl, 463 00:20:51,200 --> 00:20:52,890 mà đã đi ra khỏi thịnh hành kể từ đó. 464 00:20:52,890 --> 00:20:54,160 Nhưng ý tưởng là như nhau. 465 00:20:54,160 --> 00:20:58,940 >> Và tôi chủ yếu ngồi xuống để thử đến cổng đi phiên bản Perl để PHP, 466 00:20:58,940 --> 00:21:03,710 nhưng đầy đủ từ chối, không cho bất cứ nghĩ đến thẩm mỹ chỉ được nêu ra. 467 00:21:03,710 --> 00:21:04,960 Vì vậy, đây là một trang web. 468 00:21:04,960 --> 00:21:05,670 Đây là một tập tin. 469 00:21:05,670 --> 00:21:09,470 Nếu tôi phóng to, rõ ràng của nó gọi là froshim0.php 470 00:21:09,470 --> 00:21:12,060 chỉ vì nó là lần đầu tiên của chúng tôi Ví dụ trong loạt bài này. 471 00:21:12,060 --> 00:21:15,970 Và nhận thấy rằng nó có những gì xuất hiện là một dạng HTML rất xấu xí, 472 00:21:15,970 --> 00:21:18,680 nhưng một hình thức thú vị bởi vì nó cho phép 473 00:21:18,680 --> 00:21:21,910 tôi để cung cấp cho người sử dụng đầu vào cho các trình duyệt. 474 00:21:21,910 --> 00:21:27,730 >> Bây giờ thời gian trước khi chúng ta có một hình thức, để mà chúng tôi đã trình tham số truy vấn của chúng tôi, 475 00:21:27,730 --> 00:21:30,450 tham số hàng đợi như nó đã được gọi là? 476 00:21:30,450 --> 00:21:31,330 Vì vậy, để Google, phải không? 477 00:21:31,330 --> 00:21:34,090 Chúng tôi hoàn toàn punted trên ý tưởng làm bất cứ điều gì với đầu vào. 478 00:21:34,090 --> 00:21:36,160 >> Nhưng hôm nay, chúng tôi bắt đầu sản xuất ra. 479 00:21:36,160 --> 00:21:39,420 Và hành vi tôi sẽ thấy ở đây ban đầu là khá tầm thường. 480 00:21:39,420 --> 00:21:42,980 David, tôi sẽ kiểm tra tắt giới ở đây, nói Matthews ở đây. 481 00:21:42,980 --> 00:21:43,800 Tôi sẽ không có đội trưởng. 482 00:21:43,800 --> 00:21:45,410 Tôi sẽ bấm vào Đăng ký. 483 00:21:45,410 --> 00:21:50,720 Và nhận thấy rằng các URL có thay đổi đăng ký-0.php, 484 00:21:50,720 --> 00:21:52,310 và sau đó có văn bản này xấu xí ở đây. 485 00:21:52,310 --> 00:21:54,460 Tôi đã không nghĩ đến các định dạng này. 486 00:21:54,460 --> 00:21:59,900 >> Nhưng điều thú vị là ba giá trị dường như được thông qua. 487 00:21:59,900 --> 00:22:02,960 Đây là PHP của loại tương đương với printf-- 488 00:22:02,960 --> 00:22:06,330 chúng tôi sẽ xem những gì nó thực sự được gọi là trong một bit-- mà chỉ cần in ra 489 00:22:06,330 --> 00:22:08,300 những gì bạn đặt vào đó. 490 00:22:08,300 --> 00:22:11,414 Vì vậy, điều này cho thấy rằng hình thức đó có ít nhất ba lĩnh vực với nó, 491 00:22:11,414 --> 00:22:12,580 và bạn nhìn thấy tôi gõ vào. 492 00:22:12,580 --> 00:22:15,739 Một là tên của tôi, một là giới tính, một là ký túc xá. 493 00:22:15,739 --> 00:22:18,780 Và đội trưởng thậm chí không được gửi tới máy chủ bởi vì tôi đã không kiểm tra nó. 494 00:22:18,780 --> 00:22:22,150 >> Vì vậy, đây là để nói rõ ràng, khi bạn gửi những thứ trên web, 495 00:22:22,150 --> 00:22:26,830 không chỉ thực hiện các URL đôi khi change-- đôi khi nó không. 496 00:22:26,830 --> 00:22:30,330 Trong thực tế, tên tập tin thay đổi, nhưng những gì là vắng mặt từ URL 497 00:22:30,330 --> 00:22:32,861 rằng chúng tôi đã nhìn thấy lần cuối cùng với Google. 498 00:22:32,861 --> 00:22:33,360 Yeah? 499 00:22:33,360 --> 00:22:34,380 >> HỌC SINH: Không có chuỗi truy vấn 500 00:22:34,380 --> 00:22:35,220 >> DAVID J. Malan: Không có chuỗi truy vấn. 501 00:22:35,220 --> 00:22:37,270 Không có câu hỏi đánh dấu một cái gì đó. 502 00:22:37,270 --> 00:22:40,050 Không có dấu hỏi q bằng mèo, như chúng tôi đã làm thời gian qua. 503 00:22:40,050 --> 00:22:42,170 Và có chắc chắn không Tên câu hỏi đánh dấu bằng 504 00:22:42,170 --> 00:22:46,310 David hoặc ký túc xá bằng Matthews, vì vậy, nơi được rằng tất cả sẽ đi đâu? 505 00:22:46,310 --> 00:22:51,290 >> Vâng, hãy để tôi quay lại với gedit đây và mở ra đầu tiên của các tập tin 506 00:22:51,290 --> 00:22:57,020 trong vhost của tôi, host nội bộ, công cộng thư mục ở đây và đi vào froshim0. 507 00:22:57,020 --> 00:23:02,060 Vì vậy, nó chỉ ra rằng hầu hết tất cả các trang này chỉ là HTML. 508 00:23:02,060 --> 00:23:05,410 Và điều này có thể không quen thuộc với bạn, nhưng nó sẽ sớm được nhiều hơn như vậy với PSET 6 509 00:23:05,410 --> 00:23:07,370 và PSET 7 và PSET 8. 510 00:23:07,370 --> 00:23:09,160 Nhưng điều này chỉ là một trang HTML. 511 00:23:09,160 --> 00:23:12,400 >> Và các công cụ thú vị có vẻ là ở đây. 512 00:23:12,400 --> 00:23:16,290 Một thẻ form có thuộc tính hành động có giá trị đăng ký 0. 513 00:23:16,290 --> 00:23:18,890 Đó là lý do tại sao khi tôi gửi này, nó đi đến tập tin đó. 514 00:23:18,890 --> 00:23:20,620 Nhưng phương pháp là bài viết today-- khác nhau. 515 00:23:20,620 --> 00:23:23,120 Vì vậy, nó quay ra có của ít nhất hai phương pháp trên web được sử dụng 516 00:23:23,120 --> 00:23:24,911 để gửi thông tin từ trình duyệt đến máy chủ. 517 00:23:24,911 --> 00:23:25,980 Nhận đặt nó trong URL. 518 00:23:25,980 --> 00:23:27,950 Bài viết đặt nó ở nơi khác. 519 00:23:27,950 --> 00:23:30,570 Và khi nào và tại sao có thể giúp bạn thực sự muốn có một trang web 520 00:23:30,570 --> 00:23:34,110 để sử dụng bài viết sau đó thay vì của nhận được, chỉ bằng trực giác? 521 00:23:34,110 --> 00:23:37,080 Bất kỳ trang web. 522 00:23:37,080 --> 00:23:42,010 Những loại dữ liệu cần được thông qua chỉ bởi suy luận bây giờ thông qua bài viết như trái ngược 523 00:23:42,010 --> 00:23:45,184 để có được, nếu chúng ta đã nhìn thấy hai sự khác biệt? 524 00:23:45,184 --> 00:23:46,350 HỌC SINH: [không nghe được] an toàn. 525 00:23:46,350 --> 00:23:47,790 DAVID J. Malan: Nếu bạn muốn một cái gì đó để được an toàn. 526 00:23:47,790 --> 00:23:50,360 Vì vậy, bạn có thể gõ mật khẩu vào một trang web, một thẻ tín dụng 527 00:23:50,360 --> 00:23:53,030 vào một trang web sẽ loại này tối ưu 528 00:23:53,030 --> 00:23:56,220 nếu trình duyệt đặt mà giá trị bên trong của URL. 529 00:23:56,220 --> 00:23:57,680 Tại sao? 530 00:23:57,680 --> 00:24:00,059 Bạn nhìn thấy nó, mà không dường như là một việc lớn như vậy, 531 00:24:00,059 --> 00:24:03,350 nhưng tỷ lệ cược là bạn khá thường xuyên đi bộ đi từ máy tính máy tính hoặc sử dụng của bạn 532 00:24:03,350 --> 00:24:05,310 phòng thí nghiệm, và để ai đó khác hay thậm chí một người bạn cùng phòng 533 00:24:05,310 --> 00:24:08,220 có thể dễ dàng đi bộ lên và nhìn thấy rằng thông tin cá nhân. 534 00:24:08,220 --> 00:24:10,220 Khi bạn gửi một email thông qua trang web, bạn có thể 535 00:24:10,220 --> 00:24:12,350 không muốn điều đó kết thúc dữ liệu trong URL là tốt. 536 00:24:12,350 --> 00:24:15,266 Và như vậy có bất kỳ số lý do tại sao chúng ta có thể muốn đặt nó ở đây. 537 00:24:15,266 --> 00:24:18,610 Và thậm chí photos-- đúng, tôi không thể khá tưởng tượng làm thế nào bạn sẽ có được một đồ họa, 538 00:24:18,610 --> 00:24:21,480 giống như một JPEG, và đặt nó vào một URL. 539 00:24:21,480 --> 00:24:22,330 Bạn có thể làm điều đó. 540 00:24:22,330 --> 00:24:25,840 Có cách mã hóa nó, nhưng nó không chỉ đơn giản như thế. 541 00:24:25,840 --> 00:24:29,030 >> Vì vậy, đăng ký 0 là thực sự rất underwhelming. 542 00:24:29,030 --> 00:24:31,610 Tất cả nó nói theo nghĩa đen là thế này. 543 00:24:31,610 --> 00:24:35,910 Nó in ra bên trong của một số Thẻ HTML sau đây. 544 00:24:35,910 --> 00:24:38,640 Tôi đã có một thẻ PHP ở đây lồng vào bên trong của một thẻ trước. 545 00:24:38,640 --> 00:24:42,300 "Pre" chỉ có nghĩa là văn bản trước khi định dạng, mono-spaced, giống như một máy đánh chữ. 546 00:24:42,300 --> 00:24:44,836 >> Printr là một bản in hàm đệ quy. 547 00:24:44,836 --> 00:24:46,710 Và sau đó có này Điều thú vị ở đây. 548 00:24:46,710 --> 00:24:48,835 Và chúng ta sẽ quay trở lại này bởi vì có những người khác, 549 00:24:48,835 --> 00:24:51,140 nhưng ký hiệu đô la gạch bài xuất hiện để được 550 00:24:51,140 --> 00:24:56,110 một biến trong PHP, trong đó bất cứ điều gì bạn gửi từ trình duyệt đến máy chủ 551 00:24:56,110 --> 00:24:58,040 được lưu trữ cho bạn. 552 00:24:58,040 --> 00:25:00,930 Và chúng tôi sẽ xem làm thế nào để có được ở thông tin trước khi dài. 553 00:25:00,930 --> 00:25:04,000 >> Nhưng trước tiên, chúng ta hãy quay trở lại một ví dụ hơi khác nhau. 554 00:25:04,000 --> 00:25:09,050 Đi sâu vào register-- hoặc đúng hơn, froshims1.php, 555 00:25:09,050 --> 00:25:10,470 mà hơi khác một chút. 556 00:25:10,470 --> 00:25:12,670 Tôi đã nhiều hơn một chút nỗ lực với định dạng, 557 00:25:12,670 --> 00:25:14,370 mặc dù nó vẫn còn khá xấu xí. 558 00:25:14,370 --> 00:25:16,990 Nhưng tôi sẽ đi trước và gõ "David" bây giờ. 559 00:25:16,990 --> 00:25:17,850 Nam. 560 00:25:17,850 --> 00:25:19,360 Chúng tôi sẽ kiểm tra "thuyền trưởng" thời gian này. 561 00:25:19,360 --> 00:25:20,660 Chúng tôi sẽ làm Matthews. 562 00:25:20,660 --> 00:25:22,430 Và đăng ký. 563 00:25:22,430 --> 00:25:24,110 >> Và lần này nó nói, hm, không thực sự. 564 00:25:24,110 --> 00:25:26,180 Tất cả các bên phải, vì vậy những gì của đăng ký 1? 565 00:25:26,180 --> 00:25:30,509 Hãy để tôi đi vào mở Đăng ký 1 hm và-. 566 00:25:30,509 --> 00:25:32,300 Tất cả các bên phải, vì vậy đây là thú vị, và điều này 567 00:25:32,300 --> 00:25:34,880 là một bước về phía doanh nghiệp các chương trình thú vị hơn. 568 00:25:34,880 --> 00:25:38,970 >> Thấy hàng đầu của tập tin này có Tag PHP cũng như một số ý kiến. 569 00:25:38,970 --> 00:25:42,590 Và đây là, hiện nay, một phân tâm vì vậy chúng ta chỉ có được thoát khỏi những ý kiến 570 00:25:42,590 --> 00:25:47,070 giống như họ đang ở trong C. Và tôi yêu cầu bồi thường với đoạn mã này với một bình luận 571 00:25:47,070 --> 00:25:49,280 rằng mã này là chứng thực nộp hồ sơ. 572 00:25:49,280 --> 00:25:51,690 >> Vâng, nó chỉ ra rằng biến như ký hiệu đô la 573 00:25:51,690 --> 00:25:53,739 nhấn mạnh bài là gọi là siêu globals. 574 00:25:53,739 --> 00:25:55,530 Họ giống như những biến toàn cầu đặc biệt 575 00:25:55,530 --> 00:25:58,840 mà chỉ là omni-hiện nay có sẵn trong chương trình của bạn. 576 00:25:58,840 --> 00:26:03,870 Và bạn có thể sử dụng ký hiệu khung vuông để chỉ mục vào họ không sử dụng số 577 00:26:03,870 --> 00:26:07,460 như 0, 1, 2, 3, nhưng từ thực tế. 578 00:26:07,460 --> 00:26:12,100 >> Vì vậy, bạn có thể nghĩ đến ký hiệu đô la nhấn mạnh bài như là sắp xếp của một bảng băm 579 00:26:12,100 --> 00:26:15,920 mà bạn có thể vượt qua một chìa khóa vào, một tra cứu từ ở giữa dấu ngoặc vuông, 580 00:26:15,920 --> 00:26:19,370 và nó sẽ cung cấp cho bạn trở lại giá trị mà người dùng thực sự cung cấp. 581 00:26:19,370 --> 00:26:21,210 PHP có một chức năng được gọi là trống rỗng, mà chỉ 582 00:26:21,210 --> 00:26:23,720 cho biết có hay không, điều này biến là trống rỗng hay không. 583 00:26:23,720 --> 00:26:27,250 Chúng tôi có những quầy bar, mà chỉ có nghĩa là hoặc, như trong C. 584 00:26:27,250 --> 00:26:31,740 >> Vì vậy, trong thực tế, dòng này chỉ là 4 nói rằng nếu người sử dụng không cung cấp cho một tên 585 00:26:31,740 --> 00:26:36,540 hoặc không đưa ra một giới tính hay không cung cấp cho một ký túc xá, đi trước và chuyển hướng người 586 00:26:36,540 --> 00:26:38,184 mình thông qua dòng này ở đây. 587 00:26:38,184 --> 00:26:40,600 Vì vậy, đây là một chút khó hiểu, nhưng điều này chỉ có nghĩa là nghĩa đen 588 00:26:40,600 --> 00:26:43,330 quay trở lại vị trí này, do đó, nó punts người sử dụng 589 00:26:43,330 --> 00:26:45,420 trở lại bất cứ nơi nào anh ta hoặc cô đến từ đâu. 590 00:26:45,420 --> 00:26:47,880 Nhưng đó là một chút không thanh nha trong đó tôi cứng mã hoá nó. 591 00:26:47,880 --> 00:26:52,150 >> Nhưng nếu điều này nếu điều kiện không đánh giá đúng sự thật? 592 00:26:52,150 --> 00:26:55,790 Những gì nếu người dùng đã làm cho tôi của mình hoặc tên và ký túc xá và giới tính của mình? 593 00:26:55,790 --> 00:26:58,540 Rằng nếu điều kiện không sẽ đánh giá đúng sự thật, 594 00:26:58,540 --> 00:27:00,650 vì vậy tôi không nhấn thoát trong dòng 7. 595 00:27:00,650 --> 00:27:01,680 Vì vậy, những gì sẽ xảy ra? 596 00:27:01,680 --> 00:27:03,880 Và đây là những gì thú vị về PHP. 597 00:27:03,880 --> 00:27:07,470 >> Bạn có thể thả vào và ra khỏi của chế độ PHP, vậy để nói chuyện. 598 00:27:07,470 --> 00:27:10,985 Nếu bạn muốn có một số mã để thực thi, bạn có thể mở và đóng một thẻ PHP 599 00:27:10,985 --> 00:27:13,010 và đặt mã có giống như tôi đã làm ở đây. 600 00:27:13,010 --> 00:27:16,810 Ngay sau khi bạn đóng cửa thẻ PHP, máy chủ 601 00:27:16,810 --> 00:27:19,407 là chỉ cần đi nhổ ra bất cứ điều gì bạn đặt ở đó. 602 00:27:19,407 --> 00:27:21,740 Và quả thực, đây là một phần của thiết kế ban đầu của PHP, 603 00:27:21,740 --> 00:27:25,280 cho tốt hơn cho tồi tệ hơn, là này trộn lẫn các mã và đánh dấu 604 00:27:25,280 --> 00:27:25,920 ngôn ngữ. 605 00:27:25,920 --> 00:27:28,670 Và chúng ta sẽ thấy rằng điều này rất chuyển giao nhanh chóng thành một mớ hỗn độn. 606 00:27:28,670 --> 00:27:31,280 Và vì vậy chúng tôi sẽ làm tốt hơn điều này cuối cùng, nhưng chỉ 607 00:27:31,280 --> 00:27:35,620 nhận thấy sự dễ dàng mà tôi thực sự có thể thực hiện một số logic. 608 00:27:35,620 --> 00:27:37,440 >> Nhưng vẫn còn một chút underwhelming. 609 00:27:37,440 --> 00:27:41,210 Hãy cùng mở ra phiên bản hai Frosh tin nhắn tức thì, mà 610 00:27:41,210 --> 00:27:44,270 rõ ràng trình để register2.php. 611 00:27:44,270 --> 00:27:47,600 Vì vậy, tập tin này thực sự đi nhìn gần như giống nhau. 612 00:27:47,600 --> 00:27:50,780 Tôi sẽ đi đến Frosh nhắn tức thì 2. 613 00:27:50,780 --> 00:27:53,050 Nhưng trong Frosh nhắn tức thì 2, hãy xem những gì sẽ xảy ra. 614 00:27:53,050 --> 00:27:58,110 >> David, nhấp vào nút radio, như nó được gọi là; Matthews, không có đội trưởng. 615 00:27:58,110 --> 00:27:59,230 Đăng ký. 616 00:27:59,230 --> 00:28:00,130 Bạn đã được đăng ký. 617 00:28:00,130 --> 00:28:00,700 Không thực sự. 618 00:28:00,700 --> 00:28:02,574 Oh chờ đợi, chúng ta chỉ cần làm ví dụ mà, phải không? 619 00:28:02,574 --> 00:28:04,520 Tất cả các bên phải, stand by. 620 00:28:04,520 --> 00:28:06,602 Chúng tôi sẽ làm ba. 621 00:28:06,602 --> 00:28:08,560 Rõ ràng có điều gì đó về xảy ra với Gmail. 622 00:28:08,560 --> 00:28:09,600 Chúng tôi sẽ đạt được điều đó. 623 00:28:09,600 --> 00:28:11,900 >> Vì vậy, Frosh nhắn tức thì 3 trông như thế này. 624 00:28:11,900 --> 00:28:13,050 Không có khác nhau. 625 00:28:13,050 --> 00:28:19,850 Nhưng khi tôi làm David, nam, Matthews, và đăng ký, phiên bản thứ ba và cuối cùng này 626 00:28:19,850 --> 00:28:22,230 khiếu nại, khá đơn giản, bạn được đăng ký thực sự. 627 00:28:22,230 --> 00:28:23,560 Đó là loại phi vật chất. 628 00:28:23,560 --> 00:28:25,600 Nhưng tôi khẳng định với điều này phiên bản thứ ba và cuối cùng 629 00:28:25,600 --> 00:28:30,610 Bây giờ tôi đã tái tạo lại chính xác những gì của tôi bạn cùng phòng và tôi đã xây dựng cho các tin nhắn tức thì Frosh 630 00:28:30,610 --> 00:28:31,731 chương trình năm trước. 631 00:28:31,731 --> 00:28:32,480 Và nó đã được đơn giản. 632 00:28:32,480 --> 00:28:34,330 Không có cơ sở dữ liệu, không có bảng tính Excel. 633 00:28:34,330 --> 00:28:36,450 Nhưng quan trọng hơn, không có giấy hơn 634 00:28:36,450 --> 00:28:42,520 bởi vì những gì chúng tôi đã làm với chương trình này là để thực sự gửi email cho giám thị, người 635 00:28:42,520 --> 00:28:44,530 đã nhận được trước đây những điều này thông qua các hình thức. 636 00:28:44,530 --> 00:28:48,890 >> Và dường như chúng tôi đã lập trình này trong một cách như vậy mà khi ai đó đăng ký, 637 00:28:48,890 --> 00:28:52,470 Email tài khoản John Harvard của các proctor-- hoặc mình trong trường hợp này, 638 00:28:52,470 --> 00:28:55,960 John Harvard-- với những điều sau đây text-- "Người này chỉ được đăng ký." 639 00:28:55,960 --> 00:29:00,560 Tên là David, đội trưởng là trống; giới tính, nam giới; và ký túc xá, Matthews. 640 00:29:00,560 --> 00:29:01,560 >> Vì vậy, những gì xảy ra ở đó? 641 00:29:01,560 --> 00:29:05,360 Vâng, các tập tin trong câu hỏi ở đây rõ ràng là register3.php. 642 00:29:05,360 --> 00:29:09,080 Và nếu tôi mở này, bạn sẽ thấy cả sức mạnh của mã như thế này 643 00:29:09,080 --> 00:29:12,380 và cũng có thể, thẳng thắn, sự bất an của một hệ thống như email. 644 00:29:12,380 --> 00:29:16,290 Tôi vừa hiệu quả giả vờ được John Harvard theo cách sau. 645 00:29:16,290 --> 00:29:20,920 >> Tôi có thẻ php mở lên hàng đầu, mà chỉ nói ở đây có một số mã PHP. 646 00:29:20,920 --> 00:29:23,155 Xuống đây, hóa ra có các thư viện trong PHP. 647 00:29:23,155 --> 00:29:26,410 Bạn chỉ cần không cần phải bao gồm các tập tin tiêu đề càng nhiều. 648 00:29:26,410 --> 00:29:28,900 Bạn nhận được nhiều hơn với bồn rửa chén, vậy để nói chuyện. 649 00:29:28,900 --> 00:29:31,820 >> Nhưng lần này trong dòng 4, tôi làm muốn vào thư viện đặc biệt gọi là 650 00:29:31,820 --> 00:29:36,087 PHP bưu phẩm, đó là một cái gì đó bạn có thể cài đặt miễn phí trong nhiều hệ thống. 651 00:29:36,087 --> 00:29:37,920 Xuống đây tôi xác nhận nộp chỉ 652 00:29:37,920 --> 00:29:40,540 bằng cách kiểm tra đã cung cấp cho người sử dụng tôi tên, giới tính, và một ký túc xá. 653 00:29:40,540 --> 00:29:44,130 Và nếu như vậy, đi trước và nhanh chóng một bưu phẩm. 654 00:29:44,130 --> 00:29:47,020 >> Bạn có thể nghĩ về điều này như là một dòng mã mà chỉ phân bổ. 655 00:29:47,020 --> 00:29:48,950 Nó giống như malloc, nhưng đó là một chút gợi cảm 656 00:29:48,950 --> 00:29:51,790 trong đó bạn đề cập đến không chỉ malloc và một số số chung. 657 00:29:51,790 --> 00:29:55,030 Bạn nói cho tôi một trong những, cho tôi một cái mới trong số này. 658 00:29:55,030 --> 00:29:57,950 >> Và nếu bạn đã lập trình Java hoặc C ++ hoặc ngôn ngữ khác, 659 00:29:57,950 --> 00:29:59,130 bạn có thể đã nhìn thấy điều này. 660 00:29:59,130 --> 00:30:01,840 Nhưng ngắn hạn của nó, nếu không quen thuộc, dòng này 661 00:30:01,840 --> 00:30:05,410 đặt vào ký hiệu đô la email một cấu trúc đặc biệt gọi là 662 00:30:05,410 --> 00:30:08,731 một đối tượng đã được xây dựng trong chức năng email. 663 00:30:08,731 --> 00:30:10,355 Và trên thực tế, thông báo và cú pháp tương tự. 664 00:30:10,355 --> 00:30:11,900 >> Đây không phải là một con trỏ, mỗi se. 665 00:30:11,900 --> 00:30:13,990 PHP chỉ cần sử dụng cú pháp tương tự. 666 00:30:13,990 --> 00:30:17,660 Dòng này được nói sử dụng SMTP-- Simple Mail Transfer 667 00:30:17,660 --> 00:30:20,900 Nghị định thư, mà chỉ là giao thức được sử dụng để gửi thư. 668 00:30:20,900 --> 00:30:24,240 Đây là chỉ định sử dụng Máy chủ SMTP Harvard, mà 669 00:30:24,240 --> 00:30:25,830 là một nơi nào đó ở đây trong khuôn viên trường. 670 00:30:25,830 --> 00:30:28,480 >> Điều này được nói những gì TCP cổng số để nói chuyện, 671 00:30:28,480 --> 00:30:31,650 và tôi chỉ hiện ra điều đó bởi googling hoặc bằng cách yêu cầu bàn giúp đỡ. 672 00:30:31,650 --> 00:30:34,640 Và sau đó vì Harvard sử dụng một số an ninh hệ thống trên server-- email 673 00:30:34,640 --> 00:30:37,060 ít nhất để mã hóa giao thông giữa bạn và nó, 674 00:30:37,060 --> 00:30:41,380 mặc dù ai cũng có thể gửi cho it-- Tôi sẽ bật giao thức TLS 675 00:30:41,380 --> 00:30:42,710 để giữ an toàn này. 676 00:30:42,710 --> 00:30:44,730 >> Nhưng đây là nơi mà mọi thứ có được một chút đáng sợ. 677 00:30:44,730 --> 00:30:47,970 Tôi chỉ có thể tùy tiện nói rằng tôi jharvard, 678 00:30:47,970 --> 00:30:51,930 và tôi có thể chỉ tùy tiện gửi email cho bản thân mình ở đây. 679 00:30:51,930 --> 00:30:55,650 Và sau đó tôi có thể chỉ định một chủ đề với dòng này ở đây. 680 00:30:55,650 --> 00:30:58,460 >> Và điều này chỉ trông xấu xí, nhưng nó chỉ là một loạt các nối. 681 00:30:58,460 --> 00:31:04,480 Hóa ra PHP có một biểu tượng siêu hữu ích, như một số ngôn ngữ, các nhà điều hành chấm, 682 00:31:04,480 --> 00:31:07,340 mà chỉ theo nghĩa đen móc nối chuỗi sau khi chuỗi sau khi chuỗi, 683 00:31:07,340 --> 00:31:09,810 và bạn không cần phải malloc hoặc con số ra tổng chiều dài của chuỗi. 684 00:31:09,810 --> 00:31:10,820 Bạn chỉ cần làm điều đó. 685 00:31:10,820 --> 00:31:15,220 Và thực sự, bởi vì tôi concatenating trong tất cả những điều này với những dấu chấm, 686 00:31:15,220 --> 00:31:18,330 đó là lý do tại sao các email tôi gửi trông như nó đã làm. 687 00:31:18,330 --> 00:31:20,610 >> Và rồi cuối cùng ở đây, tôi gửi mail. 688 00:31:20,610 --> 00:31:22,580 Vì vậy, nếu điều này là sai, Tôi chỉ sẽ chết, 689 00:31:22,580 --> 00:31:25,680 mà là một chức năng mà chỉ cần in để màn hình một số thông báo lỗi. 690 00:31:25,680 --> 00:31:29,170 Nhưng đó là, trên thực tế, gọi hàm gửi. 691 00:31:29,170 --> 00:31:31,780 Nếu không, nếu tất cả những điều này không thành công, nó chuyển hướng tôi trở lại đây. 692 00:31:31,780 --> 00:31:34,050 >> Và tại sao tôi thấy rằng Tôi đã đăng ký thực sự? 693 00:31:34,050 --> 00:31:36,110 Vâng, nó đã xảy ra ngay ở đây. 694 00:31:36,110 --> 00:31:38,170 Vì vậy, tôi mang lại điều này cho một vài lý do. 695 00:31:38,170 --> 00:31:41,542 >> Một, điều này là chính xác như thế nào nếu bạn xây dựng một số trang web cho một dự án cuối cùng 696 00:31:41,542 --> 00:31:44,000 hoặc cho thế giới thực, đây là làm thế nào bạn gửi email nhắc nhở 697 00:31:44,000 --> 00:31:45,924 để khách hàng của bạn hoặc thuê bao của bạn. 698 00:31:45,924 --> 00:31:47,590 Đây là cách bạn gửi lời nhắc mật khẩu. 699 00:31:47,590 --> 00:31:50,760 Đây là cách bạn gửi tin nhắn người rằng họ có một Facebook mới 700 00:31:50,760 --> 00:31:52,990 tin cấp phát hoặc một cái gì đó như thế. 701 00:31:52,990 --> 00:31:55,010 >> Nhưng nó cũng nói lên thực tế là điều này có thể 702 00:31:55,010 --> 00:31:58,160 đã rất tốt từ Davin hoặc bất cứ ai khác. 703 00:31:58,160 --> 00:32:00,567 Và tôi nói loại này với một nụ cười vì tôi 704 00:32:00,567 --> 00:32:03,400 khá chắc chắn những gì đang diễn ra thông qua nhiều của tâm trí của bạn vào thời điểm này. 705 00:32:03,400 --> 00:32:11,910 Nhưng đây là một trong những người làm như tôi nói, không phải là tôi làm loại của sự vật, 706 00:32:11,910 --> 00:32:14,480 bởi vì nó là tầm thường để giả mạo email như thế này. 707 00:32:14,480 --> 00:32:16,480 Tuy nhiên, như bạn có thể nhìn thấy hoặc đọc trong Crimson, 708 00:32:16,480 --> 00:32:18,271 muộn nó cũng khá tầm thường cho người dân 709 00:32:18,271 --> 00:32:20,050 để theo dõi chúng trở lại một số xuất xứ. 710 00:32:20,050 --> 00:32:23,790 Và hỏi tôi một thời gian, có lẽ tại CS50 ăn trưa, làm thế nào tôi đầu tiên 711 00:32:23,790 --> 00:32:27,080 làm quen rất chặt chẽ gần như đến nhiều năm ban ed 712 00:32:27,080 --> 00:32:30,890 trước, khi tôi phát hiện ra như thế nào internet làm việc. 713 00:32:30,890 --> 00:32:36,940 Vì vậy, trong bất kỳ case-- hơi sau khi hội đồng quản trị ed đã làm. 714 00:32:36,940 --> 00:32:42,300 >> Vì vậy, trong mọi trường hợp, có một bó toàn bộ các siêu toàn thể, 715 00:32:42,300 --> 00:32:45,960 như chúng được gọi ở đây, một trong số đó chúng tôi saw-- đô la dấu gạch dưới bài viết. 716 00:32:45,960 --> 00:32:49,530 Có một đối tác được gọi là get, đó là nơi mà công cụ từ một URL 717 00:32:49,530 --> 00:32:50,690 kết thúc đi. 718 00:32:50,690 --> 00:32:54,051 Và có một bó toàn bộ những người khác, phiên too-- và máy chủ và cookie. 719 00:32:54,051 --> 00:32:55,800 Chúng tôi sẽ trở lại cookie một thời gian khác, 720 00:32:55,800 --> 00:33:01,340 nhưng phiên là loại mát mẻ bởi vì ngay now-- lên cho đến khi now-- 721 00:33:01,340 --> 00:33:06,350 tất cả mọi thứ chúng tôi đã thực hiện với một trình duyệt web là loại không quốc tịch, vậy để nói chuyện. 722 00:33:06,350 --> 00:33:10,060 Tôi có thể nhấp vào xung quanh, truy cập các tập tin trên máy chủ, một cái gì đó 723 00:33:10,060 --> 00:33:13,500 xảy ra trên màn hình, nhưng sau đó đóng kết nối. 724 00:33:13,500 --> 00:33:17,450 Internet Explorer hoặc Biểu tượng Firefox ngừng quay 725 00:33:17,450 --> 00:33:20,340 và bạn chỉ cần xem những gì rằng trang web này. 726 00:33:20,340 --> 00:33:23,530 >> Vì vậy, HTTP là quốc tịch trong đó một khi nó làm cho một kết nối, 727 00:33:23,530 --> 00:33:25,050 được một số dữ liệu, đó là nó. 728 00:33:25,050 --> 00:33:29,940 Không có kết nối nhiều hơn, không giống như Skype, không giống như FaceTime, Gchat không giống, mà 729 00:33:29,940 --> 00:33:32,180 duy trì một hằng số kết nối đến máy chủ. 730 00:33:32,180 --> 00:33:34,650 Các trang web về cơ bản là ngắt kết nối, mặc dù chúng tôi sẽ 731 00:33:34,650 --> 00:33:36,630 xem trước khi dài như thế nào chúng ta có thể mô phỏng những điều 732 00:33:36,630 --> 00:33:39,300 như Facebook chat và Gchat, mà duy trì illusion-- 733 00:33:39,300 --> 00:33:41,680 hoặc thực sự làm duy trì một kết nối liên tục sử dụng 734 00:33:41,680 --> 00:33:43,270 công nghệ hiện đại hơn. 735 00:33:43,270 --> 00:33:49,000 >> Nhưng nếu tôi đi đến, nói, counter.php, đây là một ví dụ đơn giản, 736 00:33:49,000 --> 00:33:52,700 như chúng ta sẽ thấy, mà hiện cũng Tôi đã đến thăm trang web không thời gian. 737 00:33:52,700 --> 00:33:56,790 Nhưng nếu tôi chỉ đơn giản là tải lại trang, nó bằng cách nào đó biết tôi đã ở đây trước. 738 00:33:56,790 --> 00:33:58,840 Nếu tôi lại một lần nữa, nó biết tôi đã ở đây trước. 739 00:33:58,840 --> 00:34:01,100 Và một lần nữa và một lần nữa và một lần nữa và một lần nữa. 740 00:34:01,100 --> 00:34:03,610 >> Vì vậy, có một số cộng plussing xảy ra, nhưng thông báo 741 00:34:03,610 --> 00:34:07,090 điều nhỏ quay bao giờ nên một thời gian ngắn lên hàng đầu và sau đó ngắt kết nối, 742 00:34:07,090 --> 00:34:11,179 do đó, nó không giống như tôi có một hằng số kết nối với thiết bị của tôi. 743 00:34:11,179 --> 00:34:16,929 Vâng, nếu tôi đi vào counter.php, thông báo một cách đơn giản nó là. 744 00:34:16,929 --> 00:34:19,080 Lần đầu tiên tôi gọi đây là đặc biệt chức năng rằng chúng ta sẽ sớm 745 00:34:19,080 --> 00:34:21,513 bắt đầu dùng cho các cấp được gọi là phiên đầu. 746 00:34:21,513 --> 00:34:22,179 Bắt đầu phiên. 747 00:34:22,179 --> 00:34:25,095 >> Và một phiên từ nay về sau chỉ là sẽ là một thùng, giống như một khu mua sắm 748 00:34:25,095 --> 00:34:28,120 giỏ hàng trong đó bạn có thể đặt giá trị và loại tin tưởng như một lập trình viên 749 00:34:28,120 --> 00:34:31,590 rằng họ sẽ có mặt ở đây khi người sử dụng mà đến back-- một giây 750 00:34:31,590 --> 00:34:35,670 sau đó, một giờ sau đó, thậm chí một năm sau đó, miễn là anh ta hoặc cô ấy không rõ ràng 751 00:34:35,670 --> 00:34:37,602 cookie của họ, như chúng ta cuối cùng sẽ thấy. 752 00:34:37,602 --> 00:34:39,310 Và bây giờ tôi chỉ có một nếu điều kiện ở đây. 753 00:34:39,310 --> 00:34:44,679 Vì vậy, nếu các khóa sau, được gọi là truy cập, được thiết lập bên trong 754 00:34:44,679 --> 00:34:49,210 của siêu này global-- băm này bảng, nếu bạn will-- gọi là phiên, 755 00:34:49,210 --> 00:34:53,350 sau đó đi trước và lấy giá trị từ suy nghĩ session-- 756 00:34:53,350 --> 00:34:55,250 điều này như là một khu mua sắm cart-- và lưu nó 757 00:34:55,250 --> 00:34:57,680 trong một biến tạm thời được gọi là truy cập. 758 00:34:57,680 --> 00:35:02,240 >> Nếu không, nếu đó là giá trị truy cập không được đặt trong cái gọi là giỏ mua hàng, 759 00:35:02,240 --> 00:35:04,430 chỉ khởi tạo nó để 0. 760 00:35:04,430 --> 00:35:09,830 Cuối cùng, xuống đây, đi và đưa trở lại vào giỏ mua hàng hoặc phiên 761 00:35:09,830 --> 00:35:13,000 giá trị của truy cập 1. 762 00:35:13,000 --> 00:35:16,730 Vì vậy, nó quay ra rằng điều này here-- thùng chứa đặc biệt 763 00:35:16,730 --> 00:35:20,355 trong đó, một lần nữa, là một trong những liên quan mảng, một mảng mà bạn có thể chỉ mục 764 00:35:20,355 --> 00:35:25,010 vào các từ thay vì numbers-- vẫn còn ngay cả sau khi người sử dụng đi xa. 765 00:35:25,010 --> 00:35:26,510 Một lần nữa, tôi sẽ quay trở lại trang hiện nay. 766 00:35:26,510 --> 00:35:28,400 Nó được một phút hoặc lâu hơn. 767 00:35:28,400 --> 00:35:31,300 Nhưng nó nhớ rằng tôi đã đã ở đây 19 lần trước đây. 768 00:35:31,300 --> 00:35:32,740 Đây là lần thứ 20 của tôi. 769 00:35:32,740 --> 00:35:36,560 >> Và vì vậy đây sẽ là chìa khóa để thực hiện bất kỳ trang web mà nhớ 770 00:35:36,560 --> 00:35:40,640 rằng bạn đang đăng nhập, mà bạn đặt một cái gì đó đen trong giỏ hàng của bạn 771 00:35:40,640 --> 00:35:43,902 để mua hoặc bạn có một số số tin nhắn chưa giải quyết. 772 00:35:43,902 --> 00:35:45,610 Bất cứ lúc nào bạn muốn ghi nhớ thông tin, 773 00:35:45,610 --> 00:35:48,130 chúng ta sẽ thấy PHP rằng, giống như một số ngôn ngữ khác, 774 00:35:48,130 --> 00:35:53,640 cho chúng ta ảo tưởng này của nhà nước mặc dù, như bạn sẽ thấy trong PSET 6, 775 00:35:53,640 --> 00:35:57,642 như bạn đang thực hiện các yêu cầu HTTP từ máy khách đến máy chủ, đó là nó. 776 00:35:57,642 --> 00:35:59,850 Một khi bạn nhận lại rằng phản ứng, không có gì là 777 00:35:59,850 --> 00:36:01,790 trở về từ máy chủ bằng cách mặc định. 778 00:36:01,790 --> 00:36:03,820 Nhưng chúng tôi sẽ xem làm thế nào để làm việc xung quanh đó. 779 00:36:03,820 --> 00:36:07,430 >> Vâng bây giờ, chúng ta hãy cố gắng làm sạch này lên một chút. 780 00:36:07,430 --> 00:36:09,470 Chúng tôi đã nhìn thấy một vài ví dụ khác nhau đó. 781 00:36:09,470 --> 00:36:12,250 Oh, và như một sang một bên, cho những người quen thuộc hoặc không quen thuộc, 782 00:36:12,250 --> 00:36:14,230 lý do mà Frosh nhắn tức thì ví dụ đi 783 00:36:14,230 --> 00:36:18,060 từ tìm kiếm thực sự xấu xí để slightly-- tốt, 784 00:36:18,060 --> 00:36:23,160 vẫn ugly-- nhẹ ít xấu xí mặc dù vẫn còn xấu xí 785 00:36:23,160 --> 00:36:25,230 là bởi vì nếu chúng ta nhìn vào mã nguồn ở đây, 786 00:36:25,230 --> 00:36:28,240 nó quay ra rằng tôi có điều này ở đầu của tập tin. 787 00:36:28,240 --> 00:36:32,570 >> Chỉ ra rằng bootstrap là một trong nhiều thư viện tự do có sẵn trên 788 00:36:32,570 --> 00:36:37,140 rằng không tồn tại cho các ngôn ngữ lập trình luôn luôn, nhưng đối với CSS hoặc JavaScript 789 00:36:37,140 --> 00:36:39,190 hoặc HTML hoặc bất kỳ số lượng ngôn ngữ. 790 00:36:39,190 --> 00:36:42,160 >> Và những người này here-- ban đầu ra 791 00:36:42,160 --> 00:36:44,730 của Twitter-- chỉ có một bó toàn bộ phong cách. 792 00:36:44,730 --> 00:36:47,360 Đó là một tập tin lớn ở đây có ai đó đã viết, 793 00:36:47,360 --> 00:36:51,020 hoặc một ai đó đã viết, trong thời gian đó xác định màu sắc và định dạng 794 00:36:51,020 --> 00:36:53,740 và không có điều gì để tôi có thể loại vay cú pháp của họ 795 00:36:53,740 --> 00:36:56,157 và không phải tìm ra làm thế nào để đặt ra hình thức của tôi. 796 00:36:56,157 --> 00:36:57,990 Điều này cũng được minified do đó, một máy tính có thể 797 00:36:57,990 --> 00:37:00,560 hiểu nó, nhưng không thiết phải là một con người. 798 00:37:00,560 --> 00:37:03,050 Vì vậy, đó chỉ là lý do tại sao cách điệu có thay đổi. 799 00:37:03,050 --> 00:37:05,450 >> Nhưng bây giờ chúng ta làm tốt hơn về thiết kế, 800 00:37:05,450 --> 00:37:07,490 bởi vì nếu chúng tôi ở lại xuống con đường này quá lâu, 801 00:37:07,490 --> 00:37:11,290 mã của chúng tôi sẽ nhận được lộn xộn và hỗn độn. 802 00:37:11,290 --> 00:37:13,040 Vì vậy, hãy tập trung vào những ví dụ ở đây. 803 00:37:13,040 --> 00:37:15,090 Cuối cùng cho ngày hôm nay. 804 00:37:15,090 --> 00:37:18,720 >> Vì vậy, đây là một siêu đơn giản phiên bản 1.0 của trang web của CS50. 805 00:37:18,720 --> 00:37:21,250 Nó chỉ có các liên kết đến bài giảng và giáo trình, 806 00:37:21,250 --> 00:37:25,490 và nó sử dụng rằng danh sách không có thứ tự tag-- thẻ UL mà chúng ta sử dụng thời gian qua. 807 00:37:25,490 --> 00:37:28,800 Và nếu trên thực tế, nếu tôi mở View Page Source, 808 00:37:28,800 --> 00:37:31,710 bạn sẽ thấy rằng đây là thực sự, HTML thực sự đơn giản. 809 00:37:31,710 --> 00:37:35,460 Và trên thực tế, mặc dù đây là một tập tin PHP bên dưới mui xe, 810 00:37:35,460 --> 00:37:38,620 nó vẫn chỉ nhổ nước bọt chỉ ra HTML cho bây giờ. 811 00:37:38,620 --> 00:37:41,312 >> Vì vậy, nếu tôi bấm vào bài giảng, chúng ta thấy điều này xảy ra. 812 00:37:41,312 --> 00:37:43,020 Và nếu tôi bấm vào tuần bằng không, chúng ta thấy điều này. 813 00:37:43,020 --> 00:37:44,920 Và nếu tôi bấm vào Thứ tư, chúng ta thấy điều này. 814 00:37:44,920 --> 00:37:47,900 Và điều này dường như là PDF của các slide từ ngày hôm đó. 815 00:37:47,900 --> 00:37:52,020 Tất cả tôi đã thực hiện là liên kết với một neo thẻ để URL này ở đây. 816 00:37:52,020 --> 00:37:55,400 >> Vì vậy, đây chỉ là để nói đây là một khá phiên bản đơn giản của trang web của CS50. 817 00:37:55,400 --> 00:37:56,790 Hãy xem cách nó được thực hiện. 818 00:37:56,790 --> 00:38:01,240 Nếu tôi đi vào thư mục mvc0, chúng ta sẽ thấy một vài file. 819 00:38:01,240 --> 00:38:03,250 Một là một README, vì vậy nếu một số trong số này là quá nhanh, 820 00:38:03,250 --> 00:38:05,166 bạn chỉ có thể poke xung quanh nhàn nhã hơn sau đó. 821 00:38:05,166 --> 00:38:07,930 Và thông báo ở đây là một file index.php. 822 00:38:07,930 --> 00:38:09,960 Nó chỉ ra rằng nếu bạn mình, con người, 823 00:38:09,960 --> 00:38:14,460 không chỉ định một tên cuối cùng trong một URL, máy chủ web thường 824 00:38:14,460 --> 00:38:17,010 suy luận một số tên mặc định cho bạn. 825 00:38:17,010 --> 00:38:20,060 Một chỉ số chấm một cái gì đó nói chung là mặc định. 826 00:38:20,060 --> 00:38:23,010 >> Vì vậy, đó là lý do tại sao một khoảnh khắc trước khi tôi đến thăm URL này ở đây, 827 00:38:23,010 --> 00:38:26,750 không có tên tập tin, không có tập tin mở rộng, không có thời gian trong URL. 828 00:38:26,750 --> 00:38:29,710 Nó chỉ biết bằng cách nào đó kỳ diệu để tìm index.php. 829 00:38:29,710 --> 00:38:30,870 Nó chỉ là một ước. 830 00:38:30,870 --> 00:38:32,360 Có thể được gọi là bất cứ điều gì. 831 00:38:32,360 --> 00:38:35,110 >> Vì vậy, nếu bây giờ tôi đi vào index.php, bạn sẽ thấy 832 00:38:35,110 --> 00:38:37,100 đó, chúng ta hãy indeed-- thoát khỏi những ý kiến 833 00:38:37,100 --> 00:38:39,500 ở đây vì có thực sự không có gì thú vị để it-- 834 00:38:39,500 --> 00:38:41,579 này chỉ là cứng mã hoá HTML. 835 00:38:41,579 --> 00:38:43,370 Vì vậy, đó là phù hợp, Mặc dù vậy, với tuyên bố của tôi 836 00:38:43,370 --> 00:38:45,230 mà bạn có thể trộn lộn HTML và PHP. 837 00:38:45,230 --> 00:38:48,060 Không có thực tế lập trình logic trong đây. 838 00:38:48,060 --> 00:38:51,030 >> Và các tập tin khác là khá nhiều chỉ là nhàm chán. 839 00:38:51,030 --> 00:38:56,240 Nó chỉ là mã hóa cứng một tuần đây để tuần một m và một tuần w, 840 00:38:56,240 --> 00:38:57,510 vào ngày Thứ Hai và Thứ Tư. 841 00:38:57,510 --> 00:39:01,890 Và sau đó nếu tôi mở ra tuần không, nhận thấy nó gần như giống hệt nhau. 842 00:39:01,890 --> 00:39:03,320 >> Và đó là loại một takeaway chính. 843 00:39:03,320 --> 00:39:06,180 Chú ý như thế nào dư thừa này là. 844 00:39:06,180 --> 00:39:10,710 Những tập tin này hầu như không thay đổi, nhưng tôi kéo một trong những sao chép / dán việc làm 845 00:39:10,710 --> 00:39:13,420 nơi tôi lấy một file-- lẽ trong tuần zero-- sao chép nó 846 00:39:13,420 --> 00:39:16,320 khi một tuần đến xung quanh, và tinh chỉnh một vài giá trị. 847 00:39:16,320 --> 00:39:18,590 Có lẽ chúng tôi sẽ có thể để làm tốt hơn thế này. 848 00:39:18,590 --> 00:39:21,800 >> Vì vậy, chúng ta hãy quay trở lại để MVC và đi vào phiên bản một. 849 00:39:21,800 --> 00:39:24,810 Và nhận thấy tôi đã có một vài tác phẩm, bởi vì những gì 850 00:39:24,810 --> 00:39:29,870 đã được phổ biến đến tất cả các tập tin chỉ là một thời điểm ago-- nếu tôi quay trở lại phiên bản 0, 851 00:39:29,870 --> 00:39:32,600 chúng ta hãy quay trở lại vào chỉ số, và chỉ postulate-- 852 00:39:32,600 --> 00:39:36,090 một khi tôi thoát khỏi những comments-- những gì một phần của trang này 853 00:39:36,090 --> 00:39:40,072 có lẽ là ở mỗi một trong những tập tin của tôi? 854 00:39:40,072 --> 00:39:40,780 Chỉ cần gọi nó ra. 855 00:39:40,780 --> 00:39:44,620 Những dòng được nhân đôi có lẽ trên tất cả các trang? 856 00:39:44,620 --> 00:39:45,120 Yeah? 857 00:39:45,120 --> 00:39:46,110 >> HỌC SINH: [không nghe được]. 858 00:39:46,110 --> 00:39:47,660 >> DAVID J. Malan: từ 1 đến 9. 859 00:39:47,660 --> 00:39:48,720 Yeah, hoàn toàn. 860 00:39:48,720 --> 00:39:52,080 Từ 1 đến 9, ngoại trừ 8 thay đổi một chút vì CS50 861 00:39:52,080 --> 00:39:54,650 trở thành bài giảng hay tuần không hay một cái gì đó. 862 00:39:54,650 --> 00:39:55,970 Nhưng gần như giống hệt nhau. 863 00:39:55,970 --> 00:39:58,657 Vì vậy, tất cả những thứ này chỉ là loại sao chép và dán. 864 00:39:58,657 --> 00:40:00,490 Và có một vài dòng khác tôi có thể nghĩ 865 00:40:00,490 --> 00:40:05,000 đó có lẽ là giống hệt nhau trên tất cả các tập tin. 866 00:40:05,000 --> 00:40:06,315 >> HỌC SINH: 12 và 13. 867 00:40:06,315 --> 00:40:07,190 DAVID J. Malan: Yeah. 868 00:40:07,190 --> 00:40:11,220 Chắc chắn, 12, 13, và 14 có lẽ, chỉ vì những thứ thú vị 869 00:40:11,220 --> 00:40:15,460 đang xảy ra trên đường 11 và 10, do đó nó sẽ có vẻ. 870 00:40:15,460 --> 00:40:18,350 Vì vậy, chúng ta hãy nhìn vào phiên bản 1, mà cố gắng để cải thiện về điều này. 871 00:40:18,350 --> 00:40:24,020 Trong phiên bản 1 của example-- MVC này chúng ta sẽ giải thích những gì MVC phương tiện trong một moment-- 872 00:40:24,020 --> 00:40:27,420 nếu tôi đi vào chỉ số, nó loại trông một chút bối rối bây giờ. 873 00:40:27,420 --> 00:40:28,880 Nó không hoàn toàn đơn giản như trước đây. 874 00:40:28,880 --> 00:40:30,906 >> Nhưng một khi bạn bắt đầu đọc nó một cách cẩn thận, đó là 875 00:40:30,906 --> 00:40:32,530 khá đơn giản những gì nó làm. 876 00:40:32,530 --> 00:40:34,397 Rõ ràng dòng 1 và dòng 8 đã thay thế 877 00:40:34,397 --> 00:40:37,230 tất cả những thứ bạn chỉ identified-- mặc dù chỉ cho các biện pháp tốt, 878 00:40:37,230 --> 00:40:41,900 Tôi rời ULS có chỉ trong trường hợp một số ngày không có một danh sách những thứ. 879 00:40:41,900 --> 00:40:47,860 Và như vậy đòi hỏi phải là loại giống như bảng bao gồm trong C. Nó copy và paste 880 00:40:47,860 --> 00:40:50,470 các nội dung hiệu quả ngay tại đây vào tập tin này. 881 00:40:50,470 --> 00:40:53,650 >> Vì vậy, trong header.php, như bạn có thể suy ra từ tên của nó, 882 00:40:53,650 --> 00:40:55,330 sẽ là tiêu đề của trang. 883 00:40:55,330 --> 00:40:57,110 Đó là loại mồ côi ở đây. 884 00:40:57,110 --> 00:41:01,820 Nó chỉ có đầu vào nó, nhưng không có nội dung chi tiết dưới đây. 885 00:41:01,820 --> 00:41:05,070 >> Và nếu tôi nhìn vào chân trong khi đó, đó là các tập tin khác mentioned-- 886 00:41:05,070 --> 00:41:08,830 này thậm chí còn ít thú vị, nhưng một lần nữa, nó phổ biến đến tất cả mọi thứ. 887 00:41:08,830 --> 00:41:10,250 Vì vậy, đây là chân. 888 00:41:10,250 --> 00:41:11,300 Đây là tiêu đề. 889 00:41:11,300 --> 00:41:13,950 Đây là tập tin đó là thay đổi, vậy tại sao không 890 00:41:13,950 --> 00:41:18,140 cố gắng yếu tố ra sự tương đồng với hai dòng này ở đây? 891 00:41:18,140 --> 00:41:20,090 >> Nhưng chúng ta có thể làm sạch này lên một chút nữa. 892 00:41:20,090 --> 00:41:23,260 Tôi sẽ đi trước và mở ra phiên bản hai nơi 893 00:41:23,260 --> 00:41:27,106 chúng ta sẽ thấy rằng có một tập tin mới, helpers.php. 894 00:41:27,106 --> 00:41:28,610 Chúng tôi sẽ xem những gì mà là trong một thời điểm. 895 00:41:28,610 --> 00:41:30,930 Hãy đi đến chỉ số, như điểm vào như trước. 896 00:41:30,930 --> 00:41:35,230 >> Và bây giờ nhận ra rằng tôi đang yêu cầu helpers.php, không tiêu đề hay chân trang. 897 00:41:35,230 --> 00:41:41,720 Nhưng những người giúp đỡ là loại thích helpers.c và helpers.h từ PSET 2 898 00:41:41,720 --> 00:41:46,150 hoặc PSET 3 từ lâu khi bạn thực sự đã tìm kiếm và tìm cho PSET đó, 899 00:41:46,150 --> 00:41:50,950 và bạn đã có tất cả các mã của bạn để phân loại và tìm kiếm trong một tập tin riêng biệt. 900 00:41:50,950 --> 00:41:52,510 Đó là những gì đang xảy ra ở đây. 901 00:41:52,510 --> 00:41:54,390 >> Và giờ đây, dòng 3 hơi khác một chút. 902 00:41:54,390 --> 00:41:55,920 Và nó chỉ là một dòng. 903 00:41:55,920 --> 00:41:57,950 Để làm điều này nhiều hơn rõ ràng, tôi có thể chỉ 904 00:41:57,950 --> 00:42:01,820 làm điều này để được phong cách phù hợp với mọi thứ khác chúng tôi đã thực hiện. 905 00:42:01,820 --> 00:42:04,130 Nhưng đó không phải là thực sự thay đổi các chức năng. 906 00:42:04,130 --> 00:42:05,880 Nó chỉ là một dòng mã thực sự. 907 00:42:05,880 --> 00:42:09,010 >> Rõ ràng, có một chức năng một nơi nào đó gọi là làm cho tiêu đề, 908 00:42:09,010 --> 00:42:11,420 và đây là nơi mà mọi thứ nhận được khá mạnh mẽ. 909 00:42:11,420 --> 00:42:17,040 Chú ý bên trong các dấu ngoặc của nó là những gì phần khác của cú pháp? 910 00:42:17,040 --> 00:42:19,780 911 00:42:19,780 --> 00:42:23,350 Đây có thể là một chút khó khăn để nói, nhưng nhận thấy there's-- tôi sẽ đặt một số màu trắng 912 00:42:23,350 --> 00:42:24,300 không gian. 913 00:42:24,300 --> 00:42:25,530 Có dấu ngoặc vuông. 914 00:42:25,530 --> 00:42:29,700 >> Và dấu ngoặc vuông, chúng tôi thấy một chút trước trong bối cảnh mảng kết hợp, 915 00:42:29,700 --> 00:42:31,580 đó là, một lần nữa, giống như bảng băm. 916 00:42:31,580 --> 00:42:36,230 Và nếu bạn nghĩ rằng bây giờ đến C, thứ tự của các đối số vào một chức năng 917 00:42:36,230 --> 00:42:37,570 phải luôn luôn giống nhau. 918 00:42:37,570 --> 00:42:41,146 Bạn phải nhớ những gì đặt x is--, y, z hoặc z, y, x-- 919 00:42:41,146 --> 00:42:44,020 và bạn phải luôn luôn cung cấp cho họ theo thứ tự hoặc xem chúng 920 00:42:44,020 --> 00:42:45,100 nếu bạn đã quên. 921 00:42:45,100 --> 00:42:51,140 >> Nhưng điều này có vẻ là một cách thông minh đi qua một giá trị quan trọng tùy ý 922 00:42:51,140 --> 00:42:55,840 cặp theo đó tiêu đề là tên của một cuộc tranh cãi trong trường hợp này 923 00:42:55,840 --> 00:42:58,334 và CS50 là giá trị của nó. 924 00:42:58,334 --> 00:43:00,250 Và thực tế là tôi có các dấu ngoặc vuông 925 00:43:00,250 --> 00:43:02,560 ở đây có nghĩa là tôi có thể cũng vượt qua trong một cái gì đó 926 00:43:02,560 --> 00:43:07,550 giống như một tuần là 0 hoặc 1 hoặc 2 hoặc 3. 927 00:43:07,550 --> 00:43:10,550 Vì vậy, chúng tôi đã tham số chức năng này theo cách như vậy 928 00:43:10,550 --> 00:43:15,180 nó có thể mất nhiều đầu vào, nhưng bây giờ nó chỉ là một. 929 00:43:15,180 --> 00:43:20,060 >> Nếu bây giờ tôi đi vào helpers.php, nhận thấy những gì nó làm. 930 00:43:20,060 --> 00:43:22,030 Đây là một chút các chức năng mới, 931 00:43:22,030 --> 00:43:24,190 nhưng bây giờ chỉ mất trên niềm tin rằng đây là 932 00:43:24,190 --> 00:43:26,570 cú pháp mà bạn định nghĩa một hàm trong PHP. 933 00:43:26,570 --> 00:43:27,840 Bạn có nghĩa là nói chức năng. 934 00:43:27,840 --> 00:43:30,090 Bạn không chỉ định trở lại gõ, và đó là phù hợp 935 00:43:30,090 --> 00:43:33,880 với chi tiết biến trước đó nơi mà bạn không thực sự gõ mạnh. 936 00:43:33,880 --> 00:43:35,650 >> Điều này chỉ quy định cụ thể rằng, theo mặc định, điều này 937 00:43:35,650 --> 00:43:37,460 có một liên kết mảng như một tham số. 938 00:43:37,460 --> 00:43:38,210 Và bạn biết gì không? 939 00:43:38,210 --> 00:43:41,450 Nếu người dùng không vượt qua một trong, giả định một giá trị mặc định. 940 00:43:41,450 --> 00:43:44,680 >> Đây là một tính năng mà C không có cho chúng ta, đó là tốt đẹp, bởi vì bây giờ 941 00:43:44,680 --> 00:43:46,430 dữ liệu, ngay cả khi bạn không cho nó bất cứ điều gì, 942 00:43:46,430 --> 00:43:49,300 là có được một mảng nhưng một một sản phẩm nào. 943 00:43:49,300 --> 00:43:51,860 Và như một sang một bên, chiết xuất chỉ làm một cái gì đó sôi nổi 944 00:43:51,860 --> 00:43:56,380 nơi mà nó có tất cả các phím từ này mảng kết hợp, tất cả những điều 945 00:43:56,380 --> 00:43:59,950 bạn có thể đặt trong dấu ngoặc vuông, và tạo ra các biến trong số họ 946 00:43:59,950 --> 00:44:06,270 để cuối cùng chúng ta có thể truy cập để chúng trong footet.php và header.php. 947 00:44:06,270 --> 00:44:08,950 Đó là một chút trừu tượng, vì vậy hãy để tôi điểm này ra. 948 00:44:08,950 --> 00:44:12,990 >> Trong index.php, thông báo rằng tôi đi qua trong một cặp giá trị quan trọng của tiêu đề 949 00:44:12,990 --> 00:44:14,850 với một giá trị của CS50. 950 00:44:14,850 --> 00:44:18,660 Nếu tôi bây giờ nhìn vào helpers.php, nhận thấy rằng RenderHeader 951 00:44:18,660 --> 00:44:23,870 được chiết xuất dữ liệu mà tôi đang đi qua trong, và sau đó yêu cầu header.php. 952 00:44:23,870 --> 00:44:27,970 Sắp xếp của một người đàn ông của người nghèo những gì tôi đã làm là thực hiện tại những điều sau đây. 953 00:44:27,970 --> 00:44:31,720 >> Nếu tôi mở header.php, thông báo rằng tôi đã không còn cứng 954 00:44:31,720 --> 00:44:34,890 mã hóa các CS50 từ trong tập tin tiêu đề này. 955 00:44:34,890 --> 00:44:39,310 Tôi đã đặt này phải thừa nhận là tàn nhẫn chức năng đặt tên, HTML ký tự đặc biệt, 956 00:44:39,310 --> 00:44:40,170 trong đó. 957 00:44:40,170 --> 00:44:41,640 Nhưng cần chú ý những gì tôi đã làm. 958 00:44:41,640 --> 00:44:44,240 Tôi đã mở HTML. 959 00:44:44,240 --> 00:44:47,420 Sau đó tôi có mở đầu và tiêu đề mở. 960 00:44:47,420 --> 00:44:52,380 >> Và sau đó bên trong của tiêu đề mở và thẻ gần, tôi có một chút mã PHP. 961 00:44:52,380 --> 00:44:56,670 Và đây là một tốt đẹp, nhưng cú pháp, mà chỉ có nghĩa là echo ra. 962 00:44:56,670 --> 00:44:59,840 Nó có nghĩa là this-- echo following-- 963 00:44:59,840 --> 00:45:01,910 nhưng điều này là hấp dẫn hơn để viết. 964 00:45:01,910 --> 00:45:05,000 Echo ra tiêu đề đó là được thông qua trong. 965 00:45:05,000 --> 00:45:07,560 >> Nhưng điều gì làm bạn nghĩ rằng HTML đặc biệt char là tất cả về, 966 00:45:07,560 --> 00:45:10,590 đặc biệt là nếu bạn có một số kinh nghiệm trước khi HTML? 967 00:45:10,590 --> 00:45:14,050 Những gì nhân vật có thể là nguy hiểm để vượt qua trong một trang 968 00:45:14,050 --> 00:45:17,980 nơi bạn đang tự động tạo ra các trang web với mã như thế này? 969 00:45:17,980 --> 00:45:21,370 970 00:45:21,370 --> 00:45:24,650 Hãy để tôi đi đến tập tin này, phiên bản hai, và xem nếu tôi không có thể gây ra này. 971 00:45:24,650 --> 00:45:26,210 >> Phiên bản hai là điều này. 972 00:45:26,210 --> 00:45:28,510 Và nhận thấy tất cả mọi thứ là tốt, làm việc tốt. 973 00:45:28,510 --> 00:45:35,280 Nhưng giả sử tôi đi vào index.php và Tôi đã xác định rằng tiêu đề của trang của tôi 974 00:45:35,280 --> 00:45:36,630 không phải là CS50. 975 00:45:36,630 --> 00:45:44,930 Đó là mở khung kịch bản cảnh báo hello thế giới, gần báo duy nhất, 976 00:45:44,930 --> 00:45:49,740 ngoặc đóng, dấu chấm phẩy, khung mở, dấu gạch chéo kịch bản. 977 00:45:49,740 --> 00:45:51,897 >> Script, như chúng ta sẽ thấy cuối cùng nhìn thấy, là một thẻ 978 00:45:51,897 --> 00:45:54,480 mà bạn có thể sử dụng để sử dụng của người khác ngôn ngữ lập trình được gọi là 979 00:45:54,480 --> 00:45:56,330 JavaScript bên trong của một trang web. 980 00:45:56,330 --> 00:45:57,960 Và bây giờ nhận thấy sự logic ở đây. 981 00:45:57,960 --> 00:45:59,840 Dưới đây là một phím gọi là tiêu đề. 982 00:45:59,840 --> 00:46:02,690 Đây là giá trị của nó dài điên bây giờ. 983 00:46:02,690 --> 00:46:07,840 >> Nhưng nếu tôi đi đến những người trợ giúp Trang- hay đúng hơn, các trang tiêu đề, 984 00:46:07,840 --> 00:46:11,310 Tôi gọi chức năng này trên đó danh hiệu đầu tiên. 985 00:46:11,310 --> 00:46:15,250 Vì vậy, nếu bây giờ tôi tải lại trang web này, tôi thấy điều này, mà có vẻ vô lý, 986 00:46:15,250 --> 00:46:16,110 nhưng nó an toàn. 987 00:46:16,110 --> 00:46:17,310 Nó chỉ có vẻ ngu ngốc. 988 00:46:17,310 --> 00:46:20,320 >> Nhưng giả sử thay vì Tôi đã quên mất điều này. 989 00:46:20,320 --> 00:46:24,660 Và đánh dấu các từ của tôi, một số khác không các bạn sẽ quên làm điều này 990 00:46:24,660 --> 00:46:27,790 và bạn sẽ nhận được một số siêng sinh viên hoặc bạn bè sắp tới 991 00:46:27,790 --> 00:46:31,540 cho bạn tại hội chợ CS50 hoặc nặc danh vào ban đêm chọc xung quanh trên trang web của bạn 992 00:46:31,540 --> 00:46:35,300 và về cơ bản tiêm chích ma unbeknownst cho bạn vào trang web của bạn 993 00:46:35,300 --> 00:46:35,800 bằng cách nào đó. 994 00:46:35,800 --> 00:46:39,000 >> Bởi vì nếu tôi chỉ đơn giản là nhổ tiêu đề ra ở đây và danh hiệu 995 00:46:39,000 --> 00:46:44,330 there-- tốt, nếu danh nghĩa trông như thế này và PHP 996 00:46:44,330 --> 00:46:47,660 như một ngôn ngữ mà có thể nhổ ra ngôn ngữ văn bản khác, 997 00:46:47,660 --> 00:46:50,650 này là nghĩa đen đi để thay thế thẻ này với, 998 00:46:50,650 --> 00:46:53,010 Tất nhiên, những gì tôi đặt ở nơi khác. 999 00:46:53,010 --> 00:46:57,640 >> Vì vậy, nếu bây giờ tôi đi đây và tải lại sau xóa bỏ các cơ chế an toàn, 1000 00:46:57,640 --> 00:46:59,982 bây giờ tôi có hello thế giới ở đây. 1001 00:46:59,982 --> 00:47:02,690 Bây giờ đó là không phải tất cả là lớn của một đối phó, nhưng bạn có thể làm điều gì đó 1002 00:47:02,690 --> 00:47:05,119 nhiều hơn một chút độc hại ở đây, giống như có 1003 00:47:05,119 --> 00:47:08,410 tags-- khác như chúng ta sẽ thấy một khi chúng ta dành nhiều thời gian hơn trong JavaScript-- như vị trí 1004 00:47:08,410 --> 00:47:14,910 dot href được, báo giá, unquote, HTTP business.com, nhưng ngược lại đó 1005 00:47:14,910 --> 00:47:15,950 từ ngày khác. 1006 00:47:15,950 --> 00:47:20,120 Và bây giờ bạn có thể tạo ra một trang web trang để thực sự đi ngay lập tức 1007 00:47:20,120 --> 00:47:21,190 trang web này ở đây. 1008 00:47:21,190 --> 00:47:23,000 >> Và thực sự, tôi không muốn thậm chí đi đến business.com 1009 00:47:23,000 --> 00:47:24,749 bởi vì tôi không muốn cho biết đó là những gì. 1010 00:47:24,749 --> 00:47:28,710 Nhưng điều này cũng sẽ kích hoạt mã được tiêm vào trang này. 1011 00:47:28,710 --> 00:47:32,680 Vì vậy, đây chỉ là để nói rằng mặc dù chúng tôi giới thiệu siêu sớm một số 1012 00:47:32,680 --> 00:47:36,800 của các cấu trúc phức tạp hơn, đó là tất cả đối với một kết thúc của việc bảo đảm 1013 00:47:36,800 --> 00:47:39,320 mà mã của bạn là không thể khai thác được. 1014 00:47:39,320 --> 00:47:40,960 >> Vì vậy, bây giờ là một phiên bản thứ ba ở đây. 1015 00:47:40,960 --> 00:47:42,470 Nó nhận được một chút sành điệu. 1016 00:47:42,470 --> 00:47:44,875 Tôi đã không thực sự like-- phía hậu môn của tôi 1017 00:47:44,875 --> 00:47:47,750 đã nhận được một chút khó chịu bởi những thực tế là tôi đã có một chức năng gọi là 1018 00:47:47,750 --> 00:47:51,940 RenderHeader và RenderFooter đó là gần như giống hệt nhau. 1019 00:47:51,940 --> 00:47:55,400 Vì vậy, nó xảy ra với tôi, tại sao không Tôi tham số các chức năng này 1020 00:47:55,400 --> 00:47:59,180 vào chỉ là một gọi là render, đã mất một số thứ hai 1021 00:47:59,180 --> 00:48:04,420 như tên của mẫu, cuối cùng để render-- hoặc header hoặc footer? 1022 00:48:04,420 --> 00:48:07,160 Và sau đó tùy chọn, nếu tôi muốn để vượt qua trong một số cặp giá trị quan trọng 1023 00:48:07,160 --> 00:48:10,580 như tôi làm cho tiêu đề cho tiêu đề nhưng không cho chân, 1024 00:48:10,580 --> 00:48:11,800 Tôi có thể làm điều đó. 1025 00:48:11,800 --> 00:48:16,510 >> Và vì vậy bây giờ nếu tôi đi vào helpers.php, đó là một chút phức tạp hơn. 1026 00:48:16,510 --> 00:48:19,670 Và tôi sẽ vẫy tay của tôi tại chi tiết, nhưng nó chỉ là một chức năng. 1027 00:48:19,670 --> 00:48:21,890 Vì vậy, đó là một bước tiến tới một thiết kế tốt hơn. 1028 00:48:21,890 --> 00:48:23,360 >> Chúng ta có thể thực hiện việc này thêm một bước nữa. 1029 00:48:23,360 --> 00:48:28,890 Nếu tôi đi vào thứ tư của tôi phiên bản này, chú ý hiện nay 1030 00:48:28,890 --> 00:48:31,320 rằng tôi đang làm một cái gì đó loại thậm chí nhiều hơn khó hiểu. 1031 00:48:31,320 --> 00:48:33,230 Và tôi biết đây là một nhiều để hấp thụ cùng một lúc, 1032 00:48:33,230 --> 00:48:35,080 nhưng chúng tôi chỉ là loại làm sạch mọi thứ lên. 1033 00:48:35,080 --> 00:48:38,550 Bây giờ tôi đang giúp đỡ của tôi tập tin vào một thư mục có tên 1034 00:48:38,550 --> 00:48:41,190 includes-- chỉ là một tùy ý tên, nơi tôi muốn đặt công cụ 1035 00:48:41,190 --> 00:48:44,300 mà tôi muốn include-- và sau đó phần còn lại của việc này là như nhau. 1036 00:48:44,300 --> 00:48:47,140 >> Nhưng nếu tôi nhìn bây giờ trong gedit, thông báo rằng tôi đã nhận được thoát khỏi 1037 00:48:47,140 --> 00:48:51,940 của tất cả các tập tin khác và tôi đã di chuyển chúng, ví dụ, vào đây. 1038 00:48:51,940 --> 00:48:55,110 Và sau đó trong các mẫu, Tôi có điều này ở đây, quá. 1039 00:48:55,110 --> 00:48:59,292 Và vì vậy đây là tất cả các doanh nghiệp hướng tới một bước của việc sử dụng một mẫu thiết kế tốt hơn nhiều. 1040 00:48:59,292 --> 00:49:01,000 Và chúng tôi rất nhanh chóng sẽ di chuyển ra 1041 00:49:01,000 --> 00:49:03,870 từ chức năng mặc định của PHP, mà chúng tôi bắt đầu ở đây với, 1042 00:49:03,870 --> 00:49:07,655 nơi bạn chỉ cần trộn lộn PHP, và HTML và CSS của bạn, 1043 00:49:07,655 --> 00:49:09,780 và bạn chỉ cần nhổ nó ra và bạn đi về theo cách của bạn. 1044 00:49:09,780 --> 00:49:11,404 Nó không sẽ rất dễ bảo trì. 1045 00:49:11,404 --> 00:49:14,481 Cũng giống như trong C, chúng tôi bắt đầu sử dụng nhiều tập tin và nhiều chức năng 1046 00:49:14,481 --> 00:49:15,730 và những thứ bao thanh toán mà ra. 1047 00:49:15,730 --> 00:49:16,688 Chúng tôi sẽ làm như vậy ở đây. 1048 00:49:16,688 --> 00:49:19,970 Và trên thực tế, trong thứ năm và cuối cùng phiên bản ở đây, tôi đã làm một điều khác. 1049 00:49:19,970 --> 00:49:23,710 Bạn thậm chí có thể sử dụng dấu chấm dấu chấm, trong đó, một lần nữa, chỉ là thư mục mẹ. 1050 00:49:23,710 --> 00:49:28,260 Để bảo mật hơn ý thức, bởi vì nếu tôi nhìn vào nghe 1051 00:49:28,260 --> 00:49:32,450 ở đây cho thứ năm và phiên bản cuối cùng, thông báo tôi có một thư mục ở đây gọi là 1052 00:49:32,450 --> 00:49:35,180 công cộng, và sau đó vào cùng một mức độ, có thể nói, 1053 00:49:35,180 --> 00:49:38,490 Tôi đã có bao gồm và các mẫu và sau đó là tập tin văn bản readme. 1054 00:49:38,490 --> 00:49:41,130 >> Và lý do tôi đã có cấu trúc nó thích this-- và rất nhiều web 1055 00:49:41,130 --> 00:49:44,330 máy chủ, đặc biệt là những $ 5 một những tháng hoặc những người $ 10 tháng, 1056 00:49:44,330 --> 00:49:47,170 nếu bạn đã từng có một trong những hay dịch vụ gì rất nhiều trong số họ làm 1057 00:49:47,170 --> 00:49:50,690 là họ chỉ mong đợi bạn để đổ tất cả các tập tin của bạn vào một thư mục, 1058 00:49:50,690 --> 00:49:53,640 như chúng ta đã đã có Ví dụ đầu tiên này. 1059 00:49:53,640 --> 00:49:56,740 >> Nhưng ngay khi bạn bắt đầu xây dựng hơn các trang web phức tạp mà chỉ cần lưu trữ 1060 00:49:56,740 --> 00:50:00,480 dữ liệu mà bạn quan tâm và các tập tin bạn quan tâm, thực sự tổ chức điều 1061 00:50:00,480 --> 00:50:05,060 một cách chính xác và bảo mật hơn ý thức trong tâm trí có thể 1062 00:50:05,060 --> 00:50:07,927 chúng tôi bắt đầu để bảo vệ chống lại tất cả các bạn bè 1063 00:50:07,927 --> 00:50:10,135 mà bạn có hoặc ở trong hay bên ngoài của lớp này người, 1064 00:50:10,135 --> 00:50:12,510 ngay sau khi bạn bắt đầu thực hiện chương trình mình trên web, 1065 00:50:12,510 --> 00:50:15,140 sẽ bắt đầu chọn vào bạn và vào chúng. 1066 00:50:15,140 --> 00:50:17,420 >> Và vì vậy chúng tôi sẽ xem xét cuối cùng là ở thiết kế này. 1067 00:50:17,420 --> 00:50:20,010 Đây chỉ là một hình ảnh rằng mô tả sau đây. 1068 00:50:20,010 --> 00:50:22,897 Chúng tôi sẽ đặt tất cả các của chúng tôi lập trình logic trong một hoặc nhiều file, 1069 00:50:22,897 --> 00:50:25,230 và chúng ta sẽ chỉ bắt đầu kêu gọi những người điều khiển. 1070 00:50:25,230 --> 00:50:28,022 Đó là nơi bộ não của trang web của chúng tôi thực sự là. 1071 00:50:28,022 --> 00:50:29,730 Sau đó chúng ta sẽ có tầm nhìn và quan điểm 1072 00:50:29,730 --> 00:50:32,480 là đơn giản như chỉ riêng files-- gọi là mẫu, thường xuyên. 1073 00:50:32,480 --> 00:50:34,410 Họ chỉ có tính thẩm mỹ của trang của tôi, 1074 00:50:34,410 --> 00:50:37,020 những gì tôi muốn trang để xem like-- màu sắc và cách bố trí 1075 00:50:37,020 --> 00:50:38,870 và vị trí của tất cả các biến. 1076 00:50:38,870 --> 00:50:41,120 >> Và sau đó thú vị hơn rằng chúng ta sẽ nhận được 1077 00:50:41,120 --> 00:50:45,420 là mô hình, mà là có được chỉ từ chúng tôi tát trên các công nghệ khác 1078 00:50:45,420 --> 00:50:47,771 mà chúng tôi mang vào hình ảnh, giống như cơ sở dữ liệu thực tế, 1079 00:50:47,771 --> 00:50:49,520 để khi bạn muốn để lưu thông tin, 1080 00:50:49,520 --> 00:50:52,140 bạn không chỉ cần gửi một email để giám thị của bạn hoặc cho chính mình, 1081 00:50:52,140 --> 00:50:57,350 bạn thực sự lưu trữ nó trong một cơ sở dữ liệu sử dụng một ngôn ngữ được gọi là SQL. 1082 00:50:57,350 --> 00:51:00,450 Và như vậy chúng ta sẽ rời khỏi đây hôm nay và nhận với điều này vào thứ Tư 1083 00:51:00,450 --> 00:51:02,990 và giới thiệu cơ sở dữ liệu sau đó. 1084 00:51:02,990 --> 00:51:06,940 >> [MUSIC CHƠI] 1085 00:51:06,940 --> 00:54:24,555