DOUG LLOYD: ასე, რომ ჩვენს ვიდეო PHP სინტაქსი, ჩვენ ვისაუბრეთ ბევრი შესახებ, თუ როგორ PHP შეიძლება გამოყენებულ იქნას ბრძანებათა ზოლს პროგრამების გასაშვებად ისე, რომ ჩვენ საკმაოდ იცნობს C. მაგრამ, როგორც მე ასევე აღნიშნა, ამ ვიდეოში, PHP თავდაპირველად შემუშავებული განახორციელოს ვებ პროგრამირების, ვებ. ასე რომ, ამ ვიდეო ჩვენ აპირებს ვისაუბროთ, თუ როგორ გამოყენება PHP ვებ განვითარების კონტექსტში. ჩვენ ვიცით, უკვე, ეხლა ჩვენი ვიდეო HTML, რომ საიტებზე შენდება გარეთ კომპლექტი HTML tags რომ სემანტიკურად განსაზღვროს სტრუქტურა ვებ გვერდზე. მაგრამ საიტებზე, რომლებიც აშენდა სუფთა HTML განიცდიან ძალიან, ძალიან სერიოზული შეზღუდვა. და ასახავს ამ შეზღუდვა, განვიხილოთ შემდეგ. ასე რომ, ახლა მე მინდა ავაშენოთ ვებ გვერდი ყოველთვის, როცა შესახებ ვიზიტების ის, ეს მაძლევს მიმდინარე დრო კემბრიჯში, Mass., აჩვენებს, რომ ეს უკანასკნელი წუთი. თუ მე ვაკეთებდი ამ წუთას, შეიძლება ითქვას, რაღაც მსგავსი. მიმდინარე დრო Cambridge-- ასე მაქვს HTML tags, ხელმძღვანელი tags, სათაური tags, სხეულის tags-- მიმდინარე დრო კემბრიჯის არის 14:08, ბეჭდვის სამხედრო დრო. რა მოხდება, თუ ეს არის 2:09 PM, 14:09? ისე ჯერჯერობით, HTML, მაქვს წავიდეს და შეცვალოს იგი 14:09. და მაშინ ერთი წუთის შემდეგ კი, უნდა შეიცვალოს კიდევ ერთხელ. და მაშინ ერთი წუთის შემდეგ კი, უნდა შეიცვალოს კიდევ ერთხელ. და თქვენ წარმოიდგინეთ, რომ ალბათ, ყველაზე უარესი სამუშაო ოდესმე. თქვენ სუპერვიზორს ვებ გვერდზე, და ყოველ წუთს, 24 საათის განმავლობაში, თქვენ უნდა განაახლოთ მიმდინარე დროს ხელით გახსნის time.html და შეცვლის მხოლოდ ის, რომ snippet კოდი რომ ვთქვათ, მიმდინარე დრო საათი და წუთი. ეს, ალბათ, არ არის ძალიან კარგი გამოყენება, ჩვენი რესურსების, როგორც ადამიანის და გამოთვლითი. საიტები, რომლებიც ყველა HTML სრულიად სტატიკური. ერთადერთი გზა შეგიძლიათ განაახლოთ შინაარსი, ჩვენ უბრალოდ ჩანს, არის ხელით გახსნა იმ წყარო ფაილი, შეცვალონ მათ, და მათი შენახვა. და მაშინ, როდესაც მომხმარებელი ამხნევებს გვერდზე, ან სტუმრობს გვერდზე პირველი დროს, მათ მიიღებთ უახლესი მობილურისთვის. მაგრამ მხოლოდ იმიტომ, რომ ჩვენ ხელით დამონტაჟებული იგი. თუ ჩვენ დავიწყებთ აურიეთ ზოგიერთი PHP იქ, ჩვენი კოდი შეგიძლიათ მიიღოთ ბევრი უფრო მოქნილი. და ჩვენ შეგვიძლია აქვს გზა ჩვენი გვერდები იყოს დინამიური, ან განაახლოთ თავს, გარეშე მოითხოვს ჩვენი ცუდი საიტის წინა მაგალითად უნდა იყოს ხელით განახლება რამ. მათ შეუძლიათ ამის გაკეთება ავტომატურად. ჩვენ არ უნდა ჩაერიოს. ჩვენ შეგვიძლია მივიღოთ ძილის. რაც ალბათ კარგია, თუ თქვენ აკეთებთ ბევრი ვებ პროგრამირების. ასე რომ, CS50 IDE, ჩვენ აწარმოებს ვებ სერვერზე მოუწოდა Apache. ეს არის ძალიან ხშირად გამოიყენება, ღია სერვერზე სისტემა. ეს სისტემა სიმძლავრე ინტერპრეტაცია PHP, რომელიც იქნება სასარგებლო, თუ გსურთ რაიმე PHP პროგრამირების. და CS50 IDE, ჩვენ გვაქვს ბრძანება იმისათვის, რომ ეს ძალიან ადვილია ამის გაკეთება, apache50 დაიწყება. და მაშინ, რომ ხაზი გზა, ირიბის, სლეში რეჟ, რომ უბრალოდ ძალიან გავრცელებული გზა მითითებით, თუ რა თქვენ აქ მითითებული არის გზა, კონკრეტული დირექტორია, რომ თქვენ გვინდა, რომ იყოს root საიტი, ან root გვერდი, ან საქაღალდეში, რომელიც თქვენს სერვერზე დაიწყება შეამოწმოს ფაილი და ემსახურება მათ კლიენტებს, რომლებიც მოითხოვენ. მოდით პოპ მეტი CS50 IDE, უბრალოდ გაჩვენებთ, მართლაც სწრაფი, როგორ მუშაობს. ასე რომ, აქ CS50 IDE, მე ვარ დირექტორია მოუწოდა კვირა Zero Nine. და მე two-- მაქვს გაფორმებული აქვს LS ბრძანება მხოლოდ ზემოთ გაჩვენებთ, რომ მე მაქვს ორი დირექტორიები აქ, PHP, რომელიც არის კომპლექტი ფაილი რომ მე გამოიყენება რომ PHP სინტაქსი ვიდეო და შემდეგ PHP-ვებგვერდი, რომელიც არის კომპლექტი ფაილი, რომელიც მე მინდა გამოვიყენო ამ ვიდეო. და მე მინდა, რომ დაიწყოს ვებ სერვერზე მაგალითად ერთად შინაარსი PHP ვებ დირექტორია როგორც ფაილი ემსახურება up. რა ვარ მე აპირებს? მე ვაპირებ აკრიფოთ apache50 სივრცეში დაიწყოს, სივრცე PHP, dash ვებ. სწორედ გეზი დირექტორია სადაც მე გაკეთებული ვარ. მერე მოხვდა შეიტანეთ. ის აპირებს გააკეთოს ცოტა პერსონალის აქ. და მაშინ ის ვთქვათ, Apache წარმატებულად დაიწყო. თქვენი საიტი არის შესაძლებელი at-- და მაშინ იქ URL საიტი. რა ვარ მე აპირებს? მე ვაპირებ სწრაფად კოპირება ამ. და მე ვაპირებ გახსნას up-- და მე დააშორებს ცოტა აქ მე ვაპირებ გახსენით ახალი tab in Chrome. და მე ვაპირებ, რომ URL. მე ვაპირებ დააჭიროთ. ის აპირებს ჩატვირთვა. და მე დააშორებს ერთხელ. და ჩვენ ვხედავთ აქ არის შინაარსი ჩემი PHP ვებ დირექტორია. ასე რომ, ახლა რა არის ძირითადად ხდება აქ არის, ჩემი ინსტანციის CS50 IDE ემსახურება ეს ფაილი ყველას, ვინც ითხოვს. და მეტი კურსი ამ ვიდეო, ჩვენ დასალაგებლად შევხედოთ რამოდენიმე ეს სხვადასხვა ფაილი კონტექსტში. შესამოწმებლად, რომ თქვენი Apache სერვერზე მუშაობს, რომელიც ზოგადად აპირებს უნდა იყოს საქმე CS50 IDE, მაგრამ თუ ეს უფრო ზოგადად, და თქვენ დაიწყოს მშენებლობის თქვენი საკუთარი ვებ სერვერები, იქ ნამდვილად საერთო ერთგვარი ანალოგი, "Hello World", რომელიც, როგორც წესი, გამოიყენება PHP ვებ განვითარების. რომელი გაქვთ ფაილი შედგება მხოლოდ ამ code-- არის PHP delimiter მითითებული PHP ინფორმაცია, ფრჩხილებში, მძიმით შორის. რომელიც ძირითადად სპეციალური PHP ფუნქცია რომ გიჩვენებთ რა ვერსია PHP თქვენ გაშვებული. ასე რომ, CS50 IDE, მაქვს რომ ფაილი ხელმისაწვდომია მხოლოდ რათა ნახოთ თუ რა ეს გამოიყურება ასე. ასე რომ, ვეძებ ჩემი ინდექსი ჩემი PHP მაგალითად. ჩემი Apache მაგალითად გაშვებული შინაარსი PHP-Web. და მე მაქვს ფაილი აქ მოუწოდა info.php. მე ვაპირებ დააჭირეთ მას, დააშორებს. ეს არის ის, რაც თქვენ ვაპირებთ იმისათვის, რომ ნახოთ, საკმაოდ ბევრი. ეს არის მხოლოდ მეუბნებოდა, რომ ჩემი Apache სერვერი მუშაობს. და ეს არის, როგორც ჩანს, მობილური PHP, რომ მე გაშვებული. ეს არის ჩემი ანალოგი "Hello World". ასე რომ, მე ვიცი, რამ ფუნქციონირებს. ასე რომ, ჩვენ კარგი წასვლა. ჩვენ შეგიძლიათ გააგრძელოთ აქ. მოდით დავუბრუნდეთ, რომ დროის მაგალითად ჩვენ ვსაუბრობთ ჩვენი ცუდი webmaster ვისაც ჰქონდა განაახლოთ გვერდზე მუდმივად. ეს შეიძლება იყოს სარემონტო, როგორ მე განახორციელოს რამ ისე, რომ webmaster არ უნდა შეინახოთ განახლება დროს. ეს იქნებოდა მხოლოდ ერთგვარი მოხდება ავტომატურად. ქვემოთ ქვემოთ, HTML, ეს საკმაოდ მსგავსია, ერთი გამონაკლისი. მაგრამ აქ მაქვს რაღაც PHP ზედა. მე, როგორც ჩანს, უწოდა ფუნქცია date_default_timezone_set. და ჩვენ არ ვსაუბრობთ ყველა ამ ფუნქციების CS50, იმიტომ, რომ PHP აქვს, ალბათ, ათიათასობით. ეს შეიძლება ცოტა გაზვიადება, მაგრამ ეს არ უნდა იყოს. მას აქვს ბევრი ფუნქციები აშენდა. ასე რომ, ეს არის ფუნქცია, როგორც ჩანს, ადგენს ჩემი დროის ზონაში, როგორც აშშ / აღმოსავლეთ, რომელიც დროის ზონაში, რომ მე ვარ ამჟამად მიღების ამ ვიდეო. მაშინ მე ზარი ფუნქცია მოუწოდა, თარიღი. და, როგორც ჩანს, მე შენახვის მისი რაღაც მოუწოდა, დრო. ასე რომ, რა ხდება აქ? ისე, ძირითადად რა არის ხდება, მე მიღების ზარი ზოგიერთ სერვერზე, რომ აპირებს მითხარით, რა დროს გაკეთებული. და მე კონვერტაცია ის ფორმატში საათი, წუთი, წამი. და მიზეზი ის დედაქალაქში H არის ეს აპირებს მომეცი 24 საათიანი დრო, არა 12 საათიანი დრო, რომელიც იქნება ამას თ. და მე უბრალოდ შენახვა, რომ ცვლადში, დრო. ასე რომ, მეორე ხაზი PHP იქ, ზარი ფუნქცია, დღემდე, მხოლოდ მისაღებად რამდენიმე სტრიქონი, რომელიც აპირებს მომეცი თარიღი და დრო, და რამოდენიმე სხვა ინფორმაცია. და პირველი არგუმენტი არსებობს, რომ მისი, მხოლოდ მოპოვების მნიშვნელოვანი ნაწილი რომ მე აინტერესებს ამ მაგალითად, რომელიც არის საათი, წუთი, და მეორე. ასე რომ, ყველა, რომ ხდება. ასე რომ, მე შესანახად, რომ ცვლადი $ დროს. და მერე ქვემოთ ძალიან ბოლოში, მე აქვს, რომ სტენოგრამის დაბეჭდვისას მიმდინარე დრო. ასე რომ, მე უბრალოდ აპირებს ბეჭდვა რა მიმდინარე დრო. მოდით შევხედოთ ამ CS50 IDE და ვნახოთ, როგორ ჩვენ ახლა გადარჩენის, რომ webmaster ბევრი უბედურება. ყველა უფლება, აქ ვარ ისევ უკან root დირექტორია ჩემი Apache მაგალითად. და მე მაქვს ფაილი აქ მოუწოდა time.php. მე უბრალოდ აპირებს დააჭირეთ რომ. და მე გადახვევა, რადგან ჩვენ მიახლოება საკმაოდ შორს. მიმდინარე დრო 14:20:34. ასე რომ, მე ვაკეთებ საათის განმავლობაში, წუთი, და წამში. და შემიძლია ამოცნობა გვერდი და მიიღოს ახალი დრო. --41. მე ვაპირებ, რომ ამოცნობა გვერდზე და მიიღეთ ახალი დრო, 44, 46, 47. ასე რომ, მე ვარ აშკარად არ შეცვლის არაფერს თავს. მე აქ გამაგრილებელი გვერდზე. ასე რომ, მე არ შეიძლება იყოს იქ რედაქტირების იგი. და მე გპირდებით, მე არ გაქვთ რაიმე კონფედერატების რომლებიც რედაქტირების ფაილი ჩემი სახელით მხარეს. მე უბრალოდ გამოყენებით, რომ PHP ფუნქცია, დრო, გენერირება დრო ჩემთვის ავტომატურად. ასე რომ, მაშინაც კი, თუ მე ეძინა, და ჩემი სერვერზე გაშვებული, მომხმარებელი, რომელიც ჩამოდის, რომ გვერდზე ჯერ კიდევ აპირებს მიიღოს ზუსტად მიმდინარე დრო. ასე რომ, საკმაოდ კარგი. მე მივიღე ჩემი საიტი უფრო დინამიური არა ძალიან ბევრი PHP კოდი. ეს იყო მხოლოდ ორი ხაზი კოდი და შემდეგ ცოტა ბეჭდვითი განცხადებაში. და უკვე მაქვს ბევრად უფრო დინამიური საიტი ვიდრე, რომ პირველი მაგალითი ჩვენ ვნახეთ დასაწყისში ვიდეო. ასე რომ, გავიხსენოთ, ვიდეო PHP სინტაქსი რომ როდესაც PHP ინტერპრეტატორი გადის ჩვენი პროგრამა, იგი უგულებელყოფს ყველაფერი ეს არ არის შიგნით PHP delimiters, spitting ის. რომ მაგალითად, რა რამ რომ ეს იყო იფურთხება, იყო HTML. ეს კი იმას ნიშნავს, რომ მე შეიძლება ახლა ენაცვლება HTML და PHP ერთად. იმის გამო, რომ თარჯიმნის იქნება მხოლოდ იგნორირება HTML და ფაქტიურად დაბეჭდვა. რაც კარგია, არა? იმის გამო, რომ, სავარაუდოდ, ბოლოს დღეს, მინდა ჩემი საიტი აშენდეს HTML. ასე რომ, ნებისმიერ ბრაუზერში შეიძლება ინტერპრეტაცია ის, ან გვესმის HTML გვერდზე და შესწირე ის, როგორც ის, რომ ჩვენ შეიძლება რეალურად ესმის როგორც ადამიანები. და მე შემიძლია მხოლოდ გამოიყენოთ PHP ნაწილებისა ჩემი საიტი მოითხოვს დინამიკას, რომელიც მოითხოვს me აქვს რამ, რომ განახლება მუდმივად. სტატიკური ინფორმაცია შეიძლება იგივე რჩება. OK, ასე რომ ჯარიმა. მაგრამ რატომ უნდა გავაკეთო ეს? რატომ მე აურიეთ HTML და PHP? მე ვერ უბრალოდ ამობეჭდოთ ყველა HTML გამოყენებით PHP ბეჭდვის ფუნქცია. რატომ არ აკეთებს ამას? დაფიქრდით მეორე. ამიტომ, როდესაც მე შეიძლება მხოლოდ ბეჭდვა out-- მე შეეძლო ხაზი PHP, რომ უბრალოდ, ვამბობთ, ბეჭდვითი HTML tag, ბეჭდვითი ხელმძღვანელი. რატომ არ აკეთებს ამას? რატომ შერევას PHP და HTML? ისე, თუ თქვენ ფიქრობთ ამის შესახებ მეორე. PHP, თარჯიმანი აქვს ინტერპრეტაცია თუ რას ხედავს. ასე რომ, ეს აპირებს შეასრულოს ხაზი კოდი. ამობეჭდვა HTML. ამობეჭდვა ღია ხელმძღვანელი tag. ამობეჭდვა ღია ტიტული აქვს. ის აპირებს უნდა შეასრულოს და ინტერპრეტაცია რომ ყოველი შემდგომი ნაბიჯით. რატომ არ მისცეს თარჯიმანი მხოლოდ სიპრიალის მეტი რამ ეს არ მესმის და ამას ავტომატურად? ის აპირებს გადარჩენა ჩემთვის ბევრი დრო ავურიოთ ჩემი HTML და ჩემი PHP ერთად. და ისე, რომ, თუ რატომ არ უბრალოდ ღია PHP delimiter და შემდეგ უბრალოდ ამობეჭდოთ მთელი შინაარსი ჩვენი გვერდი, როგორც ერთ-ერთი გიგანტური PHP მოვუწოდებთ ფუნქცია, ბეჭდვა, და შემდეგ ახლოს PHP delimiter და ჩვენ გავაკეთეთ. ასე რომ, რატომ ჩვენ ავურიოთ მათ ერთად. ჯერჯერობით, ჩვენ არ მინახავს ძალიან ბევრი განსხვავება ზოგადი PHP სინტაქსი. ეს იყო საკმაოდ მარტივია. ჩვენ უკვე მინახავს კითხვის ნიშნის, თანაბარი. ჩვენ ვნახეთ რამდენიმე ახალი ფუნქცია მოუწოდებს, მაგრამ არაფერი ნამდვილად ლამაზი ხდება. მოდით იქნებ რამ პატარა fancier. რა მოხდება, თუ ჩვენ გვინდა გავლა ინფორმაცია შორის სხვადასხვა PHP ფაილები, ასე რომ, შესაძლოა, მომხმარებელს შეუძლია წარუდგინოს ინფორმაცია ჩემთვის. და მერე შეიძლება რაღაც ეს კიდევ ერთი გვერდი. ასე რომ, PHP მხარდაჭერა რაღაც მოუწოდა Super Global ცვლადები, რომელიც ჟღერს საკმაოდ გასაოცარია. ისინი მართლაც მხოლოდ გიგანტური ასოციაციური მასივების რომ დაეხმაროს განახორციელოს ეს ფუნქციონალური მიღება შორის ინფორმაციის PHP ფაილი, რომელიც არსებული ჩვენს სერვერზე. პირველი ეს სუპერ globals ეწოდება $ _GET. და ეს, ალბათ, მარტივი გასაგებია. რა ხდება $ _GET? ისე, ძირითადად, მომხმარებელი ვაპირებ აკრიფოთ დამატებითი ინფორმაცია ბოლოს ჩვენი მისამართები. და რასაც ისინი აკრიფოთ, ვთქვათ, ის ფორმატირებული კონკრეტული გზა მოუწოდა შეკითხვის სიმებიანი, რომელიც მხოლოდ კომპლექტი გასაღები ღირებულება წყვილი გამოყოფილი მიერ ampersands. ისინი გასაღები ღირებულება წყვილი იქნება შენახული $ _GET ასოციაციურ მასივში. და ჩვენი ვიდეო PHP სინტაქსი, ჩვენ ვიცით, როგორ უნდა იმუშაოს ასოციაციური მასივების უკვე. ასე რომ, აქ არის მაგალითი ზოგიერთი PHP, სადაც შესაძლოა, მე მოპოვების ყველა გასაღები ღირებულება წყვილი რომ მომხმარებელს მიეწოდება URL. ასე რომ, მე მაქვს ჩემი Open PHP delimiter. მაქვს foreach loop. მე iterating მასშტაბით Super Global Array მოუწოდა $ _GET. და მე მინდა, რომ შეუძლია მიმართოს ორივე გასაღები და მნიშვნელობა. და მე უბრალოდ ბეჭდვა მათ გარეთ, ყოველი ერთი, როგორც ჩანს, საკუთარი პუნქტი აქვს აქ. მე დაბეჭდვისას გარკვეული HTML და interpolating ღირებულებების ძირითადი და ღირებულება შევიდა, რომ განცხადებაში. მოდით შევხედოთ, თუ როგორ ეს რომ რეალურად მუშაობა ჩვენი IDE. და, შესაძლოა, ეს ხელს შეუწყობს ცხადყოფს, ცოტა რა GET რეალურად აკეთებს. ამიტომ დავბრუნდი აქ ჩემს ვებ root. და მე მიუახლოვდით ცოტა გაჩვენებთ რომ მაქვს ფაილი მოუწოდა, get1.php. მოდით დააჭირეთ get1.php. და მე არ ხედავს რაიმე შინაარსი. ეს არის უცნაური, არა? ისე, ნამდვილად არ რეალურად. იმიტომ, რომ მე არ მიაწოდოს არაფერი URL. მე ვაპირებ get1.php, მაგრამ მე არ მიაწოდოს ნებისმიერ გასაღები ღირებულება წყვილი როგორც ნაწილი ჩემი შეკითხვის სიმებიანი. მოდით დავამატოთ შეკითხვის სიმებიანი და ვნახოთ რა ეს ფაილი შეუძლია გააკეთოს. დასაწყისისთვის შეკითხვის სიმებიანი თქვენ მხოლოდ ჩაწერეთ კითხვის ნიშნის. მაშინ იქნებ მე ვიტყვი name = Doug & year = 2015. და მაშინ მე დააჭიროთ. ახლა შეამჩნია, რა ხდება. მე მაინც get1.php. მაგრამ ახლა მე მიეწოდება გასაღები ღირებულება წყვილი, და მე ბეჭდვის მათ საკუთარი paragraph-- სახელი, Doug-- წელს, 2015 წელს. სწორედ კოდი ჩვენ უბრალოდ დაინახა on the slide მომენტში წინ. და თუ მინდა იქნებ დაამატოთ სხვა გასაღები ღირებულება წყვილი, და კლასის = CS50. ახლა მე მაქვს კიდევ ერთი ძირითადი ღირებულება წყვილი, რომელიც იბეჭდება out როდესაც მე დავუბრუნდეთ URL ერთხელ. ახლა, შესაძლოა, ეს არ არის ფორმატირებული საშინლად კარგად. ასე რომ, მე კიდევ ერთი ვერსია get.php. ეს get2.php. განსხვავება ამ ერთი მაქვს CSS ფაილი, და ეს ფორმატების რამ ცოტა უფრო ლამაზად ჩემთვის. ეს ალბათ არ არის ყველაზე ლამაზი CSS მსოფლიოში. მაგრამ ეს მხოლოდ ერთი გზა ვაკეთებთ. ასე რომ, მე მაინც მიიღოთ დაშვება ჩემს ცვლადები გამოყენებით $ _GET. და ამ შემთხვევაში, მე უბრალოდ სახის მიღების CSS ცოტა უფრო ლამაზი. და თუ ჩვენ პოპ მეტი ჩემი IDE მეორე, მე გაჩვენებთ ჩემი PHP ვებ დირექტორია აქ, get2.php. ჩვენ გასახსნელად, ზოგიერთი HTML აქ. როგორც ჩანს მე აკავშირებს ამ CSS ფაილი იყო საუბარი. მე გახსნას მაგიდაზე აქვს. და მერე აქ არის ჩემი foreach loop. აქ ის არის, რომ ის, რაც მე აჩვენა slide ადრე. ერთადერთი განსხვავება ის არის, რომ მე გვაქვს ეს გასაღები და მნიშვნელობა CSS სტილის რომ მე გამოყენებით მას. მაგრამ ეს ყველაფერი, მე ვაკეთებ, არის მე iterating მასშტაბით $ _GET მისაღებად ყველა ერთი გასაღები ღირებულება წყვილი. და მე დაბეჭდვის მათ, როგორც მაგიდასთან. და, როგორც ჩანს, მე გაფორმებით გასაღებები ერთი გზა, რომელზეც