Дъг LLOYD: Така че в нашия видео на PHP синтаксис, ние говорихме много за това как PHP може да се използва в командния ред за стартиране на програми по начин, който ние сме доста запознат с от C. Но тъй като аз също се споменава в това видео, PHP първоначално разработен за приложат уеб програмиране, уеб сайтове. И така, в този клип сме Ще говорим за това как ние използвате PHP в контекста на уеб разработки. Ние знаем, вече, от нашето видео на HTML, че уеб сайтове са изградени от набор от HTML тагове че семантично дефинират структурата на дадена уеб страница. Но интернет страници, които са изградена с чист HTML страдат от много, много сериозно ограничение. И за да се убедите в това ограничение, нека разгледаме следното. Така че сега аз искам да се изгради уеб страница че, когато ползвателят посещения, това ми дава ток време в Cambridge, Mass., тя показва до последната минута. Ако правех това точно сега, Мога да кажа нещо подобно. Времето в момента в Cambridge-- така че имам HTML тагове, етикети за глава, заглавие тагове, тяло tags-- тока време в Кеймбридж е 14:08, отпечатване на военното време. Какво се случва, ако това е вече 14:09, 14:09? Ами до момента, с HTML, имам да ида и да го смените с 14:09. И тогава един минути по-късно, Аз трябва да го промени отново. И тогава един минути по-късно, Аз трябва да го промени отново. И както можете да си представите, това е може би най-лошата работа всякога. Ти си с уеб администратора на уеб страница, и всяка минута, 24 часа в денонощието, трябва да актуализирате текущото време от ръчно отваряне time.html и промяна Просто фрагмент от кода да се каже текущото време в часове и минути. Това вероятно не е много добро използване на нашите ресурси, както човешки, така и изчислителна. Уеб сайтове, които са HTML са напълно статична. Единственият начин можете да актуализирате съдържание, както току-що видяхме, е ръчно да отворите тези източник файловете, да ги редактирате и да ги спасят. И след това, когато потребителят освежава страницата, или посещение на страницата за първото време, те ще получат най-новото съдържание. Но само защото ние сме ръчно да го редактира. Ако започнем да се смесват някои PHP там, нашият код може да получите много по-гъвкав. И ние можем да имаме начин за нашите страници да бъде динамична, или да се актуализира, без да се изисква нашата бедна уебмастър в предишния пример да бъде ръчно актуализиране неща. Те могат да го направи автоматично. Ние не трябва да се намеси. Ние можем да поспим. Кое е по-вероятно нещо добро, ако правиш много уеб програмиране. Така че в CS50 IDE, ние пуснете уеб сървър, наречен Apache. Това е много често използван, с отворен код система за уеб сървър. Тази система има капацитет да тълкува PHP, което ще бъде от полза, ако искате да правите всеки PHP програмиране. И в CS50 IDE, имаме команда да направи това много лесно да се направи, apache50 започне. И след това, че наклонена черта пътека, наклонена черта да, наклонена черта реж, това е просто една наистина обичаен начин за което показва какво сте посочили тук е път за определен указател ви, че Искам да бъда корена сайт, или в главната страница, или папката, от която вашия уеб сървър ще започне да разглежда файлове и сервирайте ги до клиенти, които ги поискат. Така че нека да се появи към CS50 IDE, само за да ти покажа, наистина бързо, как работи това. Така че тук, в CS50 IDE, аз съм в директория, наречена Week Нула Nine. И аз имам two-- имам изпълнена команда LS просто по-горе, за да ви покажа, че имам две директории в тук, PHP, който е набор от файлове, които използвах в синтаксис видеото PHP, а след това PHP-мрежата, който е набор от файлове, които съм бихте искали да използвате в този клип. И бих искал да започна уеб сървър например със съдържанието на PHP-уеб папката като файловете се сервират. Така че аз какво смяташ да правиш? Аз ще се объркат apache50 пространство започнете, пространство PHP, тире уеб. Това е пътят към директорията от мястото, където съм в момента съм. После удари Enter. Това ще направи малко неща тук. И тогава то се случва да се каже, Apache стартира успешно. Вашият сайт е вече на разположение и at-- тогава там е URL адреса на сайта. Така че аз какво смяташ да правиш? Отивам да се бързо да копирате този. И аз отивам да се отвори и up-- Ще намалите малко here-- Отивам да се отворят нов таб в Chrome. И аз отивам да посетите този адрес. Отивам да се удари Enter. Това ще се зареди. И аз ще го намалите отново. И ние можем да видим тук е съдържание на моя PHP уеб директория. Така че сега това, което се случва в общи линии тук е, моят екземпляр на CS50 IDE излежава до тези файлове, за да всеки, който ги поиска. И в течение на това видео, ще се справи на да разгледаме един куп от тях различни файлове в контекст. За да тествате, че си Apache сървър работи, който обикновено се случва да бъде случаят в CS50 IDE, но ако направите това по-общо, и да започнете изграждането на вашия собствен уеб сървъри, там е наистина общ вид на аналогов към, "Hello World", който обикновено е използван за PHP уеб развитие. Коя е да има файл състояща се от само този code-- на PHP разделител комплект с PHP информация, скоби, точка и запетая между тях. Което е в основата на специална PHP функция, която ви казва коя версия на PHP използвате. Така че в CS50 IDE, имам наличното файл просто да ви покажа какво това ще изглежда така. Така че аз разглеждам индекс ми от моя PHP например. My Apache например работи съдържанието на PHP-Web. И аз имам един файл, наречен тук info.php. Отивам да щракнете върху него, отдалечаване. Това е, което ти започваш да се види, доста много. Това е просто ми казва, че ми Apache сървъра работи. И това е, както изглежда, на версия на PHP, че бягам. Това е моят аналогово към "Здравей свят." Така че аз знам, нещата са оперативни. Така че ние сме добре да тръгвам. Ние можем да се придвижат от тук. Така че нека да се преразгледа, че Например времето бяхме Говорим за нашия беден уебмастър който трябваше да обновите страницата постоянно. Това може да бъде решение за това как Бих приложи неща така че уебмастъра не го направи трябва да се запази актуализиране на времето. Просто това би нещо стане автоматично. В по-долу и на нея, HTML, това е доста сходни, с едно изключение. Но тук аз имам някои PHP в горната част. Аз, както изглежда, нарича това функция date_default_timezone_set. И ние не говорим за всички тези функции в CS50, защото PHP е вероятно десетки хиляди. Това може да бъде малко на преувеличено, но това не може да бъде. Тя има много функции, вградени вътре. И така, това е очевидно функция определя часовата зона, както US / Източна, което е най-часовия пояс, че аз съм В момента при вземането на това видео. Тогава аз да се обадя в функция, наречена, дата. И, както изглежда, аз съм съхраняване на HIS на нещо, наречено, време. И така, какво става тук? Е, в общи линии това, което е случва се, аз съм на повикване до известна сървър, който ще се да ми каже какво е времето в момента. И аз съм го превръщат в един формат часове, минути, секунди. И причината е капитал H е това ще ми даде 24 час време, а не 12 час време, което ще бъде с малки букви з. И аз съм просто съхраняване, че в променлива наречена, време. Така че втората линия на PHP там, на призива на функцията, дата, е само за да се някои низ, който е ще ми даде датата и време, и един куп друга информация. И първият аргумент там, че HIS, е просто извличане на важна част че ми пука за този пример, който е час, минута и секунда. Така че това е всичко, за което се случва. Така че аз се съхранява, че в променлива $ време. И след това надолу към Много дъното там, имаме, че стенограмите за разпечатване на текущото време. Така че аз съм просто ще отпечата какво е текущото време. Така че нека да погледнем на този в CS50 IDE и да видим колко сме сега спестяване, че уебмастъра много неприятности. Добре, така че аз съм тук отново назад към главната директория на моя Apache например. И аз имам един файл, наречен тук time.php. Аз съм просто ще да кликнете върху това. И аз ще се придвижите нагоре, защото ние сме доста далеч увеличени. Часът е 14:20:34. Така че аз го правя часа, минути и секунди. И мога да обновите и вземете ново време. --41. Отивам да се обнови страницата и да получите нов път, 44, 46, 47. Така че, аз очевидно не съм променя нищо сам. Аз съм тук, за да опресните страницата. Така че аз не мога да се върна там го редактирате. И аз ви обещавам, аз не правя имате някакви съучастниците които са редактирате файла от мое име на страната. Аз съм просто като се използва, че PHP функция, време, за да се генерират времето за мен автоматично. Така че дори и да съм заспал, и моят уеб сървър се изпълнява, потребителя, който посещава тази страница, е все още ще получите точно текущото време. Така че това е доста добър. Аз направих моя сайт по-динамичен с не прекалено много PHP код. Това беше само два реда код и след това малко на изявление на печат. И вече имам много по-динамичен сайт от този първи пример видяхме в началото на видеото. Така че, припомнят от видеото на PHP синтаксис че когато PHP интерпретатора работи нашата програма, да го игнорира всичко това не е вътре в разделители PHP, го плюят. В този пример, какво нещо че тя е била изплю е HTML. А това означава, че вече може да разнообразявам HTML и PHP заедно. Защото преводачът просто ще игнорира HTML и буквално го изхода. Което е добре, нали? Тъй като се предполага, в края на деня, Бих искал да ми сайт да се изграждат на HTML. Така че всеки уеб браузър може да интерпретира това, или не разбират HTML на страницата и да го направи като нещо, което ние всъщност може да се разбере като хората. И мога да използвам само PHP за частите на моя сайт на изисква динамика, която изисква мен да има неща, които се актуализират постоянно. Статичната информация могат да останат същите. ОК, така че това е добре. Но защо да го правя това? Защо бих се смесват HTML и PHP? Мога просто да отпечатате всички HTML, като използвате функцията PHP печат. Защо ли не съм правиш това? Помислете за това за секунда. Защо, когато може просто да отпечатате out-- I може да има линии на PHP, които просто казват, принт HTML тагове, печатаща глава. Защо ли не съм правиш това? Защо съм смесване на PHP и HTML? Е, ако смятате за това за секунда. PHP, преводачът има да тълкува това, което вижда. И така, то се случва да има за изпълнение на ред код. Разпечатайте HTML. Разпечатайте отворена глава маркер. Разпечатайте отворена заглавие тагове. Това ще трябва да изпълнява и интерпретира че всяка стъпка от пътя. Защо просто не позволявайте на преводач, просто замазват нещата не разбират и го направи автоматично? Това ще ме спаси много време да се смесват моя HTML и PHP ми заедно. И така, ето защо не го правим Просто трябва отворена PHP разделител и след това просто разпечатате цялата съдържание на нашата страница като една гигантска PHP зове към функция, Print, и след това близо PHP разделител и сме готови. Така че това е защо ние ги смесват заедно. Досега не сме видели твърде много от разлика от общото PHP синтаксис. Той е бил доста ясен. Вече сме виждали въпросителен знак, равен. Видяхме няколко нови функционални повиквания, но нищо наистина фантазия става. Да, може би да направим нещата малко по-сложен. Какво става, ако искаме да премине информация между различните PHP файлове, така че може би потребителят може подадете информация за мен. И тогава мога да направя нещо с него на друга страница. Така PHP има поддръжка за нещо, наречено Super Global Променливи, които звучат доста страхотно. Те са наистина просто гигантски асоциативни масиви които помагат за реализирането на тази функционалност на преминаване информация между PHP файлове, които са съществуващи на нашия уеб сървър. Първият от тези супер глобални се нарича $ _GET. И това е може би простият да се разбере. Какво се случва с $ _GET? Ами, общо взето, потребителят е Ще напишете допълнителна информация в края на нашите URL адреси. И каквото и да те объркат, ако приемем, това е форматиран по определен начин наречено стринг заявка, която е само набор от ключови двойки стойности разделени от амперсанди. Тези двойки ключови стойности ще бъдат съхраняват в $ _GET асоциативен масив. И от нашето видео на PHP синтаксис, ние знаем, как се работи с асоциативни масиви вече. Така че тук е пример за някои PHP, където може би аз съм извличане на всички основни двойки стойност че потребителят доставен в URL адреса. Така че аз имам Open PHP разделител. Имам foreach цикъл. Аз съм итерации през Super Global Array нарича $ _GET. И аз искам да бъде в състояние да се позове както ключа и стойността. И аз съм просто да ги отпечатва , всеки един от привидно собствената си точка маркер тук. Аз съм отпечатване някои HTML и интерполиране на стойностите на ключ и стойност в това твърдение. Така че нека да разгледаме как това всъщност ще работят на нашия IDE. И може би това ще помогне илюстрират малко от това, което получавате, е всъщност прави. Така че аз съм отново тук в моя уеб корен. И аз ще я увеличите в малко да ви покажа че имам файл с име, get1.php. Така че нека да кликнете върху get1.php. И аз не виждам всеки файл. Това е странно, нали? Е, не съвсем реално. Защото аз не се доставят нищо в URL адреса. Отивам да get1.php, но аз не предоставят никакви двойки ключови стойности като част от моя въпрос низ. Така че нека да добавите низ заявка и да видим какво можем да направим този файл. Да започнем низ заявка ви само да въведете въпросителен знак. Тогава може би ще каже името = Дъг & година = 2015. И тогава аз ще удари Enter. Сега забележи какво се случва. Аз все още съм в get1.php. Но сега съм в комплекта двойки ключови стойности, и аз съм отпечатването им по тяхна paragraph-- име, Doug-- година, 2015. Това е точно кода ние просто Видях в слайда преди малко. И ако искам да може да добавите друг двойка ключове стойност, и клас = CS50. Сега имам друг ключов стойност чифт, който е разпечатан когато се преразгледат отново на URL адреса. Сега може би това не е форматиран ужасно добре. Така че аз имам друга версия на get.php. Това е get2.php. Разликата в тази един е имам CSS файл, и да го форматира нещата малко по-добре за мен. Това може би не е най- красива CSS в света. Но това е просто още един начин да го направите. Така че аз все още може да получите достъп да ми променливите чрез $ _GET. И в този случай, аз съм просто вид вземане на СГО малко повече фантазия. И ако ние поп към ми IDE за секунда, Ще ви покажа в моя PHP уеб указател тук, get2.php. Ние ще го отворят, някои HTML тук. Очевидно аз съм с това, че свързването CSS файл I говори. Отварям таг маса. И след това тук е моят foreach цикъл. Ето, че това, което аз показа на слайда преди. Единствената разлика е, I получите този ключ и стойност CSS стайлинг, че аз съм приложима за него. Но това е всичко, което правя, е, че съм итерации през $ _GET, за да получите всички от ключовите двойки стойност. И аз съм ги отпечатате като масата. И, както изглежда, аз съм форматиране на клавишите по един начин, с