[MUSIC CHƠI] 

DAVID J. Malan: Tất cả đúng. Đây là CS50. Đây là khởi đầu của tuần tám. 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 hoàn toàn. Trong thực tế, một trong đó là khá trọng lượng nhẹ và nó thậm chí không một ngôn ngữ lập trình. Đó 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. Và khi bạn cái gì khác kết hợp với this-- hoặc bạn sẽ sớm biết, nếu bạn chưa có. Chúng ta sẽ sử dụng Cascading Style Sheets, hoặc CSS, mà là một loại ngôn ngữ với tính chất và giá trị đó là sẽ để cho chúng tôi làm điều muốn thay đổi màu sắc và thay đổi vị trí và các loại điều chỉnh. 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, ngôn ngữ lập trình thực tế như PHP. 

Vì vậy, PHP đã được khoảng một thời gian. Và như bạn sẽ thấy, nó được thiết kế chủ yếu sớm cho thực tế sử dụng trong phát triển web và thực sự tạo ra các trang web. Vì vậy, những gì các loại tính năng không một ngôn ngữ cần để làm web các trang tự động với nó? 

Nói cách khác, nếu bạn muốn tạo ra nội dung dynamically-- như Facebook 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 để time-- giống như những gì là phần quan trọng của chức năng bạn cần trong một ngôn ngữ lập trình mà sẽ cho phép bạn tự động in thông tin mới vào màn hình? 

HỌC SINH: Mã. DAVID J. Malan: Mã. OK. Chúng tôi sẽ lấy nó. Một chút chính xác. Ý tôi là, chúng ta có thể làm này với C, thẳng thắn. Nó sẽ là một cơn đau ở cổ. But-- cam kết này là? 

HỌC SINH: Yeah. Biến, có lẽ? DAVID J. Malan: Biến. OK, chắc chắn. Biến chắc chắn có thể giúp chúng tôi ra. Và ngay cả một cái gì đó đơn giản hơn. 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 khi chúng ta thực sự nói "hello world". 

HỌC SINH: Print. 

DAVID J. Malan: In, phải không? Print, hoặc printf trong thế giới của C. Vì vậy, tất cả các thời gian này, chúng tôi đã có tại của chúng tôi xử lý một language-- C, trong particular-- và thậm chí Scratch cho rằng vấn đề đó có thể tạo ra chuỗi văn bản. 

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 mặc dù có dấu ngoặc mở và đóng cửa ngoặc và một số loại vần và lý do đằng sau nó, cũng sau đó chúng ta có thể thực sự 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 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. 

Hoặc chúng ta có thể viết mã, để gợi ý của bạn trước đó, mà có thể cho chúng tôi tự động tạo ra HTML, và đó là những gì chúng ta sẽ để bắt đầu làm việc với PHP và cuối cùng thậm chí với một ngôn ngữ được gọi là JavaScript, là sử dụng một ngôn ngữ để tạo ra khác. Và quả thực, đây là những gì Facebook và nhiều, rất nhiều các trang web khác làm gì để thực sự tự động hiển thị thông tin mới cho bạn. 

Vì vậy, hãy bắt đầu với một this-- khó hiểu nhìn dòng, nhưng một đó là thực sự khá mạnh mẽ. Như vậy đến nay, chúng tôi đã sử dụng C, mà là một ngôn ngữ biên dịch. Và chỉ một recap-- nhanh chóng một biên soạn ngôn ngữ có những gì đặc trưng? 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ì? Yeah? 

HỌC SINH: Nó cần phải được lắp ráp thành mã máy. 

DAVID J. Malan: OK. Nó cần phải được lắp ráp thành mã máy. Vì vậy, bạn lấy mã nguồn của bạn, đó là loại tiếng Anh như thế nào. Bạn chuyển đổi đó để cấp một cái gì đó thấp hơn, được gọi là cuối cùng đối tượng code-- 0 và 1. 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, thực sự hiểu. 

Bây giờ, PHP và Python và Ruby và JavaScript và chùm khác ngôn ngữ không được biên dịch ngôn ngữ nhưng giải thích ngôn ngữ, 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. 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, được gọi là một thông dịch viên. Và của người đó chương trình đã được thiết kế để hiểu những gì mỗi và tất cả các biểu tượng trong Python hay PHP hay Ruby hoặc bất kỳ số lượng các ngôn ngữ khác có nghĩa. 

Và vì vậy tất cả chúng ta cần là một cái gì đó như thế này. Vì vậy, trong thực tế, tôi sẽ đi qua để thiết bị ở đây, chỉ cần vào bất kỳ cửa sổ cũ, và chúng tôi sẽ đi trước và mở một tập tin tên, nói, xin chào. 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, nhưng tôi sẽ làm một cái gì đó thậm chí còn đơn giản ở đây. 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. Vì vậy, người sử dụng ", bin, env, cho môi trường, php. " 

Đ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, đi tìm ở địa phương của bạn môi trường bất cứ điều gì có nghĩa là, bất cứ nơi nào PHP is-- các interpreter-- và đi trước và sử dụng thông dịch để giải thích các mã sau đây. Bây giờ, đây là loại một tính năng xấu xí của PHP. Nhưng trong ngôn ngữ này, bất kỳ thời gian bạn viết mã PHP, bạn cần phải có một trong những xấu xí Thẻ PHP phân định ranh giới đầu của bạn code-- <? php?. 

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 thế giới dấu gạch chéo ngược n gần quote, ngoặc gần. Và sau đó chỉ cần cho tốt biện pháp, tôi sẽ đi trước và gần tag php của tôi ở đây để tất cả mọi thứ nhìn độc đáo khá in. 

Và ngay sau khi tôi nhấp vào Lưu, gedit là đủ thực sự thông minh nhìn vào dòng đầu tiên và nhận ra, oh, bạn viết mã PHP. Hãy để tôi làm nổi bật cú pháp nó với các màu sắc ở đây để nó đứng ra nhiều hơn một chút. Nhưng bây giờ tôi sẽ đi xuống cửa sổ thiết bị đầu cuối của tôi. Tôi sẽ phóng to. 

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, nhưng cho phép từ chối. Và bash. Chúng tôi thực sự nghe nói rằng điều một vài tuần trước trong bối cảnh Shellshock, một trong những lỗi. 

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. Có ai nhớ lại cách bạn có thể sửa chữa một cái gì đó nơi cho phép bị từ chối như thế này? Lệnh là gì, ít nhất? 

HỌC SINH: Chmod. DAVID J. Malan: Yeah, chmod, để thay đổi chế độ của một tập tin. 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 thiết lập. Nhưng bây giờ, tôi sẽ thay đổi chế độ không phải là có thể đọc được, nhưng để cho tất cả mọi người executeability đặc quyền, khả năng để chạy tập tin này. Và tôi sẽ giao đó đến tập tin hello. 

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. Và những gì đã làm tôi bước bỏ qua rõ ràng hoàn toàn? Biên dịch. Vì vậy, tôi chỉ cần chạy chương trình này khá đơn giản. 

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. 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 ở đây, vì lý do thực chúng tôi sẽ quay trở lại. Và tôi sẽ đi vào, hãy nói, điều kiện 1. 

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. Nhưng điều này là thực sự một tái tạo trong PHP 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 mà mục đích trong cuộc sống của chương trình này rõ ràng là yêu cầu người sử dụng cho một số nguyên và sau đó làm một số bông phân tích về nó đó bạn nói nếu đó là tích cực hay tiêu cực hoặc bằng số không. 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ỏ, nó không thể phân biệt rất xa C. 

Một trong những đặc điểm gì ở đây là có thể nhảy ra ngoài lúc bạn là một chút khác nhau? Có lẽ hai điều. Yeah? 

HỌC SINH: Dollar dấu hiệu n? 

DAVID J. Malan: Yeah. Vì vậy, ký hiệu đô la n là hiện tại. Và dấu hiệu đồng đô la, như chúng ta sẽ thấy, sẽ là một sửa chữa để đầu của bất kỳ biến trong PHP. Đó là cả tốt và tốt trong bad-- rằng đó là loại rõ ràng những gì một biến, xấu ở chỗ nó nhưng một điều cần gõ. Và có một khác điều chúng tôi đã không khá nhìn thấy, ít nhất bởi chính tả này. yeah? 

HỌC SINH: Readline. 

DAVID J. Malan: Readline. 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ì đó tương tự, nhưng chúng tôi đã sử dụng getString, và đây là đối tác của mình. Vì vậy, nếu tôi đi vào này thư mục, đó sẽ xảy ra, 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, 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 đ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. 

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. Tôi muốn một số nguyên, xin vui lòng, 50. Và chúng tôi có thể chơi này trò chơi cả ngày dài. Nó sẽ cư xử chính xác như nó đã làm trong tuần một. 

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, nhưng ở phía trên, tôi một lần nữa có dòng này mà 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, được gọi là các điều kiện 1. 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. Đó là thay vì chạy này thông dịch viên có tên sẽ xảy ra là giống với ngôn ngữ. 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ó. 

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ì đó chúng tôi đã làm tuần trước. Một lần nữa, đây là một loại đoạn mã tùy ý mà dường như không những gì khi bạn chạy nó? Có gì này sẽ in, có lẽ? 

Vì vậy, ban đầu trên đường 16, đó là sẽ nói x bây giờ là 2, có lẽ. % D là giống như $ i cho printf. Vì vậy, sau đó nó cubing, dấu chấm, dấu chấm, dấu chấm, trong dòng 17. Và sau đó dòng 18 xuất hiện để gọi một hàm Cubed. Và nơi được Cubed xác định? 

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. Tôi đã có một số ý kiến ​​trên nó, nhưng đối với hầu hết các phần, đó là một khá đơn giản porting hoặc chuyển đổi từ chương trình C với phiên bản PHP. 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. 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? 

HỌC SINH: [không nghe được]. 

DAVID J. Malan: Có không có nguyên mẫu lên hàng đầu. Vì vậy, PHP-- và thẳng thắn, một rất nhiều languages-- hiện đại 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 có thể đặt các chức năng ở đây, bạn có thể đặt một chức năng xuống đây, và thông dịch viên sẽ để bạn có được sự ủng hộ của đọc 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. Vì vậy, cải tiến tốt đẹp năm sau đó. Nhưng cũng có một cái gì đó khác nhau hoặc vắng mặt ở đây. Yeah? 

HỌC SINH: [không nghe được]. 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, 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, nhưng bạn không cần phải xác định chúng, đó cũng là cả tốt và xấu. Và có một điều mất tích khác. 

HỌC SINH: Không có thư viện. 

DAVID J. Malan: Không có thư viện. OK, vì vậy đó là tốt đẹp. Chúng tôi nhận được rất nhiều ra khỏi hộp. Vì vậy, có thực sự là một nhiều hơn thứ hơn tôi nghĩ là khác nhau. Làm thế nào về cách thức trở lại? Đó là những gì? Nói nó một lần nữa? 

HỌC SINH: Pointer. 

DAVID J. Malan: Không có con trỏ. OK, ít nhất là trong ví dụ này, không có. Đó là công bằng. Vì vậy, không có con trỏ trong PHP thực sự nói chung. 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 ở đó. Và những gì khác? 

HỌC SINH: Main. DAVID J. Malan: Main. Vì vậy, đây là Biggie Tôi đã nghĩ đến. Chú ý không có điểm vào chính. Bạn chỉ cần bắt đầu viết mã của bạn. Và điều này thực sự sẽ được thuận lợi khi chúng tôi chuyển trong giây lát để thực sự sử dụng cùng một ngôn ngữ này dựa trên web lập trình, mà chúng không muốn chỉ có một điểm nhập cảnh. 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 tất cả tham gia trong sử dụng đầu vào và sản xuất đầu ra. 

Nhưng ở đây là rất phong độ ví dụ mà tôi đã hứa thời gian qua, cụ thể là trong thư mục này ở đây, lỗi chính tả. 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ó cơ bản là một porting-- P-O-R-T. Nó chỉ là từ được đưa ra khi, nói, bạn chuyển đổi từ một ngôn ngữ khác bằng tay thường. 

Đây là một porting của PC phiên bản của Speller từ PSET 5. 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ể. 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 kéo cả hai lên bên bên cạnh và nhìn thấy những gì là cùng và những gì khác nhau. Nhưng họ đang khá darn tương tự. Nếu bạn còn nhớ những gì Speller thậm chí trông giống như, ngay cả khi bạn không phải thay đổi tập tin này, nó khá tương tự cấu trúc chỉ với một cặp vợ chồng những thay đổi ở đây và ở đó. 

Vì vậy, đây chỉ là để nói rằng nó khá đơn giản để chuyển đổi Speller từ C đến PHP. Nhưng trong từ điển, có một cái gì đó thậm chí còn hấp dẫn hơn. Hãy để tôi đi trước và tạo ra tập tin dictionary.php của riêng tôi. Vì vậy, một chút khác nhau trong đó chúng tôi sẽ gọi nó là .php thay vì .c. Bởi vì đây là một file PHP, tôi do-- hơi annoyingly-- có để bắt đầu tập tin với một thẻ php như thế. Và tôi sẽ đi trước và xác định một vài chức năng. Chức năng gọi là kiểm tra, đó là sẽ mất trong một từ như trước đây. Nhưng của lập luận này sẽ có một đô la ký bởi vì chúng tôi, một lần nữa, bằng cách sử dụng PHP. Một chức năng từ dictionary.c đã tải 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. 

Một số khác trong dictionary.c là gì? 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. nên kích thước chỉ phải trả lại một biến. Và sau đó là dỡ bỏ. 

Vì vậy, đã có bốn chức năng trong vấn đề thiết lập 5 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. Vì vậy, tôi hứa rằng trong PHP, chúng ta có thể khai báo một bảng băm, ví dụ, tất cả những gì dễ dàng hơn. Trong thực tế, nếu tôi muốn có một bảng băm, Tôi chỉ sẽ đi như thế và có bảng băm của tôi. Và đó là lưu ý, phong độ, rằng chúng ta rời đi vào thời gian qua. Và bạn biết không, nếu tôi muốn một biến cho kích thước, tốt, này là không phải tất cả là khác nhau từ C, nhưng tôi sẽ đi trước và làm điều đó. Và nhận thấy không có kiểu dữ liệu. Và tôi sẽ quay trở lại sau đó và thực sự thêm một số ý kiến ​​ở đây. Nhưng những gì về tải? 

Nếu từ điển ký hiệu đô la là tên của tập tin của tôi và tôi thực sự muốn tải Nói cách vào bảng này bây giờ, Tôi thực sự có thể làm một cái gì đó khá đơn giản. One-- và đây là minorly annoying-- trong PHP, bạn phải xác định bên trong của một hàm nếu bạn muốn truy cập một số toàn cầu biến đó là định nghĩa bên ngoài. 

Nhưng đó không phải là đặc biệt thú vị ngay bây giờ. Đ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. 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 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 và giao lại cho. 

Đó 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, điều này sẽ đưa cho tôi trở lại một loạt các từ trong tập tin. Đó không phải là tất cả những gì tốt. Nó vẫn sẽ là một dòng các từ ngữ, một cái gì đó tuyến tính. 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 cú pháp mà chúng ta đã thấy thời gian một thời gian ngắn vừa qua. Và bạn sẽ thấy nó nhiều hơn trong PSET sắp tới. 

Nhưng bây giờ tôi có một vòng lặp iterating trên mỗi từ trong từ điển. Và trên mỗi lần lặp, nhớ lại tôi gọi từ hiện tại "từ". Và tất cả nó sẽ làm để đặt một từ vào từ điển sẽ từ đoán "true". Đó là chức năng chèn của tôi. Đó là chức năng tải của tôi cho từ điển của tôi. 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ự 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ỏ, 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 sườn ra một nhân vật ở cuối. Vì vậy, không có vấn đề đó. Chúng tôi đã đi trước và thực sự rút ngắn chỉ này. 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-- kích thước ++. Tôi có thể làm điều đó như trước. Và sau đó điều này có lẽ sẽ chỉ làm việc tốt, để quay trở lại đúng. Xong. PSET 5. 

[Cười] 

DAVID J. Malan: OK. Chúng tôi sẽ làm điều đó một lần nữa với PSET tiếp theo, quá. Vì vậy, những gì về kích thước? Vâng, một hy vọng điều này là về như bạn mong chờ thời gian qua, mặc dù tôi phải làm Điều này toàn cầu ngu ngốc. Nó chỉ là một tạo tác từ thiết kế của ngôn ngữ. 

Nhưng kiểm tra là một chút thú vị hơn. 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 muốn có quyền truy cập vào rằng bảng biến toàn cầu. Và bây giờ nếu tôi muốn kiểm tra nếu một từ là có, 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, sau đó đi trước và trở lại true; khác, trả về false. Xong. Nửa kia của PSET 5. 

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. Trong công bằng, tôi nên có lẽ dành một vài giây nữa về việc thực hiện này. 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. Vì vậy, strtolower là một chức năng. 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, nhưng PHP đã bị một phiên bản toàn bộ chuỗi. 

Điều đó sẽ buộc tất cả mọi thứ thành chữ thường, mà một số bạn có thể đã thực hiện để canonicalize gì bạn đã được đặt trong từ điển của bạn. Và bây giờ bạn có thể làm điều này trong C, quá. Điều này không có gì để làm với PHP. 

Nhưng bất cứ lúc nào bạn có một điều kiện Boolean, giống như một cái gì đó trên đường 10 đó, mà chỉ là sẽ đánh giá đúng sự thật hoặc sai, và nếu khác rõ ràng đ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 và chỉ cần làm một cái gì đó như thế này. Vì vậy, có chức năng kiểm tra của tôi. Phải, nếu Boolean trả về một sự thật hay một sai lầm, chúng ta hãy quay trở lại nó ngay lập tức. 

Và có một vài điều chỉnh khác Tôi có thể thực hiện ở đây và ở đó. Dỡ bỏ Load--, bằng cách này, đó là thực hiện. Không có gì để làm ở đó. Kể từ khi tất cả các bộ nhớ trong PHP và nhiều ngôn ngữ khác thực sự là quản lý cho bạn. Vì vậy, trong khi ở C, bạn đã học được đau đớn, 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. 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 và các công cụ như Valgrind không thông báo và không phàn nàn, đó là một điều tốt để chạy trên chúng. 

Nhưng chắc chắn, có phải có một số đánh bắt, phải không? Nếu không, chúng tôi loại lãng phí một bó toàn bộ tuần. Vì vậy, có bất kỳ số lý do tại sao chúng ta loại có quỹ đạo này, nhưng có một trade-off. Đúng, điều này đã được chủ đề. 

Vì vậy, những gì có thể một thương mại-off ở đây di chuyển, từ C đến PHP? 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 ở đó. Yeah. Đó là những gì? 

HỌC SINH: [không nghe được] bộ nhớ. DAVID J. Malan: Tốc độ. OK. Vâng, tốc độ của tôi là khá nhanh. Phải không? Nhưng tốc độ thực hiện của chương trình? OK, vì vậy đó là một điểm công bằng. 

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 Tôi đã có trên bảng lớn là một giải pháp dựa trên thử, và tôi đã có trong thư mục này ở đây. 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, nhấn Enter. Và đây là hy vọng chính xác thực hiện lúc kết thúc, mang lại cho tôi thời gian trong tổng số 0,38 giây cho rằng một ví dụ nào tùy ý. 

Và nếu bây giờ tôi đi vào trong này cửa sổ terminal thứ hai ở đâ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, là trong thư mục này và here-- hãy để tôi đi trước và chạy Speller. Vì vậy, chỉ để được rõ ràng, đây là phiên bản PHP. Tôi chỉ thấy đầu của nó ở đây. 

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. 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 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. Vì vậy, nó là một sự khác biệt không tầm thường. 

Và đây chỉ là trên một tập tin. Nếu bạn đang chạy hai chương trình so với các bảng lớn 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. 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. Vì vậy, có, thanh toán một số giá tốc độ thực sự là trường hợp. Những gì khác? Yeah? 

HỌC SINH: Số tiền sử dụng bộ nhớ RAM. 

DAVID J. Malan: Số tiền sử dụng bộ nhớ RAM. Vì vậy, tôi đã không cung cấp cho một thứ hai nghĩ khi viết PHP này phiên bản như thế nào nhiều bộ nhớ tôi đã sử dụng. 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 đó. Và đó có thể là OK, nhưng nếu tôi thực sự thực sự 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 hoặc ra khỏi bất kỳ công cụ Tôi đang xây dựng, có thể PHP, thực sự, không phải là ngôn ngữ bên phải. 

Và trên thực tế, đó là lý do tại sao, cho Ví dụ, nhiều servers-- web các chương trình thực tế phục vụ lên web content-- không được viết bằng PHP hoặc Python hay Ruby. Chúng được viết như bây giờ bạn sẽ làm gì với PSEt 6, trong C để bạn có thể ép mỗi bit của hiệu năng của nó và thực sự thực hiện kiểm soát tốt hạt hơn những gì đang diễn ra bên dưới mui xe và không chỉ cần mang nó cho phép một số cao hơn cấu trúc dữ liệu cấp độ. 

Xem xét, sau khi tất cả, bất cứ ai trong PHP thực hiện rằng khái niệm về một băm table-- nó thực sự đúng gọi là array-- kết hợp ông ấy hay cô ấy có bất cứ ý tưởng gì loại đầu vào bạn sẽ được đưa vào cơ cấu? Vì vậy, rõ ràng là không, phải không? Đó là một công cụ chung trong bộ công cụ đó là cung cấp cho bất cứ ai muốn sử dụng nó, và vì vậy chắc chắn nó 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. 

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, phức tạp hoặc sử dụng bộ nhớ có thể khác nhau. Và vì vậy những gì bạn sẽ tìm thấy ngày càng là có sẽ khác nhau công cụ cho việc buôn bán. 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, tin hay không, C không phải là đi là ngôn ngữ quyền sử dụng. 

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 là để có được bạn suy nghĩ về, tốt, những gì bạn nên kéo giảm kệ khi bạn muốn để giải quyết một số vấn đề. 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ữ thậm chí cao hơn ngày hôm nay. 

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 cho việc sử dụng một ngôn ngữ như PHP. Nó hơi thường được sử dụng tại dòng lệnh, viết kịch bản như tôi đã làm, nhưng nó nhiều, phổ biến hơn nhiều. Và nó được dự định sẽ được sử dụng trong dạng tập tin mà thường kết thúc trong .php-- nhưng đó là không phải là một prerequisite-- mà mình tạo ra nội dung web. 

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. Và thực tế đây là loại thực tầng trong đó một trong những điều đầu tiên 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, CS51 năm trước đây là của tôi bạn cùng phòng và tôi đã giúp đỡ để 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 đó, 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, như nó đã được gọi là, đi bộ băng qua sân để Wigglesworth, và thả nó trong một số cửa thả của giám thị. 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 rằng chúng tôi đã đăng ký cho một số môn thể thao. 

Vì vậy, rõ ràng, một cơ hội để cải thiện. 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, chúng tôi đã phải thực sự đạt for-- này đã thậm chí không lâu ago-- đạt cho một lập trình ngôn ngữ đó không phải là PHP. Vào thời điểm đó, nó là một cái gì đó gọi là Perl, mà đã đi ra khỏi thịnh hành kể từ đó. Nhưng ý tưởng là như nhau. 

Và tôi chủ yếu ngồi xuống để thử đến cổng đi phiên bản Perl để PHP, nhưng đầy đủ từ chối, không cho bất cứ nghĩ đến thẩm mỹ chỉ được nêu ra. Vì vậy, đây là một trang web. Đây là một tập tin. Nếu tôi phóng to, rõ ràng của nó gọi là froshim0.php chỉ vì nó là lần đầu tiên của chúng tôi Ví dụ trong loạt bài này. 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í, nhưng một hình thức thú vị bởi vì nó cho phép tôi để cung cấp cho người sử dụng đầu vào cho các trình duyệt. 

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, tham số hàng đợi như nó đã được gọi là? Vì vậy, để Google, phải không? 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. 

Nhưng hôm nay, chúng tôi bắt đầu sản xuất ra. Và hành vi tôi sẽ thấy ở đây ban đầu là khá tầm thường. David, tôi sẽ kiểm tra tắt giới ở đây, nói Matthews ở đây. Tôi sẽ không có đội trưởng. Tôi sẽ bấm vào Đăng ký. Và nhận thấy rằng các URL có thay đổi đăng ký-0.php, và sau đó có văn bản này xấu xí ở đây. Tôi đã không nghĩ đến các định dạng này. 

Nhưng điều thú vị là ba giá trị dường như được thông qua. Đây là PHP của loại tương đương với printf-- 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 những gì bạn đặt vào đó. 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ó, và bạn nhìn thấy tôi gõ vào. Một là tên của tôi, một là giới tính, một là ký túc xá. 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ó. 

Vì vậy, đây là để nói rõ ràng, khi bạn gửi những thứ trên web, không chỉ thực hiện các URL đôi khi change-- đôi khi nó không. Trong thực tế, tên tập tin thay đổi, nhưng những gì là vắng mặt từ URL rằng chúng tôi đã nhìn thấy lần cuối cùng với Google. Yeah? 

HỌC SINH: Không có chuỗi truy vấn 

DAVID J. Malan: Không có chuỗi truy vấn. Không có câu hỏi đánh dấu một cái gì đó. Không có dấu hỏi q bằng mèo, như chúng tôi đã làm thời gian qua. Và có chắc chắn không Tên câu hỏi đánh dấu bằng David hoặc ký túc xá bằng Matthews, vì vậy, nơi được rằng tất cả sẽ đi đâu? 

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 trong vhost của tôi, host nội bộ, công cộng thư mục ở đây và đi vào froshim0. Vì vậy, nó chỉ ra rằng hầu hết tất cả các trang này chỉ là HTML. 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 và PSET 7 và PSET 8. Nhưng điều này chỉ là một trang HTML. 

Và các công cụ thú vị có vẻ là ở đây. Một thẻ form có thuộc tính hành động có giá trị đăng ký 0. Đó là lý do tại sao khi tôi gửi này, nó đi đến tập tin đó. Nhưng phương pháp là bài viết today-- khác nhau. Vì vậy, nó quay ra có của ít nhất hai phương pháp trên web được sử dụng để gửi thông tin từ trình duyệt đến máy chủ. Nhận đặt nó trong URL. Bài viết đặt nó ở nơi khác. Và khi nào và tại sao có thể giúp bạn thực sự muốn có một trang web để sử dụng bài viết sau đó thay vì của nhận được, chỉ bằng trực giác? Bất kỳ trang web. 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 để có được, nếu chúng ta đã nhìn thấy hai sự khác biệt? HỌC SINH: [không nghe được] an toàn. DAVID J. Malan: Nếu bạn muốn một cái gì đó để được an toàn. 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 vào một trang web sẽ loại này tối ưu nếu trình duyệt đặt mà giá trị bên trong của URL. Tại sao? Bạn nhìn thấy nó, mà không dường như là một việc lớn như vậy, 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 phòng thí nghiệm, và để ai đó khác hay thậm chí một người bạn cùng phòng có thể dễ dàng đi bộ lên và nhìn thấy rằng thông tin cá nhân. Khi bạn gửi một email thông qua trang web, bạn có thể không muốn điều đó kết thúc dữ liệu trong URL là tốt. Và như vậy có bất kỳ số lý do tại sao chúng ta có thể muốn đặt nó ở đây. 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, giống như một JPEG, và đặt nó vào một URL. Bạn có thể làm điều đó. Có cách mã hóa nó, nhưng nó không chỉ đơn giản như thế. 

Vì vậy, đăng ký 0 là thực sự rất underwhelming. Tất cả nó nói theo nghĩa đen là thế này. Nó in ra bên trong của một số Thẻ HTML sau đây. Tôi đã có một thẻ PHP ở đây lồng vào bên trong của một thẻ trước. "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ữ. 

Printr là một bản in hàm đệ quy. Và sau đó có này Điều thú vị ở đây. Và chúng ta sẽ quay trở lại này bởi vì có những người khác, nhưng ký hiệu đô la gạch bài xuất hiện để được 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ủ được lưu trữ cho bạn. Và chúng tôi sẽ xem làm thế nào để có được ở thông tin trước khi dài. 

Nhưng trước tiên, chúng ta hãy quay trở lại một ví dụ hơi khác nhau. Đi sâu vào register-- hoặc đúng hơn, froshims1.php, mà hơi khác một chút. Tôi đã nhiều hơn một chút nỗ lực với định dạng, mặc dù nó vẫn còn khá xấu xí. Nhưng tôi sẽ đi trước và gõ "David" bây giờ. Nam. Chúng tôi sẽ kiểm tra "thuyền trưởng" thời gian này. Chúng tôi sẽ làm Matthews. Và đăng ký. 

Và lần này nó nói, hm, không thực sự. Tất cả các bên phải, vì vậy những gì của đăng ký 1? Hãy để tôi đi vào mở Đăng ký 1 hm và-. Tất cả các bên phải, vì vậy đây là thú vị, và điều này là một bước về phía doanh nghiệp các chương trình thú vị hơn. 

Thấy hàng đầu của tập tin này có Tag PHP cũng như một số ý kiến. 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 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 rằng mã này là chứng thực nộp hồ sơ. 

Vâng, nó chỉ ra rằng biến như ký hiệu đô la nhấn mạnh bài là gọi là siêu globals. Họ giống như những biến toàn cầu đặc biệt mà chỉ là omni-hiện nay có sẵn trong chương trình của bạn. 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ố như 0, 1, 2, 3, nhưng từ thực tế. 

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 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, 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. PHP có một chức năng được gọi là trống rỗng, mà chỉ cho biết có hay không, điều này biến là trống rỗng hay không. Chúng tôi có những quầy bar, mà chỉ có nghĩa là hoặc, như trong C. 

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 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 mình thông qua dòng này ở đây. 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 quay trở lại vị trí này, do đó, nó punts người sử dụng trở lại bất cứ nơi nào anh ta hoặc cô đến từ đâu. Nhưng đó là một chút không thanh nha trong đó tôi cứng mã hoá nó. 

Nhưng nếu điều này nếu điều kiện không đánh giá đúng sự thật? 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? Rằng nếu điều kiện không sẽ đánh giá đúng sự thật, vì vậy tôi không nhấn thoát trong dòng 7. Vì vậy, những gì sẽ xảy ra? Và đây là những gì thú vị về PHP. 

Bạn có thể thả vào và ra khỏi của chế độ PHP, vậy để nói chuyện. 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 và đặt mã có giống như tôi đã làm ở đây. Ngay sau khi bạn đóng cửa thẻ PHP, máy chủ là chỉ cần đi nhổ ra bất cứ điều gì bạn đặt ở đó. Và quả thực, đây là một phần của thiết kế ban đầu của PHP, 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 ngôn ngữ. 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. 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ỉ nhận thấy sự dễ dàng mà tôi thực sự có thể thực hiện một số logic. 

Nhưng vẫn còn một chút underwhelming. Hãy cùng mở ra phiên bản hai Frosh tin nhắn tức thì, mà rõ ràng trình để register2.php. Vì vậy, tập tin này thực sự đi nhìn gần như giống nhau. Tôi sẽ đi đến Frosh nhắn tức thì 2. Nhưng trong Frosh nhắn tức thì 2, hãy xem những gì sẽ xảy ra. 

David, nhấp vào nút radio, như nó được gọi là; Matthews, không có đội trưởng. Đăng ký. Bạn đã được đăng ký. Không thực sự. Oh chờ đợi, chúng ta chỉ cần làm ví dụ mà, phải không? Tất cả các bên phải, stand by. Chúng tôi sẽ làm ba. Rõ ràng có điều gì đó về xảy ra với Gmail. Chúng tôi sẽ đạt được điều đó. 

Vì vậy, Frosh nhắn tức thì 3 trông như thế này. Không có khác nhau. 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 khiếu nại, khá đơn giản, bạn được đăng ký thực sự. Đó là loại phi vật chất. Nhưng tôi khẳng định với điều này phiên bản thứ ba và cuối cùng 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 chương trình năm trước. Và nó đã được đơn giản. Không có cơ sở dữ liệu, không có bảng tính Excel. Nhưng quan trọng hơn, không có giấy hơn 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 đã nhận được trước đây những điều này thông qua các hình thức. 

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ý, Email tài khoản John Harvard của các proctor-- hoặc mình trong trường hợp này, John Harvard-- với những điều sau đây text-- "Người này chỉ được đăng ký." Tên là David, đội trưởng là trống; giới tính, nam giới; và ký túc xá, Matthews. 

Vì vậy, những gì xảy ra ở đó? Vâng, các tập tin trong câu hỏi ở đây rõ ràng là register3.php. 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 và cũng có thể, thẳng thắn, sự bất an của một hệ thống như email. Tôi vừa hiệu quả giả vờ được John Harvard theo cách sau. 

Tôi có thẻ php mở lên hàng đầu, mà chỉ nói ở đây có một số mã PHP. Xuống đây, hóa ra có các thư viện trong PHP. 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. Bạn nhận được nhiều hơn với bồn rửa chén, vậy để nói chuyện. 

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à 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. Xuống đây tôi xác nhận nộp chỉ 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á. Và nếu như vậy, đi trước và nhanh chóng một bưu phẩm. 

Bạn có thể nghĩ về điều này như là một dòng mã mà chỉ phân bổ. Nó giống như malloc, nhưng đó là một chút gợi cảm trong đó bạn đề cập đến không chỉ malloc và một số số chung. 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. 

Và nếu bạn đã lập trình Java hoặc C ++ hoặc ngôn ngữ khác, bạn có thể đã nhìn thấy điều này. Nhưng ngắn hạn của nó, nếu không quen thuộc, dòng này đặt vào ký hiệu đô la email một cấu trúc đặc biệt gọi là một đối tượng đã được xây dựng trong chức năng email. Và trên thực tế, thông báo và cú pháp tương tự. 

Đây không phải là một con trỏ, mỗi se. PHP chỉ cần sử dụng cú pháp tương tự. Dòng này được nói sử dụng SMTP-- Simple Mail Transfer Nghị định thư, mà chỉ là giao thức được sử dụng để gửi thư. Đây là chỉ định sử dụng Máy chủ SMTP Harvard, mà là một nơi nào đó ở đây trong khuôn viên trường. 

Điều này được nói những gì TCP cổng số để nói chuyện, 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 đỡ. Và sau đó vì Harvard sử dụng một số an ninh hệ thống trên server-- email ít nhất để mã hóa giao thông giữa bạn và nó, mặc dù ai cũng có thể gửi cho it-- Tôi sẽ bật giao thức TLS để giữ an toàn này. 

Nhưng đây là nơi mà mọi thứ có được một chút đáng sợ. Tôi chỉ có thể tùy tiện nói rằng tôi jharvard, và tôi có thể chỉ tùy tiện gửi email cho bản thân mình ở đây. Và sau đó tôi có thể chỉ định một chủ đề với dòng này ở đây. 

Và điều này chỉ trông xấu xí, nhưng nó chỉ là một loạt các nối. 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, mà chỉ theo nghĩa đen móc nối chuỗi sau khi chuỗi sau khi chuỗi, 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. Bạn chỉ cần làm điều đó. 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, đó là lý do tại sao các email tôi gửi trông như nó đã làm. 

Và rồi cuối cùng ở đây, tôi gửi mail. Vì vậy, nếu điều này là sai, Tôi chỉ sẽ chết, 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. Nhưng đó là, trên thực tế, gọi hàm gửi. 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. 

Và tại sao tôi thấy rằng Tôi đã đăng ký thực sự? Vâng, nó đã xảy ra ngay ở đây. Vì vậy, tôi mang lại điều này cho một vài lý do. 

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 hoặc cho thế giới thực, đây là làm thế nào bạn gửi email nhắc nhở để khách hàng của bạn hoặc thuê bao của bạn. Đây là cách bạn gửi lời nhắc mật khẩu. Đây là cách bạn gửi tin nhắn người rằng họ có một Facebook mới tin cấp phát hoặc một cái gì đó như thế. 

Nhưng nó cũng nói lên thực tế là điều này có thể đã rất tốt từ Davin hoặc bất cứ ai khác. Và tôi nói loại này với một nụ cười vì tôi 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. 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, bởi vì nó là tầm thường để giả mạo email như thế này. Tuy nhiên, như bạn có thể nhìn thấy hoặc đọc trong Crimson, muộn nó cũng khá tầm thường cho người dân để theo dõi chúng trở lại một số xuất xứ. 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 làm quen rất chặt chẽ gần như đến nhiều năm ban ed trước, khi tôi phát hiện ra như thế nào internet làm việc. Vì vậy, trong bất kỳ case-- hơi sau khi hội đồng quản trị ed đã làm. 

Vì vậy, trong mọi trường hợp, có một bó toàn bộ các siêu toàn thể, 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. Có một đối tác được gọi là get, đó là nơi mà công cụ từ một URL kết thúc đi. Và có một bó toàn bộ những người khác, phiên too-- và máy chủ và cookie. Chúng tôi sẽ trở lại cookie một thời gian khác, nhưng phiên là loại mát mẻ bởi vì ngay now-- lên cho đến khi now-- 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. 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ì đó xảy ra trên màn hình, nhưng sau đó đóng kết nối. Internet Explorer hoặc Biểu tượng Firefox ngừng quay và bạn chỉ cần xem những gì rằng trang web này. 

Vì vậy, HTTP là quốc tịch trong đó một khi nó làm cho một kết nối, được một số dữ liệu, đó là nó. 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à duy trì một hằng số kết nối đến máy chủ. Các trang web về cơ bản là ngắt kết nối, mặc dù chúng tôi sẽ xem trước khi dài như thế nào chúng ta có thể mô phỏng những điều như Facebook chat và Gchat, mà duy trì illusion-- hoặc thực sự làm duy trì một kết nối liên tục sử dụng công nghệ hiện đại hơn. 

Nhưng nếu tôi đi đến, nói, counter.php, đây là một ví dụ đơn giản, như chúng ta sẽ thấy, mà hiện cũng Tôi đã đến thăm trang web không thời gian. 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. Nếu tôi lại một lần nữa, nó biết tôi đã ở đây trước. 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. 

Vì vậy, có một số cộng plussing xảy ra, nhưng thông báo đ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, 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. Vâng, nếu tôi đi vào counter.php, thông báo một cách đơn giản nó là. 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 bắt đầu dùng cho các cấp được gọi là phiên đầu. Bắt đầu phiên. 

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 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 rằng họ sẽ có mặt ở đây khi người sử dụng mà đến back-- một giây 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 cookie của họ, như chúng ta cuối cùng sẽ thấy. Và bây giờ tôi chỉ có một nếu điều kiện ở đây. 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 của siêu này global-- băm này bảng, nếu bạn will-- gọi là phiên, sau đó đi trước và lấy giá trị từ suy nghĩ session-- điều này như là một khu mua sắm cart-- và lưu nó trong một biến tạm thời được gọi là truy cập. 

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, chỉ khởi tạo nó để 0. Cuối cùng, xuống đây, đi và đưa trở lại vào giỏ mua hàng hoặc phiên giá trị của truy cập 1. Vì vậy, nó quay ra rằng điều này here-- thùng chứa đặc biệt 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 vào các từ thay vì numbers-- vẫn còn ngay cả sau khi người sử dụng đi xa. Một lần nữa, tôi sẽ quay trở lại trang hiện nay. Nó được một phút hoặc lâu hơn. Nhưng nó nhớ rằng tôi đã đã ở đây 19 lần trước đây. Đây là lần thứ 20 của tôi. 

Và vì vậy đây sẽ là chìa khóa để thực hiện bất kỳ trang web mà nhớ 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 để mua hoặc bạn có một số số tin nhắn chưa giải quyết. Bất cứ lúc nào bạn muốn ghi nhớ thông tin, chúng ta sẽ thấy PHP rằng, giống như một số ngôn ngữ khác, 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, 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ó. Một khi bạn nhận lại rằng phản ứng, không có gì là trở về từ máy chủ bằng cách mặc định. Nhưng chúng tôi sẽ xem làm thế nào để làm việc xung quanh đó. 

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. Chúng tôi đã nhìn thấy một vài ví dụ khác nhau đó. 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, lý do mà Frosh nhắn tức thì ví dụ đi từ tìm kiếm thực sự xấu xí để slightly-- tốt, vẫn ugly-- nhẹ ít xấu xí mặc dù vẫn còn xấu xí là bởi vì nếu chúng ta nhìn vào mã nguồn ở đây, nó quay ra rằng tôi có điều này ở đầu của tập tin. 

Chỉ ra rằng bootstrap là một trong nhiều thư viện tự do có sẵn trên 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 hoặc HTML hoặc bất kỳ số lượng ngôn ngữ. 

Và những người này here-- ban đầu ra của Twitter-- chỉ có một bó toàn bộ phong cách. Đó là một tập tin lớn ở đây có ai đó đã viết, hoặc một ai đó đã viết, trong thời gian đó xác định màu sắc và định dạng và không có điều gì để tôi có thể loại vay cú pháp của họ và không phải tìm ra làm thế nào để đặt ra hình thức của tôi. Điều này cũng được minified do đó, một máy tính có thể hiểu nó, nhưng không thiết phải là một con người. Vì vậy, đó chỉ là lý do tại sao cách điệu có thay đổi. 

Nhưng bây giờ chúng ta làm tốt hơn về thiết kế, bởi vì nếu chúng tôi ở lại xuống con đường này quá lâu, mã của chúng tôi sẽ nhận được lộn xộn và hỗn độn. Vì vậy, hãy tập trung vào những ví dụ ở đây. Cuối cùng cho ngày hôm nay. 

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. Nó chỉ có các liên kết đến bài giảng và giáo trình, 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. Và nếu trên thực tế, nếu tôi mở View Page Source, bạn sẽ thấy rằng đây là thực sự, HTML thực sự đơn giản. Và trên thực tế, mặc dù đây là một tập tin PHP bên dưới mui xe, nó vẫn chỉ nhổ nước bọt chỉ ra HTML cho bây giờ. 

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. Và nếu tôi bấm vào tuần bằng không, chúng ta thấy điều này. Và nếu tôi bấm vào Thứ tư, chúng ta thấy điều này. Và điều này dường như là PDF của các slide từ ngày hôm đó. Tất cả tôi đã thực hiện là liên kết với một neo thẻ để URL này ở đây. 

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. Hãy xem cách nó được thực hiện. Nếu tôi đi vào thư mục mvc0, chúng ta sẽ thấy một vài file. Một là một README, vì vậy nếu một số trong số này là quá nhanh, bạn chỉ có thể poke xung quanh nhàn nhã hơn sau đó. Và thông báo ở đây là một file index.php. Nó chỉ ra rằng nếu bạn mình, con người, không chỉ định một tên cuối cùng trong một URL, máy chủ web thường suy luận một số tên mặc định cho bạn. Một chỉ số chấm một cái gì đó nói chung là mặc định. 

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, 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. Nó chỉ biết bằng cách nào đó kỳ diệu để tìm index.php. Nó chỉ là một ước. Có thể được gọi là bất cứ điều gì. 

Vì vậy, nếu bây giờ tôi đi vào index.php, bạn sẽ thấy đó, chúng ta hãy indeed-- thoát khỏi những ý kiến ở đây vì có thực sự không có gì thú vị để it-- này chỉ là cứng mã hoá HTML. Vì vậy, đó là phù hợp, Mặc dù vậy, với tuyên bố của tôi mà bạn có thể trộn lộn HTML và PHP. Không có thực tế lập trình logic trong đây. 

Và các tập tin khác là khá nhiều chỉ là nhàm chán. Nó chỉ là mã hóa cứng một tuần đây để tuần một m và một tuần w, vào ngày Thứ Hai và Thứ Tư. 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. 

Và đó là loại một takeaway chính. Chú ý như thế nào dư thừa này là. 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 nơi tôi lấy một file-- lẽ trong tuần zero-- sao chép nó khi một tuần đến xung quanh, và tinh chỉnh một vài giá trị. Có lẽ chúng tôi sẽ có thể để làm tốt hơn thế này. 

Vì vậy, chúng ta hãy quay trở lại để MVC và đi vào phiên bản một. Và nhận thấy tôi đã có một vài tác phẩm, bởi vì những gì đã đượ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, chúng ta hãy quay trở lại vào chỉ số, và chỉ postulate-- một khi tôi thoát khỏi những comments-- những gì một phần của trang này có lẽ là ở mỗi một trong những tập tin của tôi? Chỉ cần gọi nó ra. Những dòng được nhân đôi có lẽ trên tất cả các trang? Yeah? 

HỌC SINH: [không nghe được]. 

DAVID J. Malan: từ 1 đến 9. Yeah, hoàn toàn. Từ 1 đến 9, ngoại trừ 8 thay đổi một chút vì CS50 trở thành bài giảng hay tuần không hay một cái gì đó. Nhưng gần như giống hệt nhau. Vì vậy, tất cả những thứ này chỉ là loại sao chép và dán. Và có một vài dòng khác tôi có thể nghĩ đó có lẽ là giống hệt nhau trên tất cả các tập tin. 

HỌC SINH: 12 và 13. DAVID J. Malan: Yeah. Chắc chắn, 12, 13, và 14 có lẽ, chỉ vì những thứ thú vị đang xảy ra trên đường 11 và 10, do đó nó sẽ có vẻ. 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. 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-- 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ờ. Nó không hoàn toàn đơn giản như trước đây. 

Nhưng một khi bạn bắt đầu đọc nó một cách cẩn thận, đó là khá đơn giản những gì nó làm. Rõ ràng dòng 1 và dòng 8 đã thay thế tất cả những thứ bạn chỉ identified-- mặc dù chỉ cho các biện pháp tốt, 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ứ. 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 các nội dung hiệu quả ngay tại đây vào tập tin này. 

Vì vậy, trong header.php, như bạn có thể suy ra từ tên của nó, sẽ là tiêu đề của trang. Đó là loại mồ côi ở đây. Nó chỉ có đầu vào nó, nhưng không có nội dung chi tiết dưới đây. 

Và nếu tôi nhìn vào chân trong khi đó, đó là các tập tin khác mentioned-- 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ứ. Vì vậy, đây là chân. Đây là tiêu đề. Đây là tập tin đó là thay đổi, vậy tại sao không cố gắng yếu tố ra sự tương đồng với hai dòng này ở đây? 

Nhưng chúng ta có thể làm sạch này lên một chút nữa. Tôi sẽ đi trước và mở ra phiên bản hai nơi chúng ta sẽ thấy rằng có một tập tin mới, helpers.php. Chúng tôi sẽ xem những gì mà là trong một thời điểm. Hãy đi đến chỉ số, như điểm vào như trước. 

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. Nhưng những người giúp đỡ là loại thích helpers.c và helpers.h từ PSET 2 hoặc PSET 3 từ lâu khi bạn thực sự đã tìm kiếm và tìm cho PSET đó, 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. Đó là những gì đang xảy ra ở đây. 

Và giờ đây, dòng 3 hơi khác một chút. Và nó chỉ là một dòng. Để làm điều này nhiều hơn rõ ràng, tôi có thể chỉ 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. Nhưng đó không phải là thực sự thay đổi các chức năng. Nó chỉ là một dòng mã thực sự. 

Rõ ràng, có một chức năng một nơi nào đó gọi là làm cho tiêu đề, và đây là nơi mà mọi thứ nhận được khá mạnh mẽ. 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? Đâ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 không gian. Có dấu ngoặc vuông. 

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, đó là, một lần nữa, giống như bảng băm. 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 phải luôn luôn giống nhau. Bạn phải nhớ những gì đặt x is--, y, z hoặc z, y, x-- và bạn phải luôn luôn cung cấp cho họ theo thứ tự hoặc xem chúng nếu bạn đã quên. 

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 ý cặp theo đó tiêu đề là tên của một cuộc tranh cãi trong trường hợp này và CS50 là giá trị của nó. Và thực tế là tôi có các dấu ngoặc vuông ở đây có nghĩa là tôi có thể cũng vượt qua trong một cái gì đó giống như một tuần là 0 hoặc 1 hoặc 2 hoặc 3. Vì vậy, chúng tôi đã tham số chức năng này theo cách như vậy nó có thể mất nhiều đầu vào, nhưng bây giờ nó chỉ là một. 

Nếu bây giờ tôi đi vào helpers.php, nhận thấy những gì nó làm. Đây là một chút các chức năng mới, nhưng bây giờ chỉ mất trên niềm tin rằng đây là cú pháp mà bạn định nghĩa một hàm trong PHP. Bạn có nghĩa là nói chức năng. Bạn không chỉ định trở lại gõ, và đó là phù hợp với chi tiết biến trước đó nơi mà bạn không thực sự gõ mạnh. 

Điều này chỉ quy định cụ thể rằng, theo mặc định, điều này có một liên kết mảng như một tham số. Và bạn biết gì không? Nếu người dùng không vượt qua một trong, giả định một giá trị mặc định. 

Đâ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ờ dữ liệu, ngay cả khi bạn không cho nó bất cứ điều gì, là có được một mảng nhưng một một sản phẩm nào. 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 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 bạn có thể đặt trong dấu ngoặc vuông, và tạo ra các biến trong số họ để cuối cùng chúng ta có thể truy cập để chúng trong footet.php và header.php. Đó là một chút trừu tượng, vì vậy hãy để tôi điểm này ra. 

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 đề với một giá trị của CS50. Nếu tôi bây giờ nhìn vào helpers.php, nhận thấy rằng RenderHeader được chiết xuất dữ liệu mà tôi đang đi qua trong, và sau đó yêu cầu header.php. 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. 

Nếu tôi mở header.php, thông báo rằng tôi đã không còn cứng mã hóa các CS50 từ trong tập tin tiêu đề này. 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, trong đó. Nhưng cần chú ý những gì tôi đã làm. Tôi đã mở HTML. Sau đó tôi có mở đầu và tiêu đề mở. 

Và sau đó bên trong của tiêu đề mở và thẻ gần, tôi có một chút mã PHP. Và đây là một tốt đẹp, nhưng cú pháp, mà chỉ có nghĩa là echo ra. Nó có nghĩa là this-- echo following-- nhưng điều này là hấp dẫn hơn để viết. Echo ra tiêu đề đó là được thông qua trong. 

Nhưng điều gì làm bạn nghĩ rằng HTML đặc biệt char là tất cả về, đặc biệt là nếu bạn có một số kinh nghiệm trước khi HTML? Những gì nhân vật có thể là nguy hiểm để vượt qua trong một trang nơi bạn đang tự động tạo ra các trang web với mã như thế này? 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. 

Phiên bản hai là điều này. Và nhận thấy tất cả mọi thứ là tốt, làm việc tốt. 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 không phải là CS50. Đó là mở khung kịch bản cảnh báo hello thế giới, gần báo duy nhất, ngoặc đóng, dấu chấm phẩy, khung mở, dấu gạch chéo kịch bản. 

Script, như chúng ta sẽ thấy cuối cùng nhìn thấy, là một thẻ 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à JavaScript bên trong của một trang web. Và bây giờ nhận thấy sự logic ở đây. Dưới đây là một phím gọi là tiêu đề. Đây là giá trị của nó dài điên bây giờ. 

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 đề, Tôi gọi chức năng này trên đó danh hiệu đầu tiên. 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ý, nhưng nó an toàn. Nó chỉ có vẻ ngu ngốc. 

Nhưng giả sử thay vì Tôi đã quên mất điều này. 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 và bạn sẽ nhận được một số siêng sinh viên hoặc bạn bè sắp tới 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 và về cơ bản tiêm chích ma unbeknownst cho bạn vào trang web của bạn bằng cách nào đó. 

Bởi vì nếu tôi chỉ đơn giản là nhổ tiêu đề ra ở đây và danh hiệu there-- tốt, nếu danh nghĩa trông như thế này và PHP như một ngôn ngữ mà có thể nhổ ra ngôn ngữ văn bản khác, này là nghĩa đen đi để thay thế thẻ này với, Tất nhiên, những gì tôi đặt ở nơi khác. 

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, bây giờ tôi có hello thế giới ở đây. 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ì đó nhiều hơn một chút độc hại ở đây, giống như có 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í dot href được, báo giá, unquote, HTTP business.com, nhưng ngược lại đó từ ngày khác. 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 trang web này ở đây. 

Và thực sự, tôi không muốn thậm chí đi đến business.com bởi vì tôi không muốn cho biết đó là những gì. Nhưng điều này cũng sẽ kích hoạt mã được tiêm vào trang này. 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ố 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 mà mã của bạn là không thể khai thác được. 

Vì vậy, bây giờ là một phiên bản thứ ba ở đây. Nó nhận được một chút sành điệu. Tôi đã không thực sự like-- phía hậu môn của tôi đã 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à RenderHeader và RenderFooter đó là gần như giống hệt nhau. 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 vào chỉ là một gọi là render, đã mất một số thứ hai như tên của mẫu, cuối cùng để render-- hoặc header hoặc footer? 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 như tôi làm cho tiêu đề cho tiêu đề nhưng không cho chân, Tôi có thể làm điều đó. 

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. 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. Vì vậy, đó là một bước tiến tới một thiết kế tốt hơn. 

Chúng ta có thể thực hiện việc này thêm một bước nữa. Nếu tôi đi vào thứ tư của tôi phiên bản này, chú ý hiện nay rằng tôi đang làm một cái gì đó loại thậm chí nhiều hơn khó hiểu. Và tôi biết đây là một nhiều để hấp thụ cùng một lúc, nhưng chúng tôi chỉ là loại làm sạch mọi thứ lên. 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 includes-- chỉ là một tùy ý tên, nơi tôi muốn đặt công cụ mà tôi muốn include-- và sau đó phần còn lại của việc này là như nhau. 

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 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. Và sau đó trong các mẫu, Tôi có điều này ở đây, quá. 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. Và chúng tôi rất nhanh chóng sẽ di chuyển ra từ chức năng mặc định của PHP, mà chúng tôi bắt đầu ở đây với, nơi bạn chỉ cần trộn lộn PHP, và HTML và CSS của bạn, và bạn chỉ cần nhổ nó ra và bạn đi về theo cách của bạn. Nó không sẽ rất dễ bảo trì. 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 và những thứ bao thanh toán mà ra. Chúng tôi sẽ làm như vậy ở đây. 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. 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ẹ. Để bảo mật hơn ý thức, bởi vì nếu tôi nhìn vào nghe ở đâ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à công cộng, và sau đó vào cùng một mức độ, có thể nói, Tôi đã có bao gồm và các mẫu và sau đó là tập tin văn bản readme. 

Và lý do tôi đã có cấu trúc nó thích this-- và rất nhiều web 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, 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 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, như chúng ta đã đã có Ví dụ đầu tiên này. 

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ữ 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 một cách chính xác và bảo mật hơn ý thức trong tâm trí có thể chúng tôi bắt đầu để bảo vệ chống lại tất cả các bạn bè mà bạn có hoặc ở trong hay bên ngoài của lớp này người, ngay sau khi bạn bắt đầu thực hiện chương trình mình trên web, sẽ bắt đầu chọn vào bạn và vào chúng. 

Và vì vậy chúng tôi sẽ xem xét cuối cùng là ở thiết kế này. Đây chỉ là một hình ảnh rằng mô tả sau đây. 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, và chúng ta sẽ chỉ bắt đầu kêu gọi những người điều khiển. Đó là nơi bộ não của trang web của chúng tôi thực sự là. Sau đó chúng ta sẽ có tầm nhìn và quan điểm là đơn giản như chỉ riêng files-- gọi là mẫu, thường xuyên. Họ chỉ có tính thẩm mỹ của trang của tôi, những gì tôi muốn trang để xem like-- màu sắc và cách bố trí và vị trí của tất cả các biến. 

Và sau đó thú vị hơn rằng chúng ta sẽ nhận được 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 mà chúng tôi mang vào hình ảnh, giống như cơ sở dữ liệu thực tế, để khi bạn muốn để lưu thông tin, 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, 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. 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ư và giới thiệu cơ sở dữ liệu sau đó. 

[MUSIC CHƠI]