[მუსიკალური სათამაშო] 

დევიდ ჯ Malan ყველა უფლება. ეს არის CS50. ეს არის დაწყების კვირაში რვა. თქვენ შეიძლება გავიხსენოთ, რომ ჩვენ შეჩერდით ბოლო დროს ეძებს ახალ ენაზე საერთოდ. ფაქტობრივად, ერთი, რომ საკმაოდ მსუბუქი და ის კი არ არის პროგრამირების ენა. ეს მარკირებას ენა, რომელიც საშუალებას გვაძლევს რეალურად სტრუქტურა და ვებ გვერდები. და როდესაც თქვენ რაღაც ერთად ამას ან თქვენ მალე, თუ თქვენ არ უკვე. ჩვენ ვაპირებთ გამოვიყენოთ კასკადური Style Sheets, ან CSS, რომელიც სხვა ტიპის ენის ერთად თვისებები და ღირებულებები რომ აპირებს მოდით რამ მოსწონს შეცვალოს ფერი და შეცვალოს პოზიცია და ამ სახის შესწორებები. მაგრამ დღეს და შემდგომი, ჩვენ ვიწყებთ ფოკუსირება უფრო ძლიერი ენებზე, ფაქტობრივი პროგრამირების ენებს, როგორიცაა PHP. 

ასე PHP უკვე გარშემო გარკვეული დროის განმავლობაში. და როგორც დაინახავთ, ეს შეიქმნა, პირველ რიგში, დასაწყისში ფაქტობრივი გამოყენება ვებ განვითარების და რეალურად გამოიმუშავებს ვებ გვერდებზე. ასე რომ, რა სახის ფუნქციები აქვს ენის საჭირო იმისათვის, რათა ვებ გვერდები დინამიურად ეს? 

სხვა სიტყვებით, თუ გსურთ გამოიმუშავებენ content dynamically--, როგორიცაა Facebook- ის Newsfeed, რომელიც მუდმივად იცვლება, ან მყისიერი შეტყობინებები, რომ პოპ up დრო to time-- მოსწონს რა ძირითადი ნაწილი ფუნქციონირებისთვის თქვენ უნდა პროგრამირების ენა რომელიც მოგცემთ დინამიურად ბეჭდვა ახალი ინფორმაციის ეკრანზე? 

სტუდენტი: Code. დევიდ ჯ Malan: Code. OK. ჩვენ მიიღოს, რომ. უფრო ზუსტი. მე ვგულისხმობ, ჩვენ შეგვიძლია ამის გაკეთება ეს C, გულწრფელად. ეს იქნება ტკივილი კისრის. But-- ეს ვალდებულება? 

სტუდენტი: Yeah. ცვლადები, იქნებ? დევიდ ჯ Malan: ცვლადები. OK, დარწმუნებული ვარ. ცვლადი შეიძლება, რა თქმა უნდა დაგვეხმაროს out. და კიდევ რაღაც მარტივი. ჩვენ მას პირველივე პროგრამის პირველივე დღეს როდესაც ჩვენ რეალურად განაცხადა: "Hello World". 

სტუდენტი: ბეჭდვა. 

დევიდ ჯ Malan: Print, არა? ბეჭდვითი, ან printf წელს მსოფლიო C. ასე რომ, ამ დროს, ჩვენ გვქონდა ჩვენი განკარგულებაშია ენა C, in particular-- და კიდევ Scratch, რომ ამ საკითხზე, რომ შეგიძლიათ გენერირება სტრიქონები. 

ისე, თუ HTML, როგორც ჩვენ ვნახეთ გასულ კვირას, არის უბრალოდ მთელი bunch of სტრიქონები თუმცა ღია ფრჩხილებში და დახურული ფრჩხილებში და გარკვეული რითმის და ამის მიზეზი, ასე რომ, ჩვენ შეიძლება მართლაც დაიწყოს მომტანი ვებ გვერდები ან ხელით აკრეფით მათ გარეთ gedit ან Microsoft Word, რომ matter-- ჩვენ უბრალოდ უნდა ტექსტური რედაქტორი. 

ან ჩვენ შეგვიძლია დავწეროთ კოდი, თქვენი წინადადება ადრე, რომ მოდით დინამიურად წარმოქმნის HTML, და რომ ის, რასაც ჩვენ ვაპირებთ დაიწყოს აკეთებს PHP და საბოლოოდ კი ენის მოუწოდა JavaScript, არის გამოიყენოს ერთი ენიდან გენერირება სხვა. და მართლაც, ეს არის ის, რაც Facebook და ბევრი, ბევრი სხვა საიტები ამის გაკეთება რეალურად დინამიურად არაა ახალი ინფორმაციის თქვენთვის. 

მოდით დავიწყოთ გაკეთება cryptic ეძებს ხაზი, მაგრამ ერთი რომ სინამდვილეში საკმაოდ ძლიერი. ჯერჯერობით, ჩვენ უკვე გამოყენებით C, რომელიც შედგენილი ენაზე. და მხოლოდ სწრაფი recap-- შედგენილი ენა აქვს, რაც დამახასიათებელი? თქვენ აშკარად უნდა შეადგინონ , მაგრამ რას ნიშნავს ეს? ჰო? 

სტუდენტი: ეს უნდა იყოს აწყობილი მანქანა კოდი. 

დევიდ ჯ Malan: OK. ეს უნდა იყოს აწყობილი შევიდა მანქანა კოდი. ასე რომ თქვენ მიიღოს თქვენს კოდებს, რომელიც არის ერთგვარი English მსგავსი. თქვენ გარდაქმნას, რომ რაღაც დაბალი დონის რაც საბოლოოდ მოუწოდა ობიექტის code-- 0 და 1 ს. და ეს იმ 0 და 1 ს, რომელიც CPU, როგორიცაა იმ მიერ Intel, რეალურად ესმის. 

ახლა, PHP და Python და Ruby და JavaScript და bunches სხვა ახალი ენებზე არ არის შედგენილი ენებზე, მაგრამ ინტერპრეტირებული ენებზე, რაც იმას ნიშნავს, თქვენ უნდა აკრიფოთ მათ და შემდეგ თქვენ არ აქციოს ისინი 0 და 1 ს. თქვენ ნაცვლად მხოლოდ გთავაზობთ შემდეგ, როგორც შეყვანის სხვისი პროგრამა, მოუწოდა თარჯიმანი. და რომ პირის პროგრამა შემუშავებულია გვესმოდეს რა თითოეული და ყველა სიმბოლო Python ან PHP ან Ruby ან ნებისმიერი რაოდენობის სხვა ენებზე ნიშნავს. 

ასე რომ, ყველა ჩვენ გვჭირდება რაღაც მსგავსი. ასე რომ, ფაქტობრივად, მე ვაპირებ წასვლა მეტი ელექტრო აქ, ისევე, ნებისმიერ ძველი ფანჯრის, და ჩვენ ვაპირებ წავიდეთ წინ და გახსნა ფაილი სახელად, ვთქვათ, hello. ახლა ადრე, მე შეიძლება გადაარჩინა ეს თუნდაც ფაილის გაფართოება, მაგრამ მე ვაპირებ ამის გაკეთებას რაღაც უფრო მარტივი აქ. მე ვაპირებ წავიდეთ წინ და დავიწყოთ ეს ფაილი ამ cryptic სინტაქსი. ასე რომ, "შესახებ, ბინ, env, გარემოს, php. " 

ეს უბრალოდ ერთი ხაზი კოდი, რომ ვაპირებ გითხრათ, ჩემი ოპერაციული სისტემა, გადასვლა თქვენს ადგილობრივ გარემოს რასაც არ არის, იქ, სადაც PHP is-- interpreter-- და წავიდეთ წინ და გამოიყენოს, რომ თარჯიმანი ინტერპრეტაცია შემდეგი კოდი. ახლა, ეს არის ერთგვარი მახინჯი თვისება PHP. მაგრამ ამ ენაზე, ნებისმიერი დროს წერთ PHP კოდი, თქვენ უნდა ერთი ამ მახინჯი PHP tags დემარკაციას დასაწყისში თქვენი code-- <? php. 

მაგრამ ქვემოთ აქ, მე შემიძლია ახლა რაღაც საკმაოდ მარტივია, ისევე printf hello მძიმით მსოფლიოს წარმატებული ნ ახლოს გაცემა, დახუროს ფრჩხილებში. და შემდეგ უბრალოდ კარგი ღონისძიება, მე ვაპირებ წავიდეთ წინ და ახლოს ჩემი php tag მეტი აქ ასე რომ ყველაფერი გამოიყურება ლამაზად საკმაოდ დაბეჭდილი. 

და როგორც კი დააჭირეთ Save gedit არის რეალურად ჭკვიანი საკმარისი შევხედოთ, რომ პირველივე ხაზი და ხვდები, რა, თქვენ წერილობით PHP კოდი. მიადევნე თვალი სინტაქსის შედეგი ეს ფერები აქ ისე, რომ იგი დგას ცოტა მეტი. მაგრამ ახლა მე ვაპირებ წავიდეთ ქვემოთ ჩემი ტერმინალის ფანჯარაში. მე მიუახლოვდით. 

ამ პროგრამას ერქვა "Hello" ასე რომ, მე ვაპირებ, რომ dot slash hello, მაგრამ ნებართვა მიეცა. და bash. ჩვენ რეალურად მოვისმინეთ, რომ რაც რამდენიმე კვირის წინ კონტექსტში Shellshock, ერთ-ერთი იმ შეცდომებს. 

მაგრამ ნებართვა უარყო ჩვენ ვნახეთ ადრე, ალბათ, სხვადასხვა კონტექსტში. ვინმეს გავიხსენოთ, როგორ თქვენ დაფიქსირება რაღაც სადაც ნებართვა უარყო მსგავსი? რა არის ბრძანება, მინიმუმ? 

სტუდენტი: Chmod. დევიდ ჯ Malan: ჰო, chmod, შეცვლის რეჟიმში ფაილი. და თქვენ მიიღებთ ყველა უფრო გამოიყენება ამ მომავალ კვირას მომდევნო პრობლემა მითითებული. მაგრამ ახლა, მე ვაპირებ შეცვლას რეჟიმი არ იყოს იკითხება, მაგრამ, ყველას executeability პრივილეგიები, უნარი გასაშვებად ამ ფაილის. და მე ვაპირებ დაავალოს რომ ფაილი hello. 

თუ მე ახლა dot slash მიესალმები მიუთითოთ, თქვენ ვხედავ, ფაქტობრივად, ჩემი პროგრამა, hello მსოფლიოში. და რა ნაბიჯი არ მინდა ნათლად გაფართოებული საერთოდ? შედგენა. ასე რომ მე უბრალოდ გაიქცა ეს პროგრამა საკმაოდ უბრალოდ. 

და აღმოჩნდება, თქვენ შეგიძლიათ ამის გაკეთება ბევრი სინტაქსი თქვენში C. ნება მომეცით წავიდეს დღევანდელი კოდი, რომელიც მე დააყენა ჩემი vhost დირექტორია აქ, რეალური მიზეზები ჩვენ დავბრუნდებით. და მე ვაპირებ წასვლას, ვთქვათ, პირობები 1. 

და ნახავ აქ, პირველი და პირველ რიგში, მთელი bunch of კომენტარები. მაგრამ ეს არის რეალურად ხელახლა შექმნა PHP პროგრამა გავაკეთეთ კვირის ერთი ე.წ. პირობები 1.გ სადაც მიზანი ცხოვრების ამ პროგრამის როგორც ჩანს, ვთხოვო მომხმარებლის რიცხვი და შემდეგ დაკავდით ფუმფულა ანალიზი ეს, რომლის დროსაც იტყვით, თუ ეს დადებითი ან უარყოფითი ან ნულის ტოლია. და მე, რათა ეს მხოლოდ იმიტომ, გარდა იქნებ ერთი პატარა დეტალი, ეს არაფრით ისე შორს C. 

რა არის დამახასიათებელი აქ რომ იქნებ jumps გარეთ თქვენ, როგორც ცოტა განსხვავებული? შესაძლოა, ორი რამ. ჰო? 

სტუდენტი: დოლარის ნიშანი n? 

დევიდ ჯ Malan: ჰო. ასე დოლარის ნიშანი n იმყოფება. და დოლარის ნიშნები, როგორც ჩვენ დავინახავთ, ვაპირებთ იყოს სარემონტო დასაწყისში ნებისმიერი ცვლადი PHP- ში. ეს ორივე კარგი და bad-- კარგი რომ ეს არის ერთგვარი აშკარა რა ცვლადი, ცუდი, რომ ეს კიდევ ერთი რამ უნდა აკრიფოთ. და კიდევ ერთი სხვა რაც ჩვენ არ საკმაოდ ჩანს, მინიმუმ ამ მართლწერა. yeah? 

სტუდენტი: readline. 

დევიდ ჯ Malan: readline. Readline ჩვენ არ, თავისთავად, in C, მიუხედავად იმისა, რომ არსებობს რაღაც მსგავსი, მაგრამ ჩვენ გამოიყენება getstring, და ეს არის მისი კოლეგა. ასე რომ, თუ მე წასვლას ამ დირექტორია, რომელიც ხდება უნდა იყოს, როგორც მე ახსნას ცოტა ჩემი vhost დირექტორია და ჩემი წყარო მომსახურება, და მე წავიდეთ წინ და ამის გაკეთება dot slash conditions-- whoops-- dot slash პირობები 1, დაინახავთ, კიდევ ერთხელ, იგივე issue-- ნებართვა მიეცა. 

ნება მომეცით, zoom in და ამის chmod პლუს x პირობების შესახებ, dot slash პირობები. მინდა მთელი გთხოვთ, 50. და ჩვენ შეიძლება ითამაშოს ამ თამაში მთელი დღის განმავლობაში. ის აპირებს მოიქცეს ისე, როგორც ეს კვირაში ერთი. 

OK, ასე არ არის, რომ სხვადასხვა, გარდა არა მხოლოდ, რომ უმნიშვნელო ცოტა სინტაქსი, მაგრამ ზედა, მე კიდევ ერთხელ მქონდა ეს ხაზი, რომელიც საშუალება მომცა ის, რაც ჰგავს C პროგრამა მოუწოდა hello, მოუწოდა პირობები 1. მაგრამ ეს არ არის 0 და პირობა მე შესრულებაში პირდაპირ. ის ნაცვლად გაშვებული ეს თარჯიმანი, რომლის სახელიც ხდება, რომ იყოს იდენტური ენაზე. პროგრამა ეწოდება PHP, და ჩემი კოდი ქვემოთ ხაზის ერთი მიმდინარეობს შევიდა იგი. 

ჩვენ შეგვიძლია გავაკეთოთ კიდევ ერთი საკმაოდ მარტივი მაგალითად თქვენში რაღაც ჩვენ გავაკეთეთ კვირის წინ. კიდევ ერთხელ, ეს არის ერთგვარი თვითნებური ბლოკი კოდი რომ როგორც ჩანს, არ რა, როდესაც თქვენ გაუშვით? რა არის ეს აპირებს ბეჭდვა, სავარაუდოდ? 

ასე რომ თავდაპირველად on line 16, ეს ვაპირებ ვთქვა x არის 2, ალბათ. % D არის იგივე როგორც $ i for printf. ასე შემდეგ ის cubing, dot, dot, dot, ხაზი 17. და შემდეგ ხაზი 18 როგორც ჩანს, მოვუწოდებთ ფუნქცია Cubed. და სად არის Cubed განსაზღვრული? 

ასევე, როგორც ჩანს, ხაზი 25, ასე რომ ეს არ არის ყველა, რომ სხვადასხვა. მაქვს რამდენიმე ზემოთ მოყვანილი კომენტარები , მაგრამ იმ ნაწილს, ეს არის საკმაოდ მარტივია პორტირების ან კონვერტაციის საწყისი C პროგრამა PHP ვერსია. მაგრამ არსებობს რამდენიმე განსხვავებები, რომ იქნებ უნდა გადმოხტა. რა არის განსხვავებული, თუ როგორ შეიძლება დაწეროს იგივე პროგრამის C? 

სტუდენტი: [INAUDIBLE]. 

დევიდ ჯ Malan: არსებობს არ პროტოტიპი up დაბრუნება. ასე PHP-- და გულწრფელად, ბევრი თანამედროვე languages-- არის ბევრი ჭკვიანია და უფრო სასარგებლო ვიდრე C compilers, რომ თქვენ შეგიძლიათ განათავსოთ ფუნქცია აქ, თქვენ შეგიძლიათ განათავსოთ ფუნქცია აქ, და თარჯიმანი აპირებს ამის გაკეთება თქვენ სასარგებლოდ მოსმენით მთელი ფაილი, სანამ იგი გადაწყვეტს რომ ზოგიერთი ფუნქცია არ არსებობს. ასე ლამაზი გაუმჯობესების წლის შემდეგ. მაგრამ არსებობს ასევე რაღაც სხვა განსხვავებული ან არყოფნის აქ. ჰო? 

სტუდენტი: [INAUDIBLE]. დევიდ ჯ Malan: ჩვენ არ უნდა განაცხადოს ტიპის ცვლადი, ასე რომ, ჩვენ ვხედავთ, სანამ ხანგრძლივი, რომ არსებობს სხვადასხვა ტიპის PHP, მაგრამ თქვენ არ უნდა მიუთითოთ მათ, რომელიც ასევე არის ორივე კარგი და ცუდი. და კიდევ ერთი სხვა რამ დაკარგული. 

სტუდენტი: არ არსებობს ბიბლიოთეკები. 

დევიდ ჯ Malan: არ არსებობს ბიბლიოთეკები. OK, ასე რომ ლამაზი. ჩვენ კიდევ უფრო გარეთ ყუთში. ასე რომ რეალურად გაცილებით მეტი რამ, ვიდრე ვფიქრობდი, იყო განსხვავებული. როგორ შესახებ გზა უკან? რა არის ეს? ამბობენ, რომ ეს კიდევ ერთხელ? 

სტუდენტი: Pointer. 

დევიდ ჯ Malan: არ მითითებას. OK, მინიმუმ ამ მაგალითად, არ. რომ სამართლიანი. ასე არ არის პოინტერები in PHP რეალურად კულტურას. არსებობს რაღაც მოუწოდა ცნობას, მაგრამ ჩვენ არ დახარჯოს დიდი დრო არ არსებობს. და რა? 

სტუდენტი: Main. დევიდ ჯ Malan: Main. ასე რომ, ეს იყო biggie მე ვფიქრობ. ყურადღება მიაქციეთ, რომ არ არსებობს მთავარი შესვლის წერტილი. თქვენ უბრალოდ დაიწყება წერილობით თქვენი კოდი. და ეს არის ფაქტიურად იქნება მომგებიანი როდესაც ჩვენ გადასვლას მომენტალურად რეალურად გამოყენებით ამავე ენის ვებ- პროგრამირების, რისთვისაც არ მინდა, რომ მხოლოდ ერთი შესვლის წერტილი. ჩვენ დაგვჭირდება აქვს bunch მისამართები, bunch სხვადასხვა ფაილები ყველა აღების შესახებ input და წარმოების გამომავალი. 

მაგრამ აქ არის ძალიან საშინელება მაგალითად, მე პირობა დადო, ბოლო დროს, კერძოდ, ამ საქაღალდეში აქ, misspellings. ასე რომ ამ ფაილის speller, რომელიც ჩვენ არ დახარჯოს დიდი დრო, არ არის არსებითად porting-- P-O-R-T. უბრალოდ მიცემულ სიტყვას, როდესაც, ვთქვათ, თქვენ კონვერტირება ერთი ენიდან სხვა ხელით, როგორც წესი. 

ეს არის პორტირება PC ვერსია speller საწყისი pset 5. და მე არსებითად შეეცადა კონვერტირება ეს ხაზს, როგორც მჭიდროდ როგორც შემიძლია. ასე რომ, თუ გსურთ ამ სახის რამ, ეს რეალურად ღირს რაღაც მომენტში უბიძგებენ მათ ორივე up მხარეს მხარეს და ხედავს, თუ რა არის იგივე და რა განსხვავებული. მაგრამ ისინი საკმაოდ darn მსგავსი. თუ გახსოვთ რა speller კი ჩანდა, მიუხედავად იმისა, რომ თქვენ არ უნდა შეიცვალოს ეს ფაილი, ეს საკმაოდ მსგავსი სტრუქტურულად მხოლოდ რამდენიმე ცვლილებების აქ და იქ. 

ასე რომ, ეს მხოლოდ იმის თქმა, რომ ეს საკმაოდ პირდაპირი გარდაქმნას speller C- დან PHP. მაგრამ ლექსიკონის, არსებობს რაღაც კიდევ უფრო მყარი. ნება მომეცით წავიდეთ წინ და ქმნის ჩემი dictionary.php ფაილი. ისე ოდნავ განსხვავებული, რომ ჩვენ მოვუწოდებთ მას .php ნაცვლად გ. იმიტომ, რომ ეს არის PHP ფაილი, I გავაკეთოთ ოდნავ annoyingly-- აქვს დაიწყოს ფაილი PHP აქვს, რომ. და მე ვაპირებ წავიდეთ წინ და განსაზღვრავს რამდენიმე ფუნქციები. ფუნქცია მოუწოდა შემოწმება, რომელიც არის აპირებთ სიტყვა, როგორც ადრე. მაგრამ ეს არგუმენტი ის გვექნება დოლარი ხელი მოაწეროს, რადგან ჩვენ, კიდევ ერთხელ, გამოყენებით PHP. სხვა ფუნქცია dictionary.c იყო load და მიიღო სახელი ლექსიკონი, ასე რომ მიიღოს, რომ ფუნქცია მზად ვართ წავიდეთ. 

კიდევ ერთი dictionary.c რა? ზომა ერთი ძვირფასი პირობა, ყოველ შემთხვევაში, თუ ინახება რამდენიმე ცვლადი გარშემო. ასე ზომა აქვს დაბრუნდეს ცვლადი. და შემდეგ იყო განიტვირთოს. 

ასე იყო ეს ოთხი ფუნქციების პრობლემა მითითებული 5 რომ თქვენ საჭირო განახორციელოს მონაცემები სტრუქტურა და სტრუქტურებში. ასე რომ, მე პირობა დადო, რომ PHP, ჩვენ შეგვიძლია განვაცხადოთ, hash მაგიდა, მაგალითად, ყველა, რომ უფრო ადვილად. ფაქტობრივად, თუ მინდა hash მაგიდა, მე უბრალოდ აპირებს მოსწონს, რომ და იქ ჩემი hash მაგიდასთან. და ეს შენიშვნა, საშინელება, ჩვენ შეჩერდით ბოლო დროს. და თქვენ იცით, თუ რა მინდოდა ცვლადი ზომა, ასევე, ეს ერთი არ არის ყველა რომ განსხვავდება C, მაგრამ მე ვაპირებ წავიდეთ წინ და ამის გაკეთება. და შეამჩნია არსებობს მონაცემები ტიპის. და მე დაბრუნდეს შემდეგ და რეალურად დაამატოთ ზოგიერთი კომენტარი. მაგრამ რაც შეეხება დატვირთვა? 

თუ დოლარის ნიშანი ლექსიკონი არის სახელი ჩემი ფაილი და მე რეალურად გვინდა ჩატვირთვა სიტყვა ამ მაგიდასთან არის, შემიძლია რეალურად გააკეთებს რაღაც საკმაოდ მარტივია. One-- და ეს არის minorly annoying-- in PHP, თქვენ უნდა მიუთითოთ შიგნით ფუნქცია თუ გინდათ გლობალური ცვლადი რომ საზღვრებს მიღმა. 

მაგრამ ეს არ არის განსაკუთრებით საინტერესო ახლა. რა არის უფრო საინტერესო ის არის, ეს თითოეულ მშენებლობა რომ ვთქვი ბოლო დროს. და აღმოჩნდება, რომ PHP ფუნქცია აქვს მოუწოდა ფაილი, რომლის მიზანი ცხოვრებაში არის გახსნას ფაილი და იკითხება ყველა მისი ხაზები მასივი და გადასცემს მათ უკან. 

რაც უნდა ითქვას, მე შემიძლია ამის გაკეთება ლექსიკონი ასე რომ ახლა ეფექტურად, როდესაც მე მოვუწოდებ ფაილი, ეს აპირებს გადასცემს ჩემს უკან მასივი სიტყვა ფაილი. ეს არ არის ყველა, რომ კარგი. ის კვლავ იქნება ონლაინ სიტყვა, რაღაც წრფივი. მაგრამ მე წავიდეთ წინ და iterate მეტი თითოეული სიტყვა გამოყენებით რომ სინტაქსი ჩვენ ვნახეთ მოკლედ ბოლო დროს. და დაინახავთ, რომ ეს უფრო მომავალ PSET. 

მაგრამ ახლა მაქვს მარყუჟის iterating მეტი ყოველ სიტყვას ლექსიკონი. და თითოეულ iteration, გავიხსენოთ, მე ვარ მოუწოდებდა არსებული სიტყვა "სიტყვა". და ყველა ის აპირებს დააყენა სიტყვა შევიდა ლექსიკონი არის იქნება სიტყვა ვხვდები "ჭეშმარიტი". ეს არის ჩემი ჩანართით ფუნქცია. ეს არის ჩემი დატვირთვის ფუნქცია ჩემი ლექსიკონი. ახლა ეს ცოტა მოტყუებას, რადგან, იცით, რა, რომ რეალურად წარმატებული ო ს დასასრულს სიტყვა რომ მე, ალბათ, თავი დაეღწია, მაგრამ ეს არ არის პრობლემა, რადგან PHP აქვს ფუნქცია მოუწოდა chop რომელიც სიტყვასიტყვით chops off ერთი ხასიათი ბოლომდე. ასე რომ პრობლემა არ არსებობს. ჩვენ წავიდა წინ და პრაქტიკულად შემცირდა, რომ მხოლოდ ამ. და ახლა მე უნდა ალბათ შენარჩუნება სიმღერა ზომა, მოდით მინიმუმ ამის გაკეთება ზომა ++. შემიძლია, რომ, როგორც ადრე. და მაშინ ეს ალბათ აპირებს იმუშავებს მხოლოდ ჯარიმა, ისე, რომ ის დაბრუნდება ნამდვილი. გაკეთდეს. PSET 5. 

[სიცილის] 

დევიდ ჯ Malan: OK. ჩვენ ვაპირებთ, რომ კიდევ ერთხელ მომდევნო PSET, ძალიან. ასე რომ, რა ზომით? ისე, ეს ერთ-ერთი იმედია არის როგორც თქვენ მოელოდა, ბოლო დროს, მიუხედავად იმისა, რომ მე უნდა გავაკეთოთ ამ სულელური გლობალური რამ. უბრალოდ ექსპონატი ენის დიზაინი. 

მაგრამ ჩეკი არის ცოტა უფრო საინტერესო. ასე რომ, თუ მე მიიღო დოლარი მოაწეროს სიტყვა, მე პირველი გვინდა ხელი მიუწვდება რომ გლობალური ცვლადი მაგიდა. და ახლა, თუ მინდა შეამოწმეთ თუ სიტყვა არ არის, შემიძლია უბრალოდ ვთქვა, თუ ეს მართალია, რომ შემდეგ არის მითითებული მაგიდა, მაშინ წავიდეთ წინ და დაბრუნების true; სხვაგან, დაბრუნების ცრუ. გაკეთდეს. მეორე ნახევარში PSET 5. 

ყველა უფლება, ასე რომ კიდევ ერთხელ, მე ჭრის რამდენიმე კუთხეების. სამართლიანობა, მე უნდა ალბათ გაატარონ რამდენიმე წამში ამ განხორციელება. და ალბათ არ ეყო ყველა საათი დააყენა PSET იმდენად. ასე strtolower ფუნქცია. რაღაც მსგავსი existentialist in C, მაინც გმირები, მაგრამ PHP მიიღო მთელი სიმებიანი ვერსია. 

რომ აპირებს აიძულოს ყველაფერი ამას, რაც ზოგიერთი თქვენ შეიძლება არ გაკეთდეს canonicalize რა თქვენ აყენებს თქვენი ლექსიკონი. და ახლა თქვენ შეგიძლიათ ამის გაკეთება C, ძალიან. ეს არაფერ შუაშია PHP. 

მაგრამ ნებისმიერ დროს თქვენ უნდა ლოგიკური მდგომარეობაში, ისევე, როგორც რაღაც ხაზი 10 არსებობს, რომელიც მხოლოდ აპირებს შეაფასოს ჭეშმარიტი ან ცრუ და თქვენი თუ სხვაგან ნათლად ბრუნდება ნამდვილი ან ყალბი, მე ვერ უბრალოდ ნამდვილად რომ ეს sexier და მხოლოდ ამის მსგავსი რამ. ისე, რომ ჩემი გამშვები ფუნქცია. უფლება, თუ ლოგიკური ბრუნდება ნამდვილი ან ყალბი, მოდით უბრალოდ დააბრუნოს ეს სწორი მოშორებით. 

და კიდევ რამდენიმე სხვა შესწორებები მე ვერ აქ და იქ. Load-- განიტვირთოს, სხვათა შორის, რომ კეთდება. არაფერი ესაქმებათ. მას შემდეგ, რაც ყველა მეხსიერება PHP და მრავალი სხვა ენებზე ფაქტობრივად მართავს თქვენთვის. ასე რომ, მაშინ C, გავიგე მტკივნეულად, არაფერი თქვენ malloc ან calloc ან realloc, თქვენ გასათავისუფლებლად თავს. არაფერი თქვენ fopen, თქვენ უნდა fclose, ასე რომ რესურსი საბოლოოდ გათავისუფლდა და იარაღები, როგორიცაა Valgrind არ შეამჩნია და არ უჩივიან, რაც კარგი რამ აწარმოებს მათ. 

მაგრამ აუცილებლად უნდა არსებობდეს იყოს რამდენიმე catch, არა? წინააღმდეგ შემთხვევაში, ჩვენ სახის შეეწირა მთელი bunch of კვირა. ასე რომ იქ ნებისმიერი რიგი მიზეზების გამო ამიტომ, ჩვენ სახის მიიღოს ამ ტრაექტორია, მაგრამ არის ვაჭრობის საგანი. უფლება, ეს უკვე თემატური. 

რა შეიძლება ვაჭრობის საგანი აქ მოძრაობს, C- დან PHP? იგრძნობა ყველა გაიმარჯვებს, ჯერჯერობით, გარდა ცოტა უშნო აქ ან იქ. ჰო. რა არის ეს? 

სტუდენტი: [INAUDIBLE] მეხსიერება. დევიდ ჯ Malan: Speed. OK. ისე, ჩემი სიჩქარე საკმაოდ სწრაფად. არა? მაგრამ სიჩქარე აღსრულების პროგრამა? OK, ასე რომ სამართლიანი წერტილი. 

ისე, როგორც ეს მოხდებოდა, მე წინასწარ cued up როგორც ჩემი ლელო გადაწყვეტილებას, რომელიც მე მქონდა დიდი საბჭო იყო ლელო გადაწყვეტა, და მაქვს, რომ ამ დირექტორიაში აქ. ასე რომ, მე ამ მომენტში, შემიძლია წავიდეთ წინ და აწარმოებს ამ თემაზე მეფე ჯეიმს ბიბლია, hitting შეიყვანეთ. და ეს იმედია სწორი განხორციელების მიზნით, მაძლევს, სულ 0.38 წამი, რომ გარკვეულწილად თვითნებური მაგალითად. 

და თუ ახლა წასვლას ამ მეორე ტერმინალის ფანჯარაში აქ, სადაც მე პირველად გაიხსნა gedit, ნება მომეცით წასვლას დღევანდელი code-- რომელიც, კიდევ ერთხელ, ამ დირექტორია აქ და ნება მომეცით წავიდეთ წინ და აწარმოებს speller. ასე რომ, უბრალოდ უნდა იყოს მკაფიო, ეს არის PHP ვერსია. მე უბრალოდ გვიჩვენებს ზედა აქ. 

ასე რომ, თუ speller of tilde CS50 Pset 5 ტექსტები, King James, შევა. ეს ჯერ კიდევ უფრო სწრაფად, ვიდრე წერა ის C, მაგრამ საერთო დრო არის, შეტყობინება, 0.93, ხოლო ჩემი C დაფუძნებული განხორციელება იყო 0.38. ასე რომ, ეს ტრივიალური განსხვავება. 

და ეს არის მხოლოდ ერთი ფაილი. თუ თქვენ უნდა აწარმოებს ორი პროგრამები წინააღმდეგ დიდი საბჭო და მთელი bunch of საშუალებებით ტესტირება, ეს, რა თქმა უნდა დაამატოთ მდე. და თუ გვქონდა, უფრო დიდი მონაცემები კომპლექტი, ეს, ძალიან, რომ დაამატოთ მდე ყველა სხვა. ასე რომ დიახ, გადამხდელი ზოგიერთი ფასი სიჩქარე მართლაც შემთხვევაში. რა? ჰო? 

სტუდენტი: თანხა RAM გამოყენება. 

დევიდ ჯ Malan: თანხა RAM გამოყენება. ასე რომ, მე არ მისცეს ერთი მეორე ვფიქრობდი, როდესაც წერა ამ PHP ვერსია, თუ რამდენად მეხსიერება ვიყავი გამოყენებით. მე მთლიანად ვუტოვებთ, რომ PHP თავად და ვინც დაწერა, რომ პროგრამა. და რომ შეიძლება იყოს OK, მაგრამ თუ მე რეალურად აინტერესებს squeezing იმდენი სპექტაკლი გარეთ ჩემი პროგრამა და გარეთ ჩემი საიტი ან გარეთ რასაც ინსტრუმენტი მე მშენებლობის, შესაძლოა, PHP, რა თქმა უნდა, არ არის სწორი ენაზე. 

და ის ფაქტი, რომ სწორედ ამიტომ, მაგალითად, ბევრი ვებ servers-- ფაქტობრივი პროგრამები, ემსახურება up ვებ content-- არ არის დაწერილი PHP ან Python ან Ruby. ისინი დაწერილი, როგორიცაა თქვენ ახლა არ pset 6 in C, ასე რომ შეგიძლიათ შესუსტებას ყველა ცოტა შესრულება გარეთ და რეალურად განახორციელოს ჯარიმა მარცვლეულის კონტროლი რა არის ქვეშ hood და არა მხოლოდ მას თავისთავად უფრო მაღალი დონე მონაცემთა სტრუქტურას. 

განვიხილოთ მას შემდეგ, რაც ყველა, ვინც არ in PHP განხორციელდა რომ ცნება hash table-- ეს რეალურად უფრო სწორად მოუწოდა ასოციაციურ მასივი ჯერ მას აქვს რაიმე იდეა, თუ რა სახის საშუალებებით თქვენ აპირებთ უნდა იყოს აყენებს სტრუქტურა? ასე რომ, ცხადია, არა? ეს generic ინსტრუმენტი ინსტრუმენტარიუმის არის ის, იმ პირობით, რომ ვისაც სურს გამოიყენოს იგი, და აუცილებლად არ შეიძლება ოპტიმიზირებულია საბოლოოდ ზუსტად რა გსურთ. 

ასე სავაჭრო-offs-- განვითარების დროს შეიძლება განსხვავდება, შესრულება შეიძლება განსხვავდება, სირთულის ან მეხსიერების გამოყენება შეიძლება განსხვავდება. და მერე რა, თქვენ იპოვით უფრო ის არის, რომ იქ იქნება სხვადასხვა ინსტრუმენტები სავაჭრო. და რეალურად სუპერ უმრავლესობა ხალხის საბოლოო პროექტების ამ კლასში, მჯერა, რომ ეს თუ არა, C არ აპირებს იყოს მარჯვენა ენის გამოყენება. 

და ფაქტობრივად, ერთი takeaways საბოლოო ჯამში, ნებისმიერი კლასის მოსწონს ეს არის ის, რომ თქვენ ფიქრი, ასევე, რა უნდა გაიყვანოს off თაროზე, როდესაც გსურთ გადაწყვიტოს ზოგიერთი პრობლემა. და მართლაც, ჩვენ გადაკვეთა ხიდი კიდევ უფრო როგორც შევხედავთ უფრო ენები თუნდაც მის ფარგლებს გარეთ დღეს. 

მოდით ახლა გარდამავალი to ალბათ უფრო ნაცნობი კონტექსტში გამოყენების ენა მოსწონს PHP. ეს გარკვეულწილად გავრცელებული გამოყენება ბრძანების, სცენარების წერა ისევე როგორც მე, მაგრამ ეს ბევრად, ბევრად უფრო საერთო. და ეს იყო განკუთვნილი უნდა იყოს გამოყენებული ფორმა ფაილი, რომელიც, როგორც წესი, დასრულდება in .php-- მაგრამ ეს არ prerequisite-- რომ თავად გამოიმუშავებენ ვებ გვერდი. 

ნება მომეცით წავიდეთ წინ და გახსნა რამდენიმე მაგალითები მე მომზადებული წინასწარ. და ეს არის რეალურად ერთგვარი ნამდვილი ისტორიები, რომ ერთ-ერთი პირველი რამ, მე ოდესმე გააკეთა თავს დასრულების შემდეგ CS50 და შესაძლოა, ვფიქრობ, CS51 წლის წინ ჩემი roommate მე და ეხმარება აწარმოებს freshman intramural სპორტული პროგრამა, რომელიც, იმ დროს, იყო freshman რეგისტრაციისას სხვადასხვა სპორტული შევსების ნაჭერი ქაღალდი, როგორც ერქვა, ფეხით მთელს ეზოში Wigglesworth, და მითუმეტეს, რომ ზოგიერთი proctor კარი drop. და შემდეგ იგი გადის მათ და მაშინ რეალურად მოგვწერეთ ხელით რომ ჩვენ რეგისტრირებული რამდენიმე სპორტული. 

ასე ნათლად, შესაძლებლობა გაუმჯობესება. ამ დღეებში, თქვენ შეიძლება მივმართოთ მხოლოდ Google ფორმები, მაგრამ უკან დღეს, ჩვენ უნდა რეალურად მიღწევა for-- ეს კი არ არის, რომ ხანგრძლივი ago-- მიღწევა პროგრამირების ენა, რომელიც არ PHP. ამავე დროს, ეს იყო რაღაც მოუწოდა Perl, რომელიც წავიდა vogue შემდეგ. მაგრამ იდეა იგივეა. 

და მე არსებითად დაჯდა ცდილობენ პორტი მიდის Perl ვერსიები PHP, მაგრამ სრული პასუხისმგებლობის შეზღუდვის, არ მისცეს ნებისმიერი აზრის ესთეტიკას უბრალოდ არ არის. ასე რომ აქ არის ვებ-გვერდზე. ეს ფაილი. თუ მე მიუახლოვდით, მისი, როგორც ჩანს, მოუწოდა froshim0.php მხოლოდ იმიტომ, რომ ჩვენი პირველი მაგალითად ამ სერიას. და შენიშნავს, რომ მას აქვს რა, როგორც ჩანს, უნდა იყოს ძალიან მახინჯი HTML ფორმა, მაგრამ ფორმა საინტერესოა რადგან იგი საშუალებას იძლევა me უზრუნველყოს მომხმარებლის შეყვანის ბრაუზერში. 

ახლა, ბოლო დროს, როდესაც ჩვენ გვქონდა ფორმით, ვის ჩვენ წარმოადგინოს ჩვენი მოთხოვნას პარამეტრი, მდგომ პარამეტრი როგორც ერქვა? ასე რომ, Google, არა? ჩვენ მთლიანად punted იდეა აკეთებს არაფერი, რომ შეყვანის. 

მაგრამ დღეს, ჩვენ წარმოების გამომავალი. და ქცევის I ვაპირებ აქ თავდაპირველად საკმაოდ ტრივიალური. დავით, მე შეამოწმოთ off ეძებთ აქ, ამბობენ Matthews აქ. მე არ იქნება კაპიტანი. მე ვაპირებ დააწკაპუნეთ რეგისტრაცია. და შენიშნავს, რომ URL აქვს შეიცვალა დარეგისტრირდეთ-0.php, და შემდეგ იქ ამ მახინჯი ტექსტი აქ. მე მისცა არ აზრის გაფორმებით ამ. 

მაგრამ რა არის საინტერესო ის არის, რომ სამი ღირებულებები, როგორც ჩანს გავიდა. ეს არის PHP- ის ერთგვარი ექვივალენტი printf-- ჩვენ დავინახავთ, რა ეს ნამდვილად მოუწოდა ამ bit-- რომ უბრალოდ ბეჭდავს out რაც თქვენ შევიდა იგი. ასე რომ, ეს მეტყველებს იმაზე, რომ რომ ფორმა ჰქონდა მინიმუმ სამი მიმართულებით მას, და დაინახა me აკრიფოთ. ერთი იყო ჩემი სახელით, ერთი იყო გენდერული, ერთი საერთო საცხოვრებელში. კაპიტანი კი არ მიიღოთ გაიგზავნა სერვერზე იმიტომ, რომ არ შეამოწმოს იგი. 

ასე რომ, ეს არის იმის თქმა, როგორც ჩანს, როდესაც თქვენ წარმოადგინოს რამ ინტერნეტში, არა მარტო URL ზოგჯერ change-- ზოგჯერ არა. ფაქტობრივად, ფაილის სახელი შეიცვალა, მაგრამ რა არის არსებობს URL რომ ჩვენ არ ვხედავთ, რომ ბოლო დროს Google. ჰო? 

სტუდენტი: არა შეკითხვაზე string 

დევიდ ჯ Malan: არ არსებობს შეკითხვაზე string. არ არსებობს კითხვის ნიშნის რაღაც. არ არსებობს კითხვის ნიშნის q უდრის კატა, როგორც ჩვენ გავაკეთეთ ბოლო დროს. და იქ ნამდვილად არ კითხვის ნიშნის სახელი შეადგენს David ან კარი შეადგენს Matthews, ასე რომ, სადაც ის არის, რომ ყველა აპირებს? 

ასევე, ნება მომეცით დაბრუნდეს gedit აქ და გახსენით პირველი იმ ფაილებს ჩემი vhost, ადგილობრივი მასპინძელი, public დირექტორია აქ და წასვლას froshim0. გამოდის, რომ თითქმის ყველა ამ გვერდზე არის მხოლოდ HTML. და ეს შეიძლება იყოს უცნობ, მაგრამ ეს მალე იქნება ასე PSET 6 და pset 7 და PSET 8. მაგრამ ეს არის მხოლოდ HTML გვერდი. 

და საინტერესო ნივთები როგორც ჩანს, მეტი აქ. ფორმა აქვს, რომლის სამოქმედო ატრიბუტი აქვს მნიშვნელობა რეესტრის 0. ამიტომ, როდესაც მე წარმოადგინოს ეს, ის მიდის, რომ ფაილი. მაგრამ მეთოდი, სხვადასხვა today-- პოსტი. გამოდის, რომ ის მინიმუმ ორი მეთოდი ინტერნეტში გამოიყენება გააგზავნოს ინფორმაცია ბრაუზერზე სერვერზე. Get აყენებს მას URL. Post აყენებს მის ფარგლებს გარეთ. და როდის და რატომ შეიძლება თქვენ რეალურად მინდა ნახვა გამოიყენოთ პოსტი, მაშინ ნაცვლად მისაღებად, უბრალოდ ინტუიციურად? ნებისმიერი ნახვა. რა სახის მონაცემები უნდა გადაეცეს მხოლოდ დასკვნის ახლა ფოსტით განსხვავებით მისაღებად, თუ ჩვენ ვნახეთ ორი განსხვავებები? სტუდენტი: [INAUDIBLE] უზრუნველსაყოფად. დევიდ ჯ Malan: თუ გსურთ რაღაც უნდა იყოს უსაფრთხო. ასე რომ თქვენ შეიძლება აკრიფეთ პაროლი შევიდა ნახვა, საკრედიტო ბარათი შევიდა ნახვა გვინდა სახის ამ suboptimal თუ ბრაუზერი დააყენა, რომ არც შიგნით URL. რატომ? ხედავთ, რომელიც არ როგორც ჩანს, ასეთი დიდი გარიგება, მაგრამ შანსი თქვენ საკმაოდ ხშირად ფეხით დაშორებული თქვენს კომპიუტერში ან გამოყენება კომპიუტერული ლაბორატორიები, და ასე ვინმე სხვაგან, ან თუნდაც roommate ადვილად ფეხით up და ვნახავთ რომ პირადი ინფორმაცია. როდესაც თქვენ ელ-ფოსტის გაგზავნა ინტერნეტით, ალბათ, არ მინდა, რომ მონაცემები დასასრული მდე URL ასევე. და ა.შ. არსებობს ნებისმიერი რიგი მიზეზების გამო ამიტომ ჩვენ დაგვჭირდება იმისათვის, რომ ეს აქ. და photos-- უფლება, მე კი არ საკმაოდ წარმოიდგინეთ, თუ როგორ უნდა მიიღოს გრაფიკული, როგორიცაა JPEG, და მისი მისამართი. შეიძლება ამის გაკეთება. არსებობს გზები, კოდირების, მაგრამ ეს უბრალოდ არ არის პირდაპირი, როგორიცაა, რომ. 

ასე რეგისტრაციაში 0 ფაქტიურად ძალიან underwhelming. ყველა ის ამბობს სიტყვასიტყვით ეს. იგი ბეჭდავს out შიგნით ზოგიერთი HTML ტეგები შემდეგ. მაქვს PHP tag აქ წყობილი შიგნით წინასწარ აქვს. "წინასაარჩევნო" მხოლოდ იმას ნიშნავს, წინასწარ ტექსტი მონო დაშორებული, როგორც საბეჭდი მანქანა. 

Printr ბეჭდვითი რეკურსიული ფუნქცია. და მაშინ არსებობს ამ საინტერესო რამ აქ. და ჩვენ დავბრუნდებით ამ იმიტომ, რომ იქ სხვა, მაგრამ დოლარის ნიშანი ხაზგასმა პოსტი, როგორც ჩანს, ცვლადი PHP, სადაც რამე თქვენ გაგზავნას ბრაუზერზე სერვერზე იღებს ინახება თქვენთვის. და ვნახავთ, თუ როგორ უნდა რომ ინფორმაცია ადრე ხანგრძლივი. 

მაგრამ პირველი, მოდით დავუბრუნდეთ ოდნავ განსხვავებული მაგალითი. შესვლის register-- ან უფრო სწორად, froshims1.php, რომელიც გამოიყურება ცოტა განსხვავებული. მე მივიღე ცოტა მეტი ძალისხმევა გაფორმებით, მიუხედავად იმისა, რომ ჯერ კიდევ საკმაოდ მახინჯი. მაგრამ მე ვაპირებ წავიდეთ წინ და ტიპის "დავითი" არის. კაცი. ჩვენ შეამოწმოს "კაპიტანი" ამ დროს. ჩვენ ყველაფერს გავაკეთებთ, Matthews. და რეგისტრაცია. 

და ამ დროს, მისი თქმით, hm, ნამდვილად არ. ყველა უფლება, ასე რეესტრიდან 1? ნება მომეცით წასვლას ღია რეესტრში 1 and-- hm. ყველა უფლება, ასე რომ ეს არის საინტერესო და ამ არის სტეპინგზე ქვის ახლა მიმართ უფრო საინტერესო პროგრამები. 

შეამჩნია ზედა ამ ფაილი აქვს PHP tag, ისევე როგორც ზოგიერთი კომენტარი. და ეს, ახლა, განადგურების მოდით უბრალოდ, თავი დაეღწია იმ კომენტარი ისევე, როგორც ისინი C. და მე ვამტკიცებ, ეს ბლოკი კოდი კომენტარის რომ ეს კოდი არის Validating წარდგენის. 

ისე, გამოდის, რომ ცვლადები, როგორიცაა დოლარის ნიშანი ხაზს უსვამს, პოსტი არიან მოუწოდა სუპერ globals. ისინი მოსწონს ეს სპეციალური გლობალური ცვლადი , რომ მხოლოდ omni-ამჟამად ხელმისაწვდომია თქვენი პროგრამა. და თქვენ შეგიძლიათ გამოიყენოთ კვადრატული ფრჩხილი ნოტაცია ინდექსი შევიდა მათ არ იყენებთ ნომრები როგორც 0, 1, 2, 3, მაგრამ ეს სიტყვები. 

ასე, რომ თქვენ შეიძლება ვიფიქროთ, დოლარის ნიშანი ხაზს უსვამს, პოსტი, როგორც ერთგვარი hash მაგიდა რომ თქვენ ვერ გაივლის გასაღების, ძიება სიტყვა შორის კვადრატულ ფრჩხილებში, და ის აპირებს მოგცემთ უკან ღირებულება, რომელიც მომხმარებლის ფაქტობრივად უზრუნველყოფილი. PHP ფუნქცია აქვს მოუწოდა ცარიელი, რომ მხოლოდ ამბობს არა, ეს ცვლადი არის ცარიელი, ან არ. ჩვენ გვაქვს ეს ორმაგი ბარები, რომელიც მხოლოდ იმას ნიშნავს, ან, როგორც C. 

ასე რომ, ფაქტობრივად, ამ ხაზის 4 არის მხოლოდ განაცხადა, რომ, თუ მომხმარებელი არ მისცეს სახელი ან არ მისცეს გენდერული ან არ მისცეს სტუდქალაქის, წავიდეთ წინ და გადამისამართება მას ან მისი მეშვეობით ხაზი აქ. ასე რომ, ეს არის პატარა cryptic, მაგრამ ეს მხოლოდ იმას ნიშნავს სიტყვასიტყვით დაბრუნდეს ამ ადგილას, ასე რომ punts შესახებ უკან, სადაც იგი მოვიდა. მაგრამ ეს პატარა inelegant რომ მე მძიმე კოდირებული. 

მაგრამ თუ ეს თუ მდგომარეობა არ შეაფასოს ჭეშმარიტი? რა შემთხვევაში შესახებ არ მომეცი მისი ან მისი სახელი და სტუდქალაქიდან და გენდერული? რომ, თუ მდგომარეობა არ არის აპირებს შეაფასოს ჭეშმარიტი, ასე რომ არ მოხვდა გასასვლელი 7 ხაზი. ასე რომ, რა ხდება? და ეს არის ის, რაც საინტერესო PHP. 

თქვენ შეგიძლიათ ჩამოშალოს და გარეთ of PHP რეჟიმში, ასე ვთქვათ. თუ გსურთ ზოგიერთი კოდი შეასრულოს, თქვენ შეგიძლიათ გახსნათ და დახუროთ PHP აქვს და კოდი იქ, როგორც მე ვაკეთებ აქ. როგორც კი თქვენ დახურვა PHP tag, სერვერზე უბრალოდ აპირებს Spit out რასაც თქვენ დააყენა იქ. და მართლაც, ეს ნაწილი იყო ორიგინალური დიზაინის PHP, უკეთესი უარესი, იყო ეს commingling კოდი და markup ენაზე. და ჩვენ ვხედავთ, რომ ეს ძალიან სწრაფად devolves შევიდა სასადილო. და ამიტომ ჩვენ ყველაფერს გავაკეთებთ უკეთესია, ვიდრე საბოლოოდ, მაგრამ მხოლოდ შეამჩნია მარტივია, რომელთანაც მე რეალურად შეუძლია შეასრულოს გარკვეული ლოგიკა. 

მაგრამ მაინც ცოტა underwhelming. მოდით გახსენით ვერსია ორი Frosh IMS, რომელიც როგორც ჩანს წარუდგენს register2.php. ასე რომ, ეს ფაილი რეალურად ხდება გამოიყურება თითქმის იგივე. მე ვაპირებ წასვლა Frosh მესიჯები 2. მაგრამ Frosh მესიჯები 2, ვნახოთ, რა მოხდება. 

David, დააჭირეთ რადიო ღილაკს, ეს ე.წ.; Matthews, არ კაპიტანი. რეგისტრაცია. თქვენ დარეგისტრირებული. ნამდვილად არ. Oh დაველოდოთ, ჩვენ გავაკეთეთ რომ, მაგალითად, არ გვაქვს? ყველა უფლება დგას. ჩვენ ყველაფერს გავაკეთებთ, სამი. აშკარად რაღაც დაახლოებით უნდა მოხდეს Gmail. ჩვენ იქ. 

ასე Frosh მესიჯები 3 ასე გამოიყურება. არ არის სხვადასხვა. მაგრამ როცა ვაკეთებ, დავით, კაცი, Matthews, და რეგისტრაცია, ამ მესამე და საბოლოო ვერსია პრეტენზიები, უბრალოდ, თქვენ რეგისტრირებული არიან ნამდვილად. ეს ერთგვარი არსებითი. მაგრამ აცხადებენ, ამ მესამე და საბოლოო ვერსია მე ახლა თავიდან ზუსტად ის, რაც ჩემი roommate და მე აშენდა Frosh მესიჯები პროგრამა წლის წინ. და ეს იყო მარტივი. არ არსებობს მონაცემთა ბაზაში, არ Excel-. რაც მთავარია, არ არსებობს უფრო ქაღალდი რადგან ის, რაც ჩვენ გავაკეთეთ ამ პროგრამით ეს იყო რეალურად ელ proctor, რომელიც ადრე მიღების ეს ყველაფერი მეშვეობით ფორმები. 

და როგორც ჩანს, ჩვენ დაპროგრამებული ეს ისე, რომ, როცა ვინმე რეგისტრაციას, ჯონ ჰარვარდის ანგარიშის ელ proctor-- ან თავად ამ შემთხვევაში, John Harvard-- შემდეგი ტექსტი "ეს ადამიანი უბრალოდ არ არის რეგისტრირებული." სახელი დავით კაპიტანი ცარიელი; სქესი, მამრობითი; და dorm, Matthews. 

ასე რომ, რა მოხდა იქ? ასევე, ფაილის საკითხი აქ როგორც ჩანს, register3.php. და თუ გავხსნა ეს, დაინახავთ ორივე ძალა კოდი მოსწონს ეს და ასევე, გულწრფელად, დაუცველობა სისტემის, როგორიცაა ელ. მე ახლახან ეფექტურად პრეტენზია ჯონ ჰარვარდის შემდეგ გზა. 

მაქვს ღია php tag up დაბრუნება, რომელიც უბრალოდ ამბობს, აქ მოდის ზოგიერთი PHP კოდი. აქ, თურმე არსებობს ბიბლიოთეკები PHP. თქვენ უბრალოდ არ უნდა მოიცავს header ფაილი, როგორც დიდი. თქვენ გაქვთ მეტი სამზარეულო ჩაძირვაში, ასე ვთქვათ. 

მაგრამ ამ დროს line 4, მე გვინდა სპეციალური ბიბლიოთეკა, ე.წ. PHP გამგზავნის, რასაც თქვენ შეგიძლიათ დააყენოთ უფასოდ ბევრ სისტემები. Down აქ მე წევრები წარდგენის მხოლოდ შემოწმების საერთოდ მომხმარებლის მისცეს მე სახელი და გვარი, სქესი, და dorm. და თუ ასეა, წავიდეთ წინ და instantiate გამგზავნის. 

შეგიძლიათ წარმოიდგინოთ, რომ ეს, როგორც ხაზი კოდი, რომ უბრალოდ გამოყოფს. ეს იგივეა, malloc, მაგრამ ეს პატარა sexier რომ აღარაფერი ვთქვათ, არა მხოლოდ malloc და ზოგიერთი ზოგადი ნომერი. თქვენ ამბობთ, მომეცი ერთი, მომეცი ახალი ამ. 

და თუ თქვენ პროგრამირდება Java და C ++ ან სხვა ენებზე, თქვენ შეიძლება არ მინახავს ეს. მაგრამ მოკლე ის, თუ უცნობ, ეს ონლაინ აყენებს დოლარის ნიშანი mail სპეციალური struct მოუწოდა ობიექტი, რომელიც აქვს ჩაშენებული ელ ფუნქცია. და ფაქტობრივად, შეამჩნია და მსგავსი სინტაქსი. 

ეს არ არის მაჩვენებელი, თავისთავად. PHP უბრალოდ იყენებს იგივე სინტაქსი. ამ ხაზის ამბობდა გამოყენება SMTP-- უბრალო ფოსტის გადაცემის ოქმი, რომელიც მხოლოდ ოქმი გამოიყენება გასაგზავნად. ეს არის დაზუსტების გამოყენება ჰარვარდის SMTP სერვერი, რომელიც სადღაც აქ კამპუსში. 

ეს ამბობს, რა TCP პორტის ნომერი გაიგო, და მე figured, რომ მიერ googling ან ითხოვს დახმარება. და მერე იმიტომ, რომ ჰარვარდის იყენებს ზოგიერთი სისტემის უსაფრთხოების გვერდის სერვერზე მინიმუმ დაშიფვრა მიმოსვლის, და ეს, მიუხედავად იმისა, რომ ყველას შეუძლია გაუგზავნე it-- მე ვაპირებ ჩართოთ TLS პროტოკოლის შენახვა ამ უსაფრთხო. 

მაგრამ ეს არის სადაც რამ კიდევ ცოტა საშინელი. შემიძლია უბრალოდ თვითნებურად ვთქვა, რომ მე jharvard, და მე არ შემიძლია უბრალოდ თვითნებურად ელ თავს აქ. და მერე შეგიძლიათ მიუთითოთ სათაური ეს ხაზი აქ. 

და ეს უბრალოდ გამოიყურება მახინჯი, მაგრამ ეს უბრალოდ რამოდენიმე გაერთიანების. თურმე PHP აქვს სუპერ სასარგებლო სიმბოლო, როგორც ზოგიერთი ენებზე, dot ოპერატორი, რომელიც უბრალოდ სიტყვასიტყვით concatenates სიმებიანი შემდეგ სიმებიანი შემდეგ სიმებიანი, და თქვენ არ უნდა malloc ან ფიგურა გარეთ საერთო სიგრძეზე სიმებიანი. უბრალოდ ამას. და მართლაც, იმიტომ, რომ მე concatenating ყველა ამ საკითხზე ამ წერტილების, სწორედ ამიტომ, ელ I გაგზავნილი ჩანდა, როგორც ეს გააკეთა. 

და მერე ბოლოს, აქ, მე გაგზავნის mail. ასე რომ, თუ ეს ყალბი, მე უბრალოდ აპირებს იღუპება, რომელიც არის ფუნქცია, რომ მხოლოდ ნამუშევარი ეკრანზე გარკვეული შეცდომა. მაგრამ ეს არის, ფაქტობრივად, მოუწოდებდა send ფუნქცია. წინააღმდეგ შემთხვევაში, თუ ეს ყველაფერი ვერ, იგი გადამისამართებების ჩემს უკან აქ. 

და რატომ, რომ მე რეგისტრირებული ნამდვილად? ისე, ეს მოხდა სწორედ აქ. ასე რომ, მე მოუტანს ეს ყველაფერი რამდენიმე მიზეზის გამო. 

ერთი, ეს არის ზუსტად ის, თუ როგორ, თუ თქვენ აშენება ზოგიერთი ნახვა საბოლოო პროექტი ან რეალურ ცხოვრებაში, ეს არის როგორ თქვენ გააგზავნით ელ შეგახსენებთ თქვენს მომხმარებელს ან აბონენტებს. ეს არის, თუ როგორ გაუგზავნე დაგავიწყდათ შეგახსენებთ. ეს არის, თუ როგორ გაგზავნოს ადამიანი შეტყობინებები რომ მათ აქვთ ახალი Facebook გაგზავნა შექმნილა ან რამე მაგდაგვარს. 

მაგრამ ის ასევე საუბრობს იმისა, რომ ეს შეიძლება უკვე ძალიან კარგად Davin ან ვინმე სხვას. და მე ვიტყვი, ამ სახის ღიმილით, რადგან მე ვარ სრულიად დარწმუნებულია რა გადის რამდენიმე თქვენი გონება ამ ეტაპზე. მაგრამ ეს არის ერთ-ერთი იმ გააკეთებს, როგორც მე ამბობენ, არ როგორც მე სახის რამ, იმიტომ, რომ ეს არის ტრივიალური გაყალბებას ელ მოსწონს ეს. მაგრამ, როგორც თქვენ შეიძლება არ მინახავს ან წაიკითხონ Crimson, გვიან ასევე, საკმაოდ ტრივიალური ადამიანი კვალი მათ უკან გარკვეული წარმოშობის. და მკითხავთ, გარკვეული დროის, ალბათ, at CS50 ლანჩი, როგორ მე პირველი გაეცნო ძალიან მჭიდროდ თითქმის ed board მრავალი წლის განმავლობაში წინ, როდესაც აღმოვაჩინე, როგორ ინტერნეტით მუშაობდა. ასე რომ, ნებისმიერ case-- ოდნავ მას შემდეგ, რაც ed ფორუმში გააკეთა. 

ასე რომ, ნებისმიერ შემთხვევაში, არ არის მთელი bunch of super globals, როგორც ისინი უწოდებენ აქ, რომელთაგან ერთ-ერთი ჩვენ saw-- დოლარის ნიშანი ხაზს პოსტი. არსებობს კოლეგას მოუწოდა მიიღოს, რომ არის, სადაც პერსონალის URL მთავრდება აპირებს. და არსებობს მთელი bunch of სხვები, too-- სხდომაზე და სერვერზე და cookie. ჩვენ დავბრუნდებით ბმულების სხვა დროს, მაგრამ სხდომაზე სახის cool რადგან სწორედ ახლა, სანამ ახლა ყველაფერი გავაკეთეთ ბრაუზერში სახის მოქალაქეობის არმქონე, ასე ვთქვათ. მე შეგიძლიათ დააჭიროთ გარშემო, მისასვლელი ფაილი სერვერზე, რაღაც ხდება ეკრანზე, მაგრამ მაშინ კავშირი იხურება. Internet Explorer ან Firefox ხატი აჩერებს დაწნული და უბრალოდ ნახეთ რა რომ ვებ-გვერდი შეიცავს. 

ასე HTTP არის მოქალაქეობის არმქონე, რომ ერთხელ იგი იღებს დაკავშირებით, იღებს გარკვეული მონაცემები, რომ ეს. აღარ დაკავშირებით, განსხვავებით Skype, განსხვავებით Facetime, განსხვავებით GChat, რომელიც ინარჩუნებს მუდმივი კავშირი სერვერზე. ვებ ძირეულად გათიშული, თუმცა ჩვენ ვხედავთ, სანამ ხანგრძლივი, როგორ შეგვიძლია სიმულაცია რამ როგორიცაა Facebook სტატისტიკა და GChat, რომელიც შენარჩუნება illusion-- ან რეალურად ამის შენარჩუნება მუდმივი კავშირის გამოყენებით უფრო თანამედროვე ტექნიკა. 

მაგრამ თუ მე, ვთქვათ, counter.php, ეს არის კიდევ ერთი მარტივი მაგალითი, როგორც ვნახავთ, რომ ამჟამად ფიქრობს I ადგილზე იმყოფებოდნენ ნულოვანი დრო. მაგრამ თუ უბრალოდ განაახლეთ გვერდი ის რაღაცნაირად იცის, რომ მე ვიყავი აქ ადრე. თუ განაახლეთ კიდევ ერთხელ, ეს იცის, რომ მე ვიყავი აქ ადრე. და ისევ და ისევ და ისევ და ისევ. 

ამიტომ არსებობს გარკვეული პლუს plussing მიმდინარეობს, მაგრამ ცნობა ცოტა რამ ტრიალებს ოდესმე ასე მოკლედ ზევით და შემდეგ ირთვება, ასე რომ, ეს იმას არ ნიშნავს, რომ მე მაქვს მუდმივი კავშირი ჩემი ელექტრო მოწყობილობების. ისე, თუ მე წასვლას counter.php, შეამჩნევთ, თუ როგორ მარტივი ეს არის. მე პირველად დარეკეთ ამ სპეციალური ფუნქცია, რომ ჩვენ მალე დაიწყოს აღების მიანიჭა მოუწოდა სხდომა დასაწყისია. დავიწყოთ სესია. 

და სხდომაზე ამიერიდან არის მხოლოდ იქნება bucket, როგორიცაა სავაჭრო კალათა, რომელიც შეგიძლიათ დააყენა ღირებულებები და სახის ენდობა, როგორც პროგრამისტი რომ ისინი აპირებენ იყოს აქ, როდესაც რომ შესახებ მოდის back-- მეორე შემდეგ, ერთი საათის შემდეგ კი, ერთი წლის შემდეგ, ასე რომ, სანამ იგი ჯერ არ არის ნათელი, მათი cookies, როგორც ჩვენ საბოლოოდ ვხედავთ. და ახლა მე უნდა თუ მდგომარეობა აქ. ასე რომ, თუ შემდეგ გასაღები, მოუწოდა მრიცხველი, არის შიგნით ამ სუპერ global-- ამ hash მაგიდა, თუ will-- მოუწოდა სხდომა, მაშინ წავიდეთ წინ და დაიბრუნოს ღირებულების session-- think ამ, სავაჭრო cart-- და შეინახოს დროებითი ცვლადში counter. 

წინააღმდეგ შემთხვევაში, თუ ეს არც counter იყო არ არის მითითებული ე.წ. კალათა, მხოლოდ ინიციალიზაცია მას 0. და ბოლოს, ქვემოთ აქ, და ამით უკან შევიდა სავაჭრო carts ან სხდომაზე ღირებულება counter +1. გამოდის, რომ ეს სპეციალური კონტეინერი აქ რომელიც, კიდევ ერთხელ, ერთ-ერთი ასეთი უკავშირდება კოლექტორები მასივი, რომ თქვენ ინდექსი სიტყვა ნაცვლად ნომრები გრძელდება შემდეგაც კი მომხმარებელს მიდის. კიდევ ერთხელ, მე დაბრუნდეს გვერდი არის. ეს იყო წუთი ან ასე. მაგრამ მას ახსოვს, რომ მე აქ 19-ჯერ. ეს არის ჩემი 20 ვიზიტი. 

ასე რომ, ეს იქნება გასაღები ახორციელებს ნებისმიერ საიტზე რომ ახსოვს რომ თქვენ ხართ, რომ თქვენ დააყენა რაღაც გაგებით თქვენი კალათა ყიდვა ან რომ თქვენ გაქვთ ზოგიერთი რაოდენობა შეტყობინებები არ შექმნილა. ნებისმიერ დროს გსურთ გვახსოვდეს ინფორმაცია, ჩვენ ვხედავთ, რომ PHP, როგორიცაა რამდენიმე სხვა ენებზე, გვაძლევს ეს ილუზია სახელმწიფო მიუხედავად იმისა, რომ, როგორც თქვენ ხედავთ PSET 6 როგორც თქვენ მიღების HTTP მოთხოვნა საწყისი კლიენტიდან სერვერზე, რომ არის ის. მას შემდეგ, რაც თქვენ გაქვთ, რომ საპასუხოდ, არაფერია უფრო ბრუნდება სერვერზე იყოს. მაგრამ ჩვენ ვხედავთ, თუ როგორ უნდა იმუშაოს გარშემო რომ. 

ასევე ახლა, მოდით ცდილობენ სუფთა ეს ყველაფერი ცოტა. ჩვენ ვნახეთ რამდენიმე სხვადასხვა მაგალითები არსებობს. Oh, და როგორც განზე, იმ ნაცნობ ან უცნობ, იმ მიზეზით, რომ Frosh მესიჯები მაგალითად წავიდა საწყისი ეძებს მართლაც მახინჯი slightly-- კარგად, ჯერ ugly-- ოდნავ ნაკლებად მახინჯი თუმცა მახინჯი იმიტომ, რომ თუ გადავხედავთ კოდის აქ გამოდის, რომ მე მაქვს ეს ძალიან ზევით ფაილი. 

გამოდის, რომ ჩატვირთვის ერთერთი ბევრი თავისუფლად ხელმისაწვდომი ბიბლიოთეკების არსებობს რომ არსებობს არა პროგრამირების ენები ყოველთვის, მაგრამ CSS ან JavaScript ან HTML ან ნებისმიერი რაოდენობის ენებზე. 

და ეგ აქ თავდაპირველად გამოვიდა საქართველოს Twitter-- მხოლოდ მთელი bunch of სტილის. ეს მასიური ფაილი აქ რომ ვიღაცამ დაწერა, ან ვინმეს დაწერა, დროთა განმავლობაში, განსაზღვრავს ფერები და გაფორმებით და whatnot ასე რომ მე არ შემიძლია სახის სესხის მათი სინტაქსი და არ უნდა გაერკვნენ როგორ ქმნის out ჩემი სახით. ეს ასევე minified ასე რომ კომპიუტერის გამოყენებით შეგიძლიათ მესმის, მაგრამ არა აუცილებლად ადამიანის. ასე რომ, ეს უბრალოდ რატომ stylization არ შეცვლილა. 

მაგრამ მოდით ახლა გავაკეთოთ უკეთესი თვალსაზრისით დიზაინი, რადგან თუ ჩვენ დარჩება ქვემოთ ეს გზა ძალიან გრძელი, ჩვენი კოდი აპირებს ბინძურ ქაოტურია. მოდით ფოკუსირება ეს მაგალითები აქ. ბოლო დღეს. 

ასე რომ, აქ არის სუპერ მარტივი ვერსია 1.0 CS50 ნახვა. ეს მხოლოდ დაბლა ლექციები და სილაბუსი, და ის გამოყენებით რომ უწესრიგო სია tag-- UL tag, რომ ჩვენ ბოლო დროს. და თუ რეალურად, თუ მე გახსენით გვერდის წყაროს ნახვა, თქვენ ნახავთ, რომ ეს არის ნამდვილად, ნამდვილად მარტივი HTML. და ფაქტობრივად, მიუხედავად იმისა, რომ ეს არის PHP ფაილი ქვევმოთ hood, ის ჯერ კიდევ მხოლოდ ფურთხი მხოლოდ HTML ახლა. 

ასე რომ, თუ მე დააჭირეთ ლექციები, ჩვენ ვხედავთ, რომ ეს მოხდეს. და თუ მე დააჭირეთ კვირაში ნულოვანი, ჩვენ ვხედავთ ამ. და თუ მე დააჭირეთ ოთხშაბათს, ჩვენ ამ. და როგორც ჩანს, ეს იყო PDF სლაიდები, რომ დღეს. ყველა მე ვაკეთებ კავშირი წამყვანმა tag ამ URL აქ. 

ასე რომ, ეს მხოლოდ იმის თქმა, რომ ეს არის საკმაოდ მარტივი ვერსია CS50 ნახვა. ვნახოთ, როგორ ეს განხორციელდება. თუ მე წასვლას mvc0 დირექტორია, ჩვენ დავინახავთ, რამდენიმე ფაილი. ერთი README ასე რომ, თუ ზოგიერთი ეს ძალიან სწრაფად, შეგიძლიათ უბრალოდ poke გარშემო უფრო leisurely შემდეგ. და ცნობა, აქ არის index.php ფაილი. გამოდის, რომ თუ თქვენ თავს, ადამიანური, არ დააკონკრეტა, საბოლოო სახელი URL, სერვერზე, როგორც წესი, ასკვნის, ზოგიერთი რა სახელით თქვენთვის. ინდექსი dot რაღაც ზოგადად იყოს. 

ასე რომ, რატომ მომენტში წინ როდესაც მე ვიყავი ამ URL აქ, არ ფაილის სახელი, ფაილი გაფართოება, არ პერიოდი URL. ეს უბრალოდ იცოდა, რატომღაც magically უნდა ვეძებოთ index.php. ეს მხოლოდ კონვენციას. შეიძლება მოუწოდა არაფერი. 

ასე რომ, თუ მე ახლა წასვლას index.php, დაინახავთ რომ indeed-- მოდით დავაღწიოთ კომენტარები აქ იმიტომ არსებობს ნამდვილად არაფერი საინტერესო it-- ეს უბრალოდ მძიმე კოდირებული HTML. ასე რომ, ეს არის თანმიმდევრული, თუმცა, ჩემი პრეტენზია რომ თქვენ შეგიძლიათ commingle HTML და PHP. იქ არ არის ფაქტობრივი პროგრამირების ლოგიკა აქ. 

და სხვა ფაილი არის საკმაოდ ბევრად ისევე, როგორც უინტერესო. უბრალოდ მძიმე კოდირებული კვირაში აქ კვირაში ერთი მ და კვირაში ერთი w, ორშაბათს და ოთხშაბათს. და თუ მე გახსენით კვირის ნულოვანი, შეამჩნია, რომ ეს თითქმის იდენტურია. 

და ეს ერთგვარი გასაღები takeaway. შეამჩნევს, თუ რამდენად ზედმეტი არის. ეს ფაილი ძლივს შეიცვლება, მაგრამ მე გამოყვანილია ერთი ასეთი ასლი / პასტა სამუშაო სადაც მე ერთი ფაილი, სავარაუდოდ, კვირაში ნულოვანი გადაწერა როდესაც კვირაში ერთი მოვიდა გარშემო, და tweaked რამდენიმე ღირებულებებს. ჩვენ ალბათ შევძლებთ როგორ გააკეთოს ეს უკეთესად, ვიდრე ეს. 

მოდით დავუბრუნდეთ მდე MVC და წასვლას ერთი ვერსია. და შენიშნავს, მე მივიღე რამდენიმე ფაილი, იმიტომ, რომ რა იყო საერთო ყველა იმ ფაილებს მხოლოდ მომენტი ago-- თუ მე დაბრუნდეს ვერსია 0, მოდით დავუბრუნდეთ ინდექსი, და მხოლოდ postulate-- ერთხელ დავაღწიოთ comments-- რა ნაწილი ამ გვერდზე სავარაუდოდ ყველა ერთი ჩემი ფაილი? მხოლოდ მას out. რომელიც ხაზს დუბლირებული ალბათ მთელი ამ გვერდებზე? ჰო? 

სტუდენტი: [INAUDIBLE]. 

დევიდ ჯ Malan: 1 მეშვეობით 9. ჰო, აბსოლუტურად. 1 მეშვეობით 9, გარდა იქნებ 8 ცვლის ცოტა, რადგან CS50 ხდება ლექციების ან კვირის ნულოვანი ან რამე. მაგრამ თითქმის იდენტურია. ასე რომ, ყველა ამ პერსონალის მხოლოდ სახის გადაწერა და გაკრული. და არსებობს რამდენიმე სხვა ხაზების მე ვფიქრობ რომ, ალბათ, ერთნაირი მთელი ფაილი. 

სტუდენტი: 12 და 13. დევიდ ჯ Malan: ჰო. რა თქმა უნდა, 12, 13, 14, ალბათ, მხოლოდ იმიტომ, რომ საინტერესო პერსონალი ხდება ხაზები 11 10, ასე რომ, როგორც ჩანს. მოდით შევხედოთ ვერსია 1, რომელიც ცდილობს გააუმჯობესოს ამ. ვერსია 1 ამ MVC მაგალითად ჩვენ გამოგიგზავნით აგიხსნით, თუ რა MVC საშუალებების მომენტში თუ მე წასვლას ინდექსი, ეს ერთგვარი გამოიყურება ცოტა დამაბნეველი ახლა. ეს არ არის საკმაოდ მარტივია, როგორც ადრე. 

მაგრამ ერთხელ თქვენ დაიწყება ყურადღებით წაიკითხა, ის საკმაოდ მარტივია, რასაც ის აკეთებს. როგორც ჩანს, ხაზი 1 და line 8 შეცვალა ყველა პერსონალის უბრალოდ identified-- თუმცა მხოლოდ კარგი ღონისძიება, დავტოვე ULs იქ მხოლოდ იმ შემთხვევაში, ზოგიერთი დღის არ აქვს სიაში რამ. და მოითხოვს სახის როგორც pound მოიცავს C. ეს ასლები და პასტები შინაარსი ეფექტურად სწორედ აქ ამ ფაილის. 

ასე რომ, header.php, როგორც თქვენ შეიძლება ითქვას, მისი სახელი, იქნება სათაურის გვერდზე. ეს არის სახის ობოლი აქ. ეს მხოლოდ დაბრუნება, მაგრამ არ არსებობს უფრო მეტი შინაარსი ქვემოთ. 

და თუ გავითვალისწინებთ ძირი კი, რომელიც სხვა ფაილი mentioned-- ეს ერთი კი ნაკლებად საინტერესო, თუმცა ისევ და ისევ, ეს საერთო ყველაფერი. ასე რომ, ეს ძირი. ეს არის header. ეს არის ფაილი, რომელიც არის იცვლება, რატომ არ ცდილობენ ფაქტორი საერთო ამ ორ ხაზს აქ? 

მაგრამ ჩვენ შეგვიძლია გაწმენდა ამ ცოტა შემდგომი. მე ვაპირებ წავიდეთ წინ და გახსენით ორი ვერსია, სადაც ჩვენ ვხედავთ, რომ იქ ახალი ფაილი, helpers.php. ჩვენ დავინახავთ, რა არის, რომ ამ მომენტში. მოდით წავიდეთ მაჩვენებელი, შესვლის წერტილი, როგორც ადრე. 

და ახლა შეამჩნია მე მოითხოვს helpers.php, არ header და ძირი. მაგრამ დამხმარე სახის მოსწონს helpers.c და helpers.h საწყისი pset 2 ან PSET 3 ხნის წინ, როდესაც თქვენ, ფაქტობრივად, არ ვეძებოთ, რომ pset, და თქვენ უნდა ყველა თქვენი კოდი დახარისხება და ეძებს ცალკე ფაილი. რომ ის, რაც ხდება აქ. 

და ახლა ხაზი 3 გამოიყურება ცოტა განსხვავებული. და ეს მხოლოდ ერთი ხაზი. იმისათვის, რომ ეს კიდევ უფრო ნათელია, შემეძლო მხოლოდ ამისათვის უნდა იყოს სტილისტურად შეესაბამება ყველაფერი ჩვენ გავაკეთეთ. მაგრამ ეს არ არის ნამდვილად შეცვლის ფუნქცია. ეს მხოლოდ ერთი ხაზი ნამდვილი კოდი. 

როგორც ჩანს, არსებობს ფუნქცია სადღაც მოუწოდა გაწევა header, და ეს არის სადაც რამ კიდევ საკმაოდ ძლიერი. გაითვალისწინეთ, რომ შიგნით მისი ფრჩხილებში არის ის, რაც სხვა ნაჭერი სინტაქსი? ეს, ალბათ, ცოტა ძნელი სათქმელია, მაგრამ შეამჩნია there's-- მე დააყენა ზოგიერთი თეთრი სივრცეში. იქ კვადრატულ ფრჩხილებში. 

და კვადრატულ ფრჩხილებში ჩვენ ვნახეთ, ცოტა წინ კონტექსტში ასოციაციური მასივები, რომელიც, კიდევ ერთხელ, ისევე როგორც hash მაგიდები. და თუ ფიქრობთ, ახლა C, ბრძანებით არგუმენტები შევიდა ფუნქცია აქვს, რომ ყოველთვის იქნება იგივე. თქვენ უნდა გვახსოვდეს, რა შეკვეთა is-- x, y, z და z, y, რომ X და თქვენ უნდა ყოველთვის მათ იმავე მიზნით, და გამოიყურება მათ თუ თქვენ დავიწყებული. 

მაგრამ ეს, როგორც ჩანს, ჭკვიანი გზა გავლის თვითნებური გასაღები ღირებულება წყვილი, რომლის დროსაც სათაური არის სახელი არგუმენტი ამ შემთხვევაში და CS50 არის მისი ღირებულება. და ის ფაქტი, რომ მე მაქვს ამ კვადრატულ ფრჩხილებში აქ იმას ნიშნავს, რომ მე ასევე გაივლის რაღაც როგორიცაა კვირაში 1 ან 0 ან 2 ან 3. ასე რომ, ჩვენ parameterized ეს ფუნქცია ისე, რომ მას შეუძლია მიიღოს მრავალჯერადი საშუალებებით, მაგრამ ახლა ეს მხოლოდ ერთი. 

თუ მე ახლა წასვლას helpers.php, ვნახოთ, რას აკეთებს. ეს არის ცოტა ახალ ფუნქციებს, მაგრამ ახლა მხოლოდ მიიღოს რწმენა, რომ ეს არის სინტაქსი, რომელიც თქვენ განსაზღვრავს ფუნქცია PHP. თქვენ სიტყვასიტყვით ამბობენ ფუნქცია. თქვენ არ დააკონკრეტა დაბრუნება ჩაწერეთ, და ეს შეესაბამება ერთად ცვლადი დეტალურად ადრე სადაც თქვენ ნამდვილად არ მკაცრად ტიპის. 

ეს მხოლოდ განსაზღვრავს რომ, ჩვეულებრივ, ამ იღებს ასოციაციურ array როგორც არგუმენტი. და იცით რა? თუ მომხმარებელი არ გაივლის ერთი ამ, ვივარაუდოთ, საწყისი მნიშვნელობა. 

ეს არის თვისება, რომელიც C არ აქვს ჩვენთვის, რომელიც არის ლამაზი, რადგან ახლა მონაცემები, მაშინაც კი, თუ თქვენ არ მისცეს მას არაფერი, იქნება მასივი, მაგრამ ცარიელი ერთი. და როგორც განზე, ამონაწერი უბრალოდ არ რაიმე ხმაურიანი სადაც იგი იღებს ყველა გასაღები ეს ასოციაციურ მასივში, ყველა რამ, თქვენ ვერ დააყენა კვადრატულ ფრჩხილებში და ქმნის ცვლადები აქედან ასე, რომ ჩვენ საბოლოოდ აქვს დაშვება მათ footet.php და header.php. რომ ცოტა აბსტრაქტული, ნება მომეცით აღვნიშნო ამ გარეთ. 

In index.php შეამჩნევთ, რომ მე ვარ გავლის გასაღები ღირებულება წყვილი სათაური ღირებულების CS50. თუ მე ახლა შევხედოთ helpers.php, შეამჩნია, რომ RenderHeader არის მოპოვების იმ მონაცემებს, რომელიც მე გავლით , და შემდეგ მოითხოვს header.php. რა გავაკეთეთ ერთგვარი ღარიბი ადამიანის განხორციელების ახლა შემდეგ. 

თუ გახსნა header.php, გაითვალისწინეთ, რომ მე აღარ მძიმე კოდირებული სიტყვა CS50 ამ header ფაილი. მე დააყენა ამ მართლაც atrociously დაასახელა ფუნქცია, HTML სპეციალური სიმბოლო, იქ. მაგრამ შეამჩნია რა მე ვაკეთებ. მაქვს ღია HTML. მე მაშინ აქვს ღია ხელმძღვანელი და ღია ტიტული. 

და შემდეგ შიგნით სათაური ღია და ახლო tags, მე ცოტა PHP კოდი. და ეს არის ლამაზი, მაგრამ სინტაქსი, რომელიც მხოლოდ იმას ნიშნავს echo გარეთ. ეს ფაქტიურად ნიშნავს ამას echo ასეთია მაგრამ ეს არის sexier დაწერა. Echo გარეთ სათაური რომ უკვე გავიდა. 

მაგრამ რას ფიქრობთ HTML სპეციალური char არის ყველაფერი, განსაკუთრებით თუ თქვენ გაქვთ ზოგიერთი წინასწარი HTML გამოცდილება? რა სიმბოლოები შეიძლება იყოს საშიში კორიდორი გვერდი სადაც თქვენ დინამიურად მომტანი ვებ-გვერდზე კოდის მოსწონს ეს? ნება მომეცით წასვლა ფაილის ვერსია ორი და, თუ შეიძლება არ გამოიწვიოს ეს. 

ორი ვერსია, ეს არის. და შენიშნავს, რომ ყველაფერი კარგად არის, კარგად მუშაობს. მაგრამ დავუშვათ, მე წასვლას index.php და მე მითითებული, რომ ტიტული ჩემი გვერდი არ არის CS50. ეს არის ღია bracket script alert მშვენიერია, ახლოს ერთი გაცემა, დახუროს ფრჩხილებში, მძიმით, ღია bracket, slash სცენარი. 

Script, როგორც ჩვენ საბოლოოდ ვხედავთ, tag რომელიც შეგიძლიათ გამოიყენოთ, რათა გამოიყენონ სხვა პროგრამირების ენის მოუწოდა JavaScript შიგნით ვებ გვერდზე. და ახლა შეამჩნია ლოგიკა აქ. აქ არის გასაღები მოუწოდა სათაური. აქ არის ის გიჟები ხანგრძლივი არც ახლა. 

მაგრამ თუ მე დამხმარე page- უფრო სწორად, header გვერდი, მე მოუწოდებდა ამ ფუნქციის რომ ტიტული პირველი. ასე რომ, თუ მე ახლა განაახლეთ ეს გვერდი, მე ეს, რომელიც გამოიყურება სასაცილოა, მაგრამ ეს საფრთხე არ ემუქრება. ეს უბრალოდ გამოიყურება სულელური. 

მაგრამ ვარაუდობენ, ნაცვლად მე მქონდა დავიწყებული ეს. და მარკ ჩემი სიტყვები, არანულოვანი ნომერი თქვენ ნახავთ დაგვავიწყდეს, რომ ეს და თქვენ მიიღებთ ზოგიერთი შრომისმოყვარე სტუდენტი ან მეგობარს ახლოვდება თქვენ at CS50 სამართლიანი ან ანონიმურად ღამით გააღიზიანოს გარშემო თქვენი საიტი და არსებითად ინექციური კოდი არ ვიცი, თუ თქვენი საიტი რატომღაც. 

იმიტომ, რომ თუ მე უბრალოდ შამფურზე out სათაური აქ და სათაური იქ ასევე, თუ სათაური სიტყვასიტყვით ასე გამოიყურება და PHP როგორც ენა, რომელსაც შეუძლია შამფურზე სხვა ენებზე ტექსტი ეს სიტყვასიტყვით აპირებს შეცვლის ამ tag ერთად, რა თქმა უნდა, ის, რაც მე ზუსტად სხვაგან. 

ასე რომ, თუ მე ახლა აქ და განაახლეთ შემდეგ გაუქმება იმ უსაფრთხოების მექანიზმები, ახლა მაქვს Hello world აქ. ახლა, რომ ეს არ არის ყველა, რომ დიდი საქმე, მაგრამ შეიძლება რაღაც ცოტა მეტი მუქარის აქ, როგორც იქ სხვა tags-- როგორც ვნახავთ ერთხელ ვხარჯავთ მეტი დრო JavaScript--, როგორიცაა ადგილმდებარეობა dot href იღებს, გაცემა, unquote, HTTP business.com, მაგრამ საპირისპირო რომ მეორე დღეს. და ახლა თქვენ შეიძლება გამოიწვიოს ვებ გვერდი რეალურად დაუყოვნებლივ ამ ვებ გვერდზე აქ. 

და რეალურად, მე არ მინდა, კი წასვლა business.com იმიტომ, რომ მე არ მინდა, ვიცოდეთ, რომ არის. მაგრამ ეს, ძალიან, გამოიწვევს კოდი უნდა გაუკეთეს შევიდა ამ გვერდზე. ასე რომ, ეს მხოლოდ იმის თქმა, რომ მიუხედავად იმისა, ჩვენ შემოღების super დასაწყისში ზოგიერთი ამ უფრო რთული სტრუქტურები, ეს ყველაფერი მიმართ ბოლომდე მიღების დარწმუნებული ვარ, რომ თქვენი კოდი არ exploitable. 

ასე რომ, ახლა მესამე ვერსია აქ. ის მიღების ცოტა fancier. მე ნამდვილად არ მოსწონს ანალური მხარეს ჩემთვის მიღების პატარა გააღიზიანა ფაქტი, რომ მე ფუნქცია მოუწოდა RenderHeader და RenderFooter რომ თითქმის იდენტური იყო. ასე რომ, ეს მოხდა ჩემთან, რატომ არ მე parameterize ამ ფუნქციების მხოლოდ ერთი მოუწოდა გაწევა, არ დასჭირდება მეორე არგუმენტი როგორიცაა სახელი, template, საბოლოო to render-- ან სათაური, ან ძირი? და მერე სურვილისამებრ, თუ მინდა გავლა ზოგიერთი გასაღები ღირებულება წყვილი ისევე, როგორც მე, რომ სათაური header მაგრამ არა ძირი, მე ვერ გავაკეთოთ, რომ. 

და ახლა თუ მე წასვლას helpers.php, ეს ცოტა უფრო რთული. და მე ტალღის ხელები დეტალები, მაგრამ ეს მხოლოდ ერთი ფუნქცია. ასე რომ, ეს ნაბიჯი უკეთესი დიზაინი. 

ჩვენ შეგვიძლია ეს ერთი ნაბიჯი შემდგომი. თუ მე წასვლას ჩემი მეოთხე ვერსია ამ შეამჩნევთ რომ მე ვაკეთებ რაღაც კიდევ უფრო სახის cryptic. და მე ვიცი, რომ ეს არის ბევრი აღიქვას, ამავე დროს, მაგრამ ჩვენ უბრალოდ სახის დასუფთავების რამ up. ახლა მე აყენებს ჩემი დამხმარე ფაილი საქაღალდეში მოუწოდა includes-- მხოლოდ თვითნებური სახელი, სადაც მინდა დააყენა პერსონალი რომ მინდა include-- და შემდეგ დანარჩენი ეს არის იგივე. 

მაგრამ, თუ გავითვალისწინებთ ახლა gedit, შეამჩნია, რომ მე მიღებული rid ყველა იმ სხვა ფაილი და მე გადავიდა, მაგალითად, შევიდა აქ. და შემდეგ თარგები, მე ამ აქაც. და ეს არის ყველა ახლა მიმართ გადადგმული ნაბიჯია გამოყენების ბევრად უკეთესი დიზაინი ნიმუში. და ჩვენ ძალიან სწრაფად აპირებს გადავიდეს დაშორებით PHP- ს ძირითადად ფუნქციონირება, რომელიც ჩვენ დავიწყეთ აქ, სადაც თქვენ უბრალოდ commingle PHP, და თქვენი HTML, და თქვენი CSS, და თქვენ უბრალოდ შამფურზე ის და წავიდეთ თქვენი გზა. ის არ აპირებს იყოს ძალიან maintainable. ისევე, როგორც C, დავიწყეთ გამოყენებით რამოდენიმე ფაილი და მრავალი ფუნქციები და ფაქტორინგი რამ out. ჩვენ ყველაფერს გავაკეთებთ, იგივე აქ. და ფაქტობრივად, მეხუთე და საბოლოო ვერსია აქ, მე კიდევ ერთი რამ. თქვენ შეგიძლიათ კიდევ გამოიყენოთ dot dot, რომელიც, კიდევ ერთხელ, მხოლოდ მშობლის დირექტორია. კიდევ უფრო უსაფრთხოების შეგნებული, იმიტომ, რომ, თუ გავითვალისწინებთ, რომ მოსმენის აქ მეხუთე და საბოლოო ვერსია, ცნობა რომ მე მაქვს ერთი დირექტორია მოუწოდა საჯარო და შემდეგ იმავე დონეზე, ასე ვთქვათ, მაქვს მოიცავს და შაბლონები და შემდეგ რომ ტექსტური ფაილი readme. 

და მიზეზი მე სტრუქტურა ეს მსგავსი რამ და ამდენი ვებ მასპინძლებს, განსაკუთრებით იმ $ 5 თვის პირობა ან 10 $ თვეში პირობა, თუ თქვენ ოდესმე ერთი ასეთი services-- რა ამდენი მათგანი ვერ არის, რომ ისინი მხოლოდ ველით, რომ თქვენ ნაგავსაყრელი ყველა თქვენი ფაილი ერთ დირექტორიაში, როგორც ჩვენ უკვე ეს პირველი მაგალითი. 

მაგრამ, როგორც კი თქვენ დაიწყოს მშენებლობის მეტი დახვეწილი საიტები, რომ უბრალოდ შეინახოს მონაცემები აინტერესებს და ფაილები აინტერესებს, რეალურად ორგანიზება რამ სწორად და მეტი უსაფრთხოების ცნობიერების გონება ჩვენ ვიწყებთ, რათა დაიცვას წინააღმდეგ ყველა მეგობარი რომ თქვენ გაქვთ შეგიძლიათ ან გარეთ ამ კლასის, რომელიც, როგორც კი თქვენ დაიწყოს მიღების პროგრამები თავს ინტერნეტში, დაიწყება კრეფა თქვენ და მათ. 

და ამიტომ ჩვენ შევისწავლით საბოლოოდ ამ დიზაინის. ეს არის მხოლოდ სურათი რომელიც ასახავს შემდეგ. ჩვენ ვაპირებთ, რომ ყველა ჩვენი პროგრამირების ლოგიკა ერთი ან მეტი ფაილი, და ჩვენ ვაპირებთ დავიწყო მოუწოდებდა იმ კონტროლერები. ეს არის ის, სადაც ტვინი ჩვენი საიტები რეალურად არიან. მაშინ ჩვენ ვაპირებთ აქვს ხედები და რაოდენობა როგორც მარტივი, როგორც მხოლოდ ცალკე ფაილები მოუწოდა თარგები, ხშირად. ისინი მხოლოდ ესთეტიკის ჩემი გვერდი, რა მინდა გვერდზე გამოიყურება მოსწონს ფერები და განლაგება და პოზიციები ყველა ცვლადები. 

და შემდეგ უფრო საინტერესო რომ ჩვენ საბოლოოდ მისაღებად არის მოდელი, რომელიც იქნება მხოლოდ სიტყვა ჩვენ slap სხვა ტექნოლოგიები ჩვენ მოუტანს სურათი, როგორც ფაქტობრივი მონაცემთა ბაზა, ასე რომ, როდესაც თქვენ გჭირდებათ გადარჩენა ინფორმაცია, თქვენ არ უბრალოდ გამოგვიგზავნეთ ელექტრონული შეტყობინება თქვენი proctor ან საკუთარ თავს, თქვენ რეალურად შესანახად იგი ბაზაში გამოყენების სხვა ენაზე ცნობილია, როგორც SQL. ასე რომ, ჩვენ დავტოვებთ დღეს აქ გააშუქა ამ ოთხშაბათს და დანერგვა მონაცემთა ბაზის შემდეგ. 

[მუსიკალური სათამაშო]