>> [За възпроизвеждане на музика]
>> DAVID J. Malan: Добре.
Това е CS50.
Това е началото на седмица осем.
И може би си спомняте, че ние престанахме последно време в търсене на нов език
напълно.
В действителност, този, който е доста лек и това не е дори
език за програмиране.
Това е език за маркиране, която ни позволява всъщност структурира и направи уеб страници.
И когато нещо друго във връзка с this--
или вие скоро ще, ако вече не сте.
Отиваме да се използва Cascading Style Sheets или CSS, които
е друг вид език с имоти и ценности
това ще позволи да се мине неща обичат промените цвета
и промяна на позицията и тези видове ощипвам.
Но днес и напред, ние започваме да да се съсредоточи върху по-мощни езици,
действителните програмни езици като PHP.
>> Така че PHP е бил наоколо за известно време.
И както ще видите, че е предназначена предимно
в началото на деня за актуално използват в уеб програмиране
и всъщност генериране на уеб страници.
И така, какво видове функции прави език
се нуждаят, за да направят уеб страници динамично с него?
>> С други думи, ако искате да се генерира съдържание dynamically-- подобно на Facebook
RSS новини, която се променя непрекъснато, или мигновени съобщения, които се появяват от време
да time-- като това, което е най- ключова част от функционалността
имате нужда в един език за програмиране че ще ви позволи динамично
отпечата нова информация на екрана?
>> СТУДЕНТСКИ: Code.
DAVID J. Malan: Code.
OK.
Ще вземем това.
А малко по-точен.
Искам да кажа, можем да направим това с C, честно казано.
Това ще бъде болка в областта на шията.
But-- е този ангажимент?
>> Студентът: Да.
Променливи, може би?
DAVID J. Malan: Променливи.
OK, разбира се.
Променливи със сигурност може да ни помогне.
И дори нещо по-просто.
Ние го използва в първия програма на първия ден
когато ние всъщност каза: "Здравей, свят".
>> STUDENT: Print.
>> DAVID J. Malan: Print, нали?
Print, или ФОРМАТ в свят на C. Така че през цялото това време,
ние сме имали в нашата разположение language-- C,
в particular-- и дори Scratch за този въпрос, че
може да генерира низове от текст.
>> Е, ако HTML, както видяхме миналата седмица, е просто един куп струни на текст
макар и с отворени скоби и затвори скоби и някаква рима
и причина зад него, и тогава ние наистина може да
започне да генерира уеб страници или ръчно, като ги пишете в Gedit
или в Microsoft Word, за които matter-- ние просто трябва текстов редактор.
>> Или пък може да напише код, на вашето предложение
по-рано, че ще ни пуснат динамично генериране на HTML,
и това е, което ние ще да започнете да правите с PHP
и в крайна сметка дори с език, наречен JavaScript,
е да използвате един език, за да се генерира нов.
И наистина, това е, което Facebook и много, много други сайтове
направя, за да всъщност динамично показване на нова информация за вас.
>> Така че нека да започнем с една this-- загадъчен търсите линия, но един
че всъщност е доста мощен.
До този момент, ние сме били използване на C, който е съставен език.
И само един бърз recap-- компилиран език има какво характеристика?
Вие очевидно трябва да се съберат това, но какво означава това?
Така ли?
>> STUDENT: Тя трябва да бъде сглобени в машинен код.
>> DAVID J. Malan: OK.
Тя трябва да бъде сглобена в машинен код.
Така че можете да си код, което е нещо като английски.
Можете да конвертирате, че за да нещо по-ниско ниво,
което в крайна сметка се нарича обект code-- 0 и 1 в.
И това е тези 0 и 1, че процесора, като тези, направени от Intel,
всъщност разбирам.
>> Сега, PHP и Python и Ruby и JavaScript и букети от друга
езици, които не са събрани езици, но интерпретирани езици,
което означава, че можете просто да ги напишете и след това не ги превърне в 0 и 1 в.
Можете вместо просто да предостави след като принос към програмата на някой друг,
наречен преводач.
И това лице програма е проектирана
да се разбере това, което всеки и всеки символ в Python или PHP
или Ruby или произволен брой други езици означава.
>> И така, всичко, което е нужно е нещо като това.
Така че в действителност, аз отивам да преминем към уреда
тук, просто във всеки стар прозорец, и ние сме
ще отида напред и отворен файл с име, да речем, здравей.
Сега по-рано, може би щях да спаси това дори и с файлово разширение,
но аз отивам да правя нещо още по-лесно тук.
Аз ще отида напред и да започне този файл с този загадъчен синтаксис.
Така че "потребител, бин, Околна среда, за околната среда, PHP. "
>> Това е просто една линия на код, който е Ще кажа на операционната система,
да намерим във вашата локална среда, каквото и да е,
където PHP is-- на interpreter-- и давай напред и да използва това преводач
да тълкува следния код.
Сега, това е един вид грозна черта на PHP.
Но в този език, всеки път, когато пиша PHP код,
вие трябва да имате един от тези грозни PHP тагове, ограничаващи началото
на вашия code-- <? PHP.
>> Но по-долу тук, сега мога да направя нещо съвсем просто, като ФОРМАТ здравей запетая
свят наклонена черта п близо цитат, в близост скоби.
И след това просто за добро мярка, аз отивам
да вървим напред и в близост ми PHP таг тук
така че всичко да изглежда добре доста отпечатани.
>> И веднага след като щракнете върху Запиши, Gedit е достатъчно всъщност интелигентен
да погледнете, че първата линия и осъзнават, о, пишете PHP код.
Нека синтаксис маркирайте това с цветовете
тук, така че да се откроява от малко повече.
Но сега аз ще отида до терминал моя прозорец.
Ще Увеличаване.
>> Тази програма се нарича "здравей" така че аз отивам да се направи точка черта здравей,
но разрешение отказан.
И Баш.
Ние всъщност чувал, че Преди нещо няколко седмици
в контекста на Shellshock, една от тези грешки.
>> Но разрешение отрече сме виждали и преди, може би в по-различен контекст.
Някой припомни как може да се определи нещо
където разрешение се отказва по този начин?
Каква е командата, най-малко?
>> STUDENT: CHMOD.
DAVID J. Malan: Да, коригирате, за промяна на режима на файл.
И вие ще получите още по-използван за това следващата седмица, с последващо проблем
задали.
Но за сега, аз отивам да се промени режим не може да се чете,
но да даде на всеки executeability привилегии, способността
да тече този файл.
И аз отивам да зададете че към преписката здрасти.
>> Ако сега направим точка черта здравей влиза, можете виж, в действителност, моята програма, здравей свят.
И това, което аз направих крачка ясно пропуснете напълно?
Съставяне.
Така че аз просто избяга тази програма доста просто.
>> И се оказва, можете да направите това с много синтаксис напомня на C.
Позволете ми да отида в днешния код, които сложих в моя vhost директория
тук, за истинските причини ние ще се върнем към.
И аз ще отида в, нека да кажем, условия 1.
>> И вие ще видите тук, на първо място и място, цял куп коментари.
Но това е действително пресъздаване в PHP
на програма, което направихме през седмица един наречените условия 1.в
когато целта в живот на тази програма
е очевидно, за да попитам потребителя за цяло число
и след това да се направят някои пухкав анализ върху него, при което
вие казвате, ако тя е положителна или отрицателна или равна на нула.
И аз нося това само, защото, с изключение на може би един малък детайл,
това е неразличим толкова далеч от C.
>> Какво е една характеристика тук, че може би скача
при вас като малко по-различно?
Може би две неща.
Така ли?
>> STUDENT: Dollar знак н?
>> DAVID J. Malan: Да.
Така долар знак н присъства.
И доларови знаци, като ще видим, ще
да се оправя в началото на всяка променлива в PHP.
Това е добро и bad-- добро че това е нещо, което е очевидно,
променлива, лошо в това, че е още нещо, за да пишете.
А има и един друг нещо, което ние не сме съвсем
видяхме, най-малко от това на правописа. така ли?
>> STUDENT: Readline.
>> DAVID J. Malan: Readline.
Readline не видяхме, само по себе си, в C, въпреки че съществува нещо
подобни, но ние сме използвали getstring, и това е неговият колега.
Така че, ако отида в тази директория, което се случва, да бъде,
както аз ще обясня малко по мое vhost директория и ми източник директория,
и да отида напред и да направи точка наклонена черта conditions-- whoops-- точка наклонена черта
условия 1, вие ще видите, отново, същото issue-- разрешение отказан.
>> Така че нека да увеличите и да коригират плюс х относно условията, дот условия наклонена черта.
Бих искал цяло число, моля, 50.
И ние може да играе тази игра през целия ден.
Той ще се държи точно така както го направи в една седмица.
>> ОК, така че не всичко, различно, с изключение на Не само, че леко малко синтаксис,
но в горната част, аз отново имаше тази линия, която
ми позволи да се създаде нещо, което прилича на програма, наречена C здравей,
наречени условия 1.
Но това не е 0 и такива Аз съм изпълняващата директно.
Това е вместо използването на този преводач, чието име
се случва да бъде идентичен с този език.
Програмата се нарича PHP, и моя код под линията един се предава в нея.
>> Ние можем да направим още един сравнително прост Например напомня на нещо
ние направихме преди седмици.
Отново, това е един вид произволно парче код
че очевидно прави какво, когато го стартирате?
Какво е това ще се отпечата, вероятно?
>> Така че първоначално на ред 16, това е ще кажа х сега е 2, най-вероятно.
% D е същото като $ аз за ФОРМАТ.
Така че след това е cubing, точка, точка, точка, в ред 17.
И тогава се появи линия 18 да се обадя функция кубчета.
А там, където се определя кубчета?
>> Е, изглежда, че в линията 25, така че да не е по-различно.
Имам някои коментари по-горе , но по-голямата част,
това е сравнително лесно пренасяне или преобразуване
от програмата C до PHP версия.
Но сега има няколко различия, които може би трябва да скочи.
Какво друго е различно за това как може да напише същата програма в C?
>> STUDENT: [недоловим].
>> DAVID J. Malan: Няма не прототип до върха.
Така PHP-- и честно казано, по- много модерна languages--
са много по-умни и по-полезни от C компилатори по това, че
да поставите функцията тук, можете да поставите функция тук,
и преводачът ще да ви направи благоволението на четене
цялата преписка, преди да реши че някои функции не съществува.
Толкова хубаво подобрения години по-късно.
Но има и нещо друго различно или отсъства тук.
Така ли?
>> STUDENT: [недоловим].
DAVID J. Malan: Ние не трябва да се Декларирам, видовете променливи,
така че ще видим не след дълго, че има различни видове в PHP,
но не трябва да ги посочите, който също така е и добро, и лошо.
А има и още нещо липсва.
>> STUDENT: Няма по-библиотеки.
>> DAVID J. Malan: Не е библиотеки.
ОК, така че това е хубаво.
Ние получаваме много повече от кутията.
Така че всъщност е много по- неща, отколкото си мислех, че са различни.
Какво ще кажете за начин в гърба?
Какво е това?
Кажи го още веднъж?
>> STUDENT: Pointer.
>> DAVID J. Malan: Не указатели.
ОК, поне в този пример, не.
Това е справедливо.
Така че не са указатели в PHP всъщност като цяло.
Има нещо, наречено справки, но ние няма да прекарват твърде много време там.
И какво още?
>> STUDENT: Main.
DAVID J. Malan: Main.
Така че това беше Biggie Мислех си.
Забележете, че няма основна входна точка.
Можете просто да започнете да пишете код.
И това е всъщност ще бъде изгодно
когато ние преход момент да започнете да използвате
същия този език за уеб-базиран програмиране, за който
не искам да имам само една входна точка.
Ние може да искаме да имаме един куп URL адреси, един куп различни файлове
всички, като на входа на потребителя и производство на продукция.
>> Но тук е много отчайваща Например, че обещах последния път,
именно в тази папка тук, правописни грешки.
Така че в този файл правопис, което ние няма да прекарват твърде много време, налице е
същество porting-- P-O-R-T. Това е просто думата дава, когато, да речем,
да конвертирате от един език в друга ръчно обикновено.
>> Това е пренасяне на PC версия на правопис от PSET 5.
И по същество се опита да конвертирате това ред по ред най-близко, колкото мога.
Така че, ако ви харесва този вид на нещо, тя всъщност е на стойност най-малко точка
да ги дърпа и двете една до страна и да видиш какво е същото
и това, което е различно.
Но те са дяволски много сходни.
Ако си спомняте какво правопис, дори изглеждаше,
макар и да не го направи Трябва да променим този файл,
това е доста сходен структурно само с няколко
на промени тук и там.
>> Така че това е само за да се каже, че това е доста лесно да конвертирате правопис
от C до PHP.
Но в речник, има нещо още по-убедителни.
Нека да вървим напред и да се създаде моята собствена dictionary.php файл.
Така малко по-различен с това, че ние ще го наричаме .php вместо .c.
Тъй като това е файл, PHP, I do-- леко annoyingly-- има
за да стартирате файла с на PHP таг подобно.
И аз отивам да вървим напред и да се определят няколко функции.
Функция, наречена проверка, която е ще вземе с една дума като преди.
Но този аргумент е ще има един долар
подпишат, защото ние сме, отново, използвайки PHP.
Друга функция от dictionary.c е натоварване
и го взеха в името на речник, така че аз ще се получи, че функция готов да отида.
>> Още един в dictionary.c е какво?
Размер е един от най-хубавите от тях, най- поне ако държи някои променлива наоколо.
така че размерът му трябва да се върне на променлива.
И тогава имаше разтоварване.
>> Така че там са били тези четири функции в проблем, определени 5
че ви е необходимо да се прилагат с някои данни структура или структури.
Така че в Обещах PHP, ние може да обяви
хеш таблица, например, всичко, което по-лесно.
В действителност, ако искам хеш таблица, Аз просто ще отида като че
и там ми е хеш таблица.
И това е бележката, отчайваща, че сме спрели за последен път.
И знаеш ли какво, ако исках променлива за размер, добре,
това не е всичко много по-различна от С,
но аз ще отида напред и да го направя.
И забележи не тип данни.
И аз ще се върна по-късно и всъщност добавите някои коментари тук.
Но какво да кажем за товар?
>> Ако знака за долар речник е името на файла ми
и аз наистина искам да се зареди думи в тази таблица с предприятието,
Всъщност мога да направя нещо доста просто.
One-- и това е minorly annoying-- в PHP,
трябва да посочите в на функция, ако
искате да получите достъп до някои глобалното променлива, която е определено отвън.
>> Но това не е особено Интересно точно сега.
Какво е по-интересно е това за всеки изграждане, че споменах миналия път.
И се оказва, че PHP има функция наречен файл, чиято цел в живота
е да отворите файла и да прочетете в всички свои линии в масив
и да ги върне към.
>> Което ще рече, че може да направи речник така че сега ефективно, когато аз наричам файл,
това ще ме върне масив от думи от файла.
Това не е всичко, че доброто.
Тя все още продължава да бъде линия на думи, нещо линейна.
Но аз мога да отида напред и да превъртите върху всяка от тези думи, използвайки
че синтаксис видяхме накратко за последен път.
И ще го видите по- в предстоящия PSET.
>> Но сега имам една линия итерации над всяка дума в речника.
И на всяка итерация, припомни съм се обадите на текущата дума "дума".
И всичко това ще се предприеме, за да тури дума в речника, е
ще бъде думата предположение "вярно".
Това е моята вложка функция.
Това е моята функция натоварване за моя речник.
Сега е малко на измама, тъй като, Знаете ли какво, всъщност има
наклонена черта н в края на думите че може би трябва да се отървете от,
но това не е проблем, защото PHP има функция, наречена котлет което буквално
пържоли на разстояние един символ в самия край.
Така че няма проблем там.
Ние сме отишли ​​напред и действително скъсена, че само това.
И сега вероятно ще трябва да следите на размер, така че нека поне да направи this--
размер ++.
Мога да го направя, както и преди.
И след това вероятно ще работи добре, така че да се върнем вярно.
Готово.
PSET 5.
>> [Смях]
>> DAVID J. Malan: OK.
Ние ще направим това отново със следващата PSET, също.
Така че какво да кажем за размер?
Е, това се надяваме, че е за както може да се очаква за последен път,
макар че аз трябва да направя тази глупава глобалната нещо.
Това е просто един артефакт от дизайн на езика.
>> Но проверка е малко по-интересна.
Така че, ако аз премина в долари подпишат дума, за първи път
искат да имат достъп до че глобалната променлива маса.
И сега, ако искам да проверите дали една дума е там,
Мога да кажа само, ако е вярно, че По-долу е посочен в таблицата,
след което продължете напред и връщане вярно; друго, връщане фалшиви.
Готово.
Другата половина от PSET 5.
>> Добре, така че отново, аз съм рязане на няколко ъгли.
В интерес на истината, аз вероятно прекарат още няколко секунди
на това изпълнение.
И аз най-вероятно няма да се подиграят всички часа ще ви постави на PSET толкова много.
Така strtolower е функция.
Нещо подобно екзистенциалист в C, поне за героите,
но PHP получи цяло низ версия.
>> Това ще принуди всичко в малки, които някои от вас
може да направи, за да канонизира какво сте били пускането в речника си.
И сега можете да направите това в C, също.
Това няма нищо общо с PHP.
>> Но всеки път, когато имате булева състояние,
като нещо, он-лайн 10 там, което е само
ще се оцени като вярно или невярно, и вашата, ако друго ясно
се връща истина или лъжа, можех просто наистина да направи това по-секси
и просто да се направи нещо подобно.
Така че там е моята проверка функция.
Точно така, ако Булев връща вярно или невярно,
нека просто да го върне веднага.
>> А има и няколко други екстри Мога да направя тук и там.
Load-- разтоварване, между другото, това е направено.
Няма за какво да правя там.
Тъй като всички памет PHP и много други езици
всъщност управлява за вас.
Така че, докато в C, като сте научили болезнено,
всичко, което изчистване или calloc или презаделяне, вие трябва да се освободите.
Всичко, което fopen, трябва да fclose, така, че ресурсите са в крайна сметка освободени
и инструменти като Valgrind не го правят забележите и не се оплакват,
което е добро нещо, за да се движат по тях.
>> Но със сигурност, там трябва да бъде някакъв улов, нали?
В противен случай, ние вид губи цял куп седмици.
Така че има редица причини Ето защо ние нещо се възползвам от тази траектория,
но там е компромис.
Точно така, това е тематична.
>> Така че това, което биха могли компромис тук се движи, от C за PHP?
Усеща се като спечели всичко досега, различна от малко грозота тук или там.
Да.
Какво е това?
>> STUDENT: [недоловим] памет.
DAVID J. Malan: Speed.
OK.
Е, моята скорост беше доста бързо.
Така ли е?
Но скоростта на изпълнение на програмата?
ОК, така че това е справедливо точка.
>> Така че, тъй като това ще се случи, аз предварително условен до двете ми опит решение, този
Имах на големия борд е решение пробвам-базирани,
и аз имам, че в тази директория тук.
Така че в един момент, мога да отида напред и да стартирате тази на Библията на крал Джеймз,
натиснете Enter.
И това е, надявам се правилно изпълнение в края,
ми дава време в общия 0,38 секунди за това
едно малко произволно пример.
>> И ако аз сега отида в тази второ терминален прозорец
тук, където за първи път отвори Gedit, нека отида в днешния code-- което, отново,
е в тази директория и here-- позволете ми да отида напред и да тичам правопис.
Така, само за да бъде ясно, това е PHP версия.
Аз съм просто показване на върха на това тук.
>> Така че, ако аз правя транскрипция на тилда CS50 PSET пет текстове, King James, влизат.
Тя все още е по-бързо от писане то в С, но общото време
е предупреждение, 0.93, докато ми C-базирани изпълнение е 0.38.
Така че това е нетривиален разлика.
>> И това е само на един файл.
Ако ви се налага да стартирате двамата програми в сравнение с големия борд
и има един куп входове тествани, това със сигурност щеше да се добави.
И ако имахме още по-големи масиви от данни, това също ще се добави още повече.
Така че, да, като се обръща някои цена на скоростта е наистина така.
Какво друго?
Така ли?
>> STUDENT: Размер на RAM използване.
>> DAVID J. Malan: Размер на RAM използване.
Така че аз не се получи един секунди помислих, когато пиша това PHP
версия за това как много памет бях използвате.
Аз съм напълно разсрочване, че за PHP себе си и този, който е написал тази програма.
И това може да се оправи, но ако аз всъщност наистина
грижа за изстискване толкова производителност от моята програма или от моя сайт
или от какъвто и инструмент Аз съм изграждане, може би
PHP, наистина, не е правилният език.
>> И в действителност, това е причината, за Например, много уеб servers--
действителните програми, обслужват уеб content--
не са написани в PHP или в Python или Ruby.
Те са написани, като сега ще направя с PSEt 6,
в C, така че да може да се провира всяка частица на изпълнение извън нея
и наистина да упражни контрол фино зърно над това, което е
става под качулка, а не просто да го вземе
за даденост, някои по-висока ниво структура на данните.
>> Помислете, в края на краищата, който в PHP изпълнява
това понятие на хашиш table-- това е всъщност по-
правилно нарича асоциативен array-- прави той или тя има някаква идея какъв вид
на входа, че ще бъде въвеждане в структурата?
Така че очевидно не, нали?
Това е общ инструмент в инструментариума, че е
условие за всеки, който иска да го използвате, и така със сигурност
не могат да бъдат оптимизирани в крайна сметка за точно това, което искате да направите.
>> Така търговията offs-- времето за разработка мощ се различават, резултати може да се различават,
сложност или използването на паметта може да се различава.
И така, какво ще намерите все повече е, че има
щеше да бъде различен инструменти за търговия.
И всъщност за супер мнозинство от окончателните проекти на хората в този клас,
Вярваш или не, C не се случва да бъде най-подходящия език да се използва.
>> И в действителност, един от храна за вкъщи в крайна сметка за всеки клас, като този
е да се мислиш, Е, какво трябва да потеглям
рафта, когато искате за решаване на някакъв проблем.
И наистина, ние ще пресече този мост дори повече, тъй като ние гледаме на повече езици
дори отвъд днес.
>> Така че нека преход сега може би е по-добре запознати контекст
за използване на език, като PHP.
Това е малко по-често да се използва при командния ред, писане на скриптове
както направих аз, но това е много, много по-често.
И тя е била предназначена да се използва в под формата на файлове, които завършват обикновено
в .php-- но това е не prerequisite--
които се генерират на уеб съдържание.
>> Така че нека да вървим напред и да се отворят няколко примери I подготвени предварително.
И това са всъщност нещо вярно истории, в които едно от първите неща,
Което някога съм си направил след завършване CS50 и може би, мисля,
Преди CS51 години е моят съквартирант и аз помагахме
да стартирате първокурсник интрамурални спортна програма, която по това време,
е първокурсник регистриране за различни спорт чрез попълване на лист хартия,
както го наричаха, ходене през двора на Уигълзуърт,
и го пуснете в някои капка врата Проктър е.
И тогава той или тя ще мине през ги и след това всъщност ни пишете ръчно
които са регистрирани за някои спорта.
>> Затова е ясно, възможност за подобрение.
Тези дни, може да се превърне просто Google Forms, но през деня,
имахме действително да достигне for-- това дори не е била толкова дълго ago-- достигне
за програмиране език, който не е PHP.
По това време тя е била нещо, наречено Perl,
който е излязъл от мода, тъй като.
Но идеята е същата.
>> И по същество седна да опитате до пристанище отива Perl версии на PHP,
но в пълния отказ от права, не даде всеки смята, че естетиката, просто все още.
Така че тук е уеб страница.
Това е файл.
Ако увеличите, неговата очевидно наречен froshim0.php
просто защото това е първата ни Например в тази серия.
И забележи, че има нещо, което изглежда да бъде много грозно HTML форма,
но форма е интересно защото позволява
ми да даде своя принос за употреба на браузъра.
>> Сега за последен път, когато имахме форма, за да които представят успяхме нашия параметър заявка,
параметър на опашката, както го наричаха?
Така че, за да Google, нали?
Ние напълно punted на идеята за прави нищо с този вход.
>> Но днес ние започваме производство на продукция.
И поведението Отивам да видя тук първоначално е доста тривиално.
Дейвид, аз ще отписвате пол тук, да речем Matthews тук.
Аз няма да бъда капитан.
Отивам да кликнете Register.
И забележете, че на адреса има променил се регистрирате-0.php,
и тогава там е този грозен текст тук.
Дадох без мисъл за форматирането на това.
>> Но това, което е интересно е, че три ценности очевидно са преминали вътре.
Това е вид на PHP еквивалентно на printf--
ще видим какво наистина се нарича в bit-- че просто отпечатва
това, което премина в него.
Така че, това показва, че тази форма има най-малко три полета до него,
и ти ме видя да ги напишете вътре.
Една от тях беше моето име, един е пол, един е общежитие.
И капитан дори не се получи изпратени към сървъра, защото аз не го проверите.
>> Така че, това е да се каже, очевидно, когато представя нещата в интернет,
не само че URL понякога change-- понякога това не е така.
Всъщност, името на файла се променя, но това, което отсъства от URL
че видях за последен път с Google.
Така ли?
>> STUDENT: No низ заявка
>> DAVID J. Malan: Не е низ заявка.
Няма съмнение, марка нещо.
Няма съмнение, марка Q се равнява на котки, както направихме миналия път.
И със сигурност не име въпросителен знак е равна на
David или общежитието равнява Matthews, Е, къде е, че всички отиваме?
>> Е, нека да се върнем към Gedit тук и отваряне на първата от тези файлове
в моя vhost, локален хост, общественото указател тук и отидете в froshim0.
Така се оказва, че почти всички на тази страница е само HTML.
И това може да е непознато за вас, но скоро ще бъде още повече, че с PSET 6
и PSET 7 и PSET 8.
Но това е само една HTML страница.
>> И интересното изглежда да е тук.
A форма маркер чието действие атрибут има стойност на регистър 0.
Ето защо, когато подам това, той отива в този файл.
Но метод е различен today-- пост.
Така се оказва, че е най-малко два метода в интернет използват
да изпрати информация от браузъра, за да сървър.
Махни го поставя в URL адреса.
Създайте го слага на друго място.
И кога и защо може да ви всъщност искам уеб сайт
да използвате пост тогава вместо за да получите, просто интуитивно?
Всеки сайт.
Какви данни трябва да мина малко от извод сега по пощата, за разлика от
да се получи, ако сме виждали двете разлики?
STUDENT: [недоловим] осигуряване.
DAVID J. Malan: Ако искате нещо, за да бъде сигурен.
Така че може да въведете парола в един сайт, кредитна карта
в един сайт ще вид на тези неоптимално
Ако браузърът сложи това стойност в рамките на URL.
Защо?
Можете да я видите, които не изглежда да е толкова голям проблем,
но шансовете са ви доста често ходи далеч от компютъра или използване на компютър
лаборатории, и така някой друг или дори съквартирант
може лесно да се изкачват и да видим че лична информация.
Когато изпратите имейл чрез интернет, най-вероятно
не искам това край данни в адреса, както добре.
И така, има редица причини Затова бихме искали да го пуснат тук.
И photos-- прав, не мога дори доста представете си как бихте се вземе графика,
като JPEG, и го сложи в URL.
Можете да го направите.
Има начини за кодиране, но това е просто не е прост като това.
>> Така се регистрирайте 0 е всъщност много underwhelming.
Всичко, което казва буквално е това.
Той отпечатва вътре на някои HTML тагове следното.
Имам етикет PHP тук вложени вътре в предварително маркер.
"Pre" просто означава предварително форматиран текст, моно-раздалечени, като пишеща машина.
>> Printr е печат рекурсивни функции.
И тогава там е това интересно нещо тук.
И ние ще се върнем към този защото има други,
но долар знак за подчертаване пост изглежда е
променлива в PHP в който нищо ви изпрати от браузъра, за да сървъра
получава съхраняват за вас.
И ще видиш как да стигнеш най- тази информация не след дълго.
>> Но първо, нека да се върнем към малко по-различен пример.
Отивате в register-- или по-скоро, froshims1.php,
което изглежда малко по-различна.
Взех малко по- усилие с форматиране,
въпреки че тя все още е доста грозна.
Но аз ще отида напред и напишете "David" сега.
Мъж.
Ще проверим "капитан" и този път.
Ние ще направим Matthews.
И да се регистрирате.
>> И този път той казва, хм, не съвсем.
Добре, така че какво да се регистрирате 1?
Позволете ми да отида в отворен регистър 1 and-- хм.
Добре, така че това е интересно, а това
е трамплин към момента по-интересни програми.
>> Обърнете внимание на горната част на този файл има PHP таг, както и някои коментари.
И те са, за сега, отвличане на вниманието така че нека просто да се отървем от тези коментари
само като те са в C. И аз твърдя, с това парче код с коментар
че този код е утвърждаване на подаването.
>> Е, оказва се, че променливи, като знака за долар
подчертае пост са нарича супер глобални.
Те са като тези специални глобални променливи
че са само омни-в момента наличен във вашата програма.
И вие можете да използвате квадратен скоба нотация да индексира в тях не използват номера
като 0, 1, 2, 3, но действителните думи.
>> Така че можеш да се сетиш на знака за долар подчертае, след като сортиране на хеш таблица
че бихте могли да преминат ключа в, а за справка дума между квадратните скоби,
и това ще ви даде гърба на стойност, която действително се предоставя на потребителя.
PHP има функция нарича празна, че само
казва да или не, това променлива е празна или не.
Ние имаме тези двойни барове, което просто означава, или, както е в C.
>> Така че в действителност, тази линия 4 е просто казвайки, ако потребителят не даде име
или не даде пол или не е даде общежитието, давай напред и да го пренасочи
или си чрез тази линия тук.
Така че това е малко по-загадъчен, но това просто означава буквално
се върна на това място, така че punts потребителя
обратно до мястото, където той или тя идва.
Но това е малко грубоват в това, че е трудно кодирани.
>> Но какво, ако това, ако състояние не се оцени, за да е истина?
Какво, ако потребителят не ми даде му или нейното име и в общежитието и пол?
Това ако състоянието не е ще се оцени като истина,
така че аз не се появи на изхода на линия 7.
И така, какво се случва?
И това е, което е интересно за PHP.
>> Можете да пуснете в и извън на режим на PHP, така да се каже.
Ако искате някакъв код да се изпълни, можете да отваряте и затваряте етикет PHP
и сложи код там като съм направил тук.
Веднага след като затворите маркера PHP, сървърът
е просто ще изплюе каквото и да постави там.
И наистина, това е част от оригиналния дизайн на PHP,
за по-добро, за лошо, е това смесването на код и маркиране
език.
И ние ще видим, че това много бързо преминава в бъркотия.
И така, ние ще се справим по-добре, отколкото това в крайна сметка, но само
забележите, че лекотата, с която съм действително в състояние да изпълни някаква логика.
>> Но все още е малко underwhelming.
Нека отворим версия две от Фрош УИ, които
очевидно представя register2.php.
Така че този файл е всъщност ще да изглеждат почти еднакви.
Отивам да отидете на Фрош УИ 2.
Но в Фрош УИ 2, нека да видим какво ще стане.
>> Дейвид, кликнете върху бутона за избор, тъй като тя се нарича; Matthews, без капитан.
Регистрирайте се.
Вие сте регистриран.
Не съвсем.
О, чакайте, ние просто направихме този пример, нали така?
Добре стои.
Ние ще направим тройка.
Очевидно нещо не е за да се случи с Gmail.
Ние ще стигнем до там.
>> Така Фрош УИ 3 изглежда по този начин.
Не по-различно.
Но когато го направя David, мъж, Матюс, и регистър, това третата и последна версия
претенции, просто ви, са регистрирани наистина.
Това е нещо несъществено.
Но аз твърдя с това Третата и последна версия
Аз сега пресъздадени точно това, което ми съквартирант и аз построих за Фрош УИ
преди програмни години.
И това е много проста.
Не е имало данни, не Excel електронна таблица.
Но по-важното е, не е имало повече хартия
защото това, което сме направили с тази програма е действително да изпрати Проктър, който
беше преди получаване тези неща чрез форми.
>> И очевидно сме програмирани това такъв начин, че когато някой се регистрира,
Имейли сметка Джон Харвард на proctor-- или себе си в този случай,
John Harvard-- със следното text-- "Този човек просто регистрирана."
Името е Дейвид, капитан е празно; пол, мъжки; и общежитието, Matthews.
>> Така че това, което се случи там?
Е, въпросния файл тук е очевидно register3.php.
И ако мога да отворя това, вие ще видите, както силата на код като този
а също и, честно казано, несигурността на система, като електронна поща.
Току-що ефективно се престори, че е Джон Харвард по следния начин.
>> Имам отворен таг на PHP до върха, който просто казва, тук идва някои PHP код.
Първа тук, оказва се, има библиотеки в PHP.
Просто не трябва да Включване на Хедър файлове, като много.
Можете да получите повече с кухненска мивка, така да се каже.
>> Но този път на ред 4, аз правя Искам да специална библиотека, наречена
PHP писмото, което е, че нещо можете да инсталирате безплатно в много системи.
Тук долу съм валидиране представяне само
чрез проверка е потребителят да даде ми име, пол, и общежитието.
И ако е така, давай напред и конкретни примери писмото.
>> Можете да мислите за това, че е на линия на код, който просто разпределя.
Това е като изчистване, но това е малко по-секси
по това, че не говорим просто изчистване и някакъв общ брой.
Вие казвате, дайте ми един от тях, дайте ми нов един от тях.
>> И ако вие сте програмирали в Java или C ++ или други езици,
може би сте виждали това.
Но в краткосрочен от него, ако непознат, този ред
поставя под знака за долар поща специална структура, наречена
обект, който е вграден в имейл функционалност.
И в действителност, забележете, и подобен синтаксис.
>> Това не е указател, сам по себе си.
PHP просто използва същия синтаксис.
Тази линия се казва ползване SMTP-- Simple Mail Transfer
Протокол, който е само на протокол, използван за изпращане на поща.
Това е уточняване употреба SMTP сървъра на Харвардския университет, който
е някъде тук, на територията на колежа.
>> Това се казва какво TCP номер на порта да се говори за,
и аз си помислих, че от Googling или чрез задаване на Help Desk.
И след това, тъй като Harvard използва някои система за сигурност на server-- поща
най-малко за криптиране трафик между вас и него,
въпреки че всеки може да изпрати на it-- Отивам да включите протокола TLS
за поддържане на това сигурно.
>> Но това е мястото, където нещата получи малко страшно.
Мога просто произволно кажа, че съм jharvard,
и аз може просто произволно себе си приятел тук.
И след това мога да посочите предмет с тази линия тук.
>> И това просто изглежда грозно, но това е само куп конкатенация.
Оказва се, че PHP е супер полезен символ, като някои езици, операторът на точка,
която току-що буквално конкатенира низ след низ след низ,
и не е нужно да се изчистване или цифра от общата дължина на низа.
Можете просто да го направя.
И наистина, защото аз съм слепване във всички тези неща с тези точки,
ето защо имейл I изпрати изглеждаше като го е направил.
>> И тогава най-накрая тук, аз съм изпращане на поща.
Така че, ако това е невярна, Аз съм просто ще умре,
което е функция, която само разпечатки до известна съобщение за грешка на екрана.
Но това е, в действителност, извикване на функцията за изпращане.
В противен случай, ако всичко това се провали, това ме пренасочва обратно тук.
>> И защо виждам, че Аз съм регистриран наистина?
Е, това се случи точно тук.
Така че аз нося този за няколко причини.
>> One, това е точно как, ако се изгради някой сайт за окончателен проект
или за реалния свят, това е как ви изпрати имейл напомняния
на вашите клиенти или вашите абонати.
Това е как да ви изпрати парола напомняния.
Това е как да изпрати хора на съобщения че те имат нов Facebook
съобщение висящи или нещо подобно.
>> Но той също така говори за на факта, че това би могло да
са били много добре от Дейвин или някой друг.
И аз казвам на този вид с усмивка, защото аз съм
съвсем сигурен какво се случва през няколко от мислите ви в този момент.
Но това е един от тези, които правя, както аз казвам, а не както аз правя вид на нещата,
защото това е лесно да се изградят имейли като този.
Но както може би сте виждали или да прочетете в червено,
на края тя също е доста тривиално за хората
да ги проследи до известна произход.
И ме питат известно време, може би при CS50 обяд, как за първи път
се запознаха много тясно почти до изд борда на много години
Преди, когато открих, как интернет работи.
Така че в никакъв case-- леко след като направи изд дъската.
>> Така във всеки случай, е цял куп супер глобални
както ги наричат ​​тук, един от които ние saw-- долар знак за подчертаване пост.
Има един колега, наречен GET, което е мястото, където нещата от URL
в крайна сметка става.
А има и един куп други, too-- сесия и сървър и бисквитка.
Ще се върнем към Cookie някой друг път,
но сесията е вид хладно защото точно now-- докато now--
всичко, което сме направили с уеб браузър е нещо без гражданство, така да се каже.
Мога да кликнете наоколо, достъп файлове на сървъра, нещо,
се случва на екрана, но след това връзката се затваря.
The Internet Explorer или Firefox икона спира предене
и просто да видим какво че уеб страница съдържа.
>> Така HTTP е без гражданство, в които след като прави връзка
получава някои данни, това е всичко.
Не повече връзка, за разлика от Skype, за разлика от FaceTime, за разлика GChat, които
поддържа постоянна връзка със сървъра.
Мрежата е фундаментално изключен, макар че ще
виж след дълго как ние можем да симулира неща
като Facebook чат и GChat, който поддържа illusion--
или всъщност не се поддържа постоянна връзка с помощта
по-модерна технология.
>> Но ако отида, да речем, counter.php, това е друг прост пример,
както ще видим, че в момента мисли Посетих сайта нула време.
Но ако просто се презарежда страницата, някак си знае, че е бил тук преди.
Ако аз се презареди отново, тя знае, че е бил тук преди.
И отново, и отново, и отново, и отново.
>> Така че има някакъв плюс plussing става, но известие
малкото нещо, което се върти все така за кратко до върха и след това прекъсва,
така че не е като да имам постоянна връзка с моя уред.
Е, ако отида в counter.php, забележите колко е лесно.
За първи път се обади тази специална функция, която скоро ще
започнете да приемате за даденост нарича начало на сесията.
Започнете сесия.
>> И сесия отсега нататък е просто ще бъде една кофа, като пазаруване
количката, в която можете да сложите ценности и вид на доверие като програмист
че те ще бъдат тук, когато че потребителят влезе back-- втори
по-късно, един час по-късно, дори и една година по-късно, толкова дълго, тъй като той или тя прави не е ясно
техните бисквитки, както ние в крайна сметка ще видим.
И сега просто трябва на ако състоянието тук.
Така че, ако на следния ключ, наречена брояч, се определя в
на тази супер global-- този хеш маса, ако will-- нарича сесия,
след което продължете напред и вземете стойност от session-- мислят
за това като за пазаруване cart-- и да го съхранява
в временна променлива, наречена брояч.
>> В противен случай, ако тази стойност е брояч не е зададено в така наречената количката за пазаруване,
просто го инициализира с 0.
На последно място, тук, отидете и се връща в количките за пазаруване или сесията
стойността на брояча +1.
Така се оказва, че това специален контейнер here--
който отново е един от тези свързани масиви, масив, който можете индекс
в думи, вместо numbers-- продължава дори след като потребителят отива.
Отново ще се върна към страницата сега.
Той е бил една минута или така.
Но тя си спомня, че съм бил тук 19 пъти преди.
Това е моят 20-ти посещение.
>> И така, това ще бъде от ключово значение за прилагане на всеки сайт, който си спомня,
че сте влезли в, че сте поставили нещо буквално в пазарската количка
да купуват или че имате някои брой съобщения в очакване.
Всеки път, когато искате да не забравяйте, информация,
ще видим, че PHP, като няколко други езици,
ни дава тази илюзия на държавната въпреки че, както ще видите в PSET 6,
като сте прави HTTP заявки от клиент-сървър, това е всичко.
След като се върна, че отговор, няма нищо по-
връща от сървъра по подразбиране.
Но ще видим как да се справите с това.
>> Е, сега, нека се опитаме да почистване на този до малко.
Видяхме няколко различни примери.
О, и като настрана, за тези, познати или непознати,
поради това, че Фрош УИ например отиде
от търсите наистина грозно да slightly-- добре,
още ugly-- до леко по-малко грозно макар и все още грозно
е така, защото ако погледнем изходния код тук
Оказва се, че имам тази най-горната част на файла.
>> Оказва се, че фърмуера е един от многото свободно достъпни библиотеки там
че не съществува за езици за програмиране винаги, но за CSS или JavaScript
или HTML или произволен брой езици.
>> И тези хора here-- първоначално излезе
на Twitter-- просто трябва цял куп стилове.
Това е огромен файл тук, че някой е написал,
или някой е написал, че с течение на времето уточнява, цветове и форматиране
и какво ли не, така че не мога да вид на заем си синтаксис
и не трябва да разбера как да изложи ми форма.
Това се minified така че един компютър може да
го разбирам, но не непременно човек.
Така че това е просто защо стилизация има променен.
>> Но нека сега направим по-добре по отношение на дизайна,
защото ако остане надолу този път е твърде дълъг,
нашият код ще получите разхвърлян и объркана.
Така че нека да се съсредоточи върху тези примери тук.
Последният за днес.
>> Така че тук е супер проста версия 1.0 на сайта CS50 е.
Той има само линкове към лекции и учебна програма,
и това е с помощта на които неподреден списък tag-- тага UL, че сме използвали за последен път.
И ако в действителност, ако I отвори View Page Source,
ще видите, че това е наистина, наистина прост HTML.
И в действителност, въпреки че това е файл PHP под капака,
това е все още само плюене само HTML за сега.
>> Така че, ако кликнете върху Лекции, виждаме това да се случи.
И ако кликнете върху седмица нула, ние виждаме това.
И ако щракнете върху Сряда, ние виждаме това.
И това очевидно е PDF на слайдовете от този ден.
Всичко, което съм направил, е връзка с котва маркер към този URL тук.
>> Така че това е само да се каже, че това е доста проста версия на сайта CS50 е.
Нека да видим как се изпълнява.
Ако отида в директорията mvc0, ще видим няколко файлове.
Един от тях е README, така че ако някои от това е твърде бързо,
можете просто да мушкам около по-спокойно по-късно.
И известие тук е index.php файл.
Оказва се, че ако Вие сами, човекът,
не уточняват окончателно име на URL, уеб сървър обикновено
заключава някакво име по подразбиране за вас.
Индексът точка нещо обикновено е по подразбиране.
>> Така че това е защо преди малко когато посетих този URL тук,
не името на файла, без файл разширение, без период на URL.
Той просто знаеше някак си магически да търсят index.php.
Това е просто една конвенция.
Може ли да се нарече нещо.
>> Така че, ако аз сега отида в index.php, ще видите
че indeed-- нека се отървете от коментарите
тук, защото там наистина нищо интересно да it--
това е просто трудно кодирани HTML.
Така че това е последователна, все пак, с моя иск
че можете да смесвам HTML и PHP.
Не е действителната програмиране логика тук.
>> И други файлове са доста много точно толкова безинтересно.
Това е просто трудно кодирани една седмица тук, за да една седмица м и една седмица W,
понеделник и сряда.
И след това, ако се отвори нула седмица забележите, че е почти идентичен.
>> И това е нещо като ключ за вкъщи.
Забележете колко излишно е това.
Тези файлове едва се променят, и все пак аз извади един от тези Copy / Paste работни места
когато взех един file-- вероятно през седмица zero-- го копира
когато една седмица дойде наоколо, и променени няколко стойности.
Ние вероятно ще трябва да бъде в състояние да направи по-добре от това.
>> Така че нека да се върнем до MVC и отиде в една версия.
И забележи имам няколко файла, защото това, което
е общ за всички тези файлове просто миг ago-- ако се върна до версия 0,
нека се върнем в индекс, и просто postulate--
след като се отървете от comments-- каква част от тази страница
е вероятно във всеки един от моите файлове?
Просто го извикам.
Кои линии са дублирани вероятно през всички тези страници?
Така ли?
>> STUDENT: [недоловим].
>> DAVID J. Malan: от 1 до 9.
Да, абсолютно.
От 1 до 9, с изключение може би 8 променя малко, защото CS50
става лекции или нула седмица или нещо такова.
Но почти идентични.
Така че всичко това е просто вид копирани и поставили.
И има няколко други линии мога да се сетя
на които вероятно са идентични във всички файлове.
>> STUDENT: 12 и 13.
DAVID J. Malan: Да.
Разбира се, 12, 13 и 14, може би, само защото интересните неща
се случва по линии 11 и 10, така че ще изглежда.
Така че нека да погледнем на версия 1, която се опитва да се подобри по този въпрос.
Във версия 1 от настоящия MVC example-- ние ще обясни какво MVC средства в moment--
ако отида в индекса, то вид изглежда малко объркващо сега.
Това не е толкова просто, колкото преди.
>> Но след като започнете да прочетете я внимателно, това е
доста ясно какво прави.
Очевидно линия 1 и линия 8 се заменя
всички от нещата, които просто identified-- макар и само за добра мярка,
Оставих ULs има само в случай, че някои дни не са имали списък на нещата.
И така изискват е нещо като килограм включва в C. Той копира и пасти
съдържанието ефективно точно тук, в този файл.
>> Така че в header.php, както може да се направи извод от неговото име,
ще бъде заглавието на страницата.
Това е вид на сираци тук.
Той има само отгоре, но че няма повече съдържание по-долу.
>> И ако погледнете долния Междувременно който бе другият файл mentioned--
това е още по-интересно, но отново, това е обща за всичко.
Така че това е най-долното поле.
Това е заглавието.
Това е файл, който е се променя, така че защо да не
опитайте да фактор на сходството с тези два реда тук?
>> Но можем да се почисти тази до малко по-нататък.
Аз ще отида напред и да отвори версия две, където
ще видим, че има нов файл, helpers.php.
Ще видим какво е в момента, в който.
Нека се върнем към индекс, тъй като входна точка, както и преди.
>> И сега забележи съм изискваща helpers.php не, горен или долен колонтитул.
Но помощници е нещо като helpers.c и helpers.h от PSET 2
или PSET 3 отдавна, когато всъщност се търси и намира за това PSET,
и сте имали всички на вашия код за сортиране и търсене в отделен файл.
Това е, което се случва тук.
>> И сега, ред 3 изглежда малко по-различна.
И това е само един ред.
За да направите това дори по- ясно, можех просто
се това да бъде стилистично съответствие с всичко друго, което съм направил.
Но това не е наистина промяна на функционалност.
Това е само една линия на недвижими код.
>> Очевидно е, че има една функция някъде наречен направи удар с глава,
и това е мястото, където нещата получите доста мощен.
Забележете, че в рамките на своите скоби е какво друго парче синтаксис?
Това е може би малко по-трудно да се каже, но забележите there's-- Ще сложа малко бяло
пространство.
Има квадратни скоби.
>> И квадратни скоби, които видяхме преди малко в контекста на асоциативни масиви
които, отново, като хеш таблици.
И ако мислите, че сега, за да С, За аргументи в функция
винаги трябва да бъдат еднакви.
Трябва да се помни какво, поръчате is-- X, Y, Z или Z, Y, x--
и вие винаги трябва да им се осигури в същия ред или да ги гледам
ако сте забравили.
>> Но това изглежда е един умен начин на полагане на стойност произволен клавиш
двойки, при което заглавието е името на аргумент в този случай
и CS50 е неговата стойност.
А фактът, че имам тези квадратни скоби
тук означава, че можех да премине в нещо
като седмица е 1 или 0 или 2 или 3.
Така че ние сме параметризирано тази функция по такъв начин,
че това може да отнеме много входове, но за сега това е само един.
>> Ако аз сега отида в helpers.php, забележите това, което прави.
Това е малко по- на нова функционалност,
но за сега просто да на вяра, че това е
синтаксиса, с която дефинира функция в PHP.
Можете буквално да кажа функция.
Вие не уточняват връщане пишете, и това е в съответствие
с променлива детайл по-рано където наистина не силно пишете.
>> Това просто уточнява, че по подразбиране това
отнема асоциативен масив като аргумент.
И знаеш ли какво?
Ако потребителят не минава един в, да предположим, стойност по подразбиране.
>> Това е функция, която C не трябва за нас, което е хубаво, защото сега
данни, дори ако не го даде нещо,
ще бъде масив, но празна.
И като настрана, екстракт просто прави нещо фънки
където е необходимо всички ключове от този асоциативен масив, всички неща,
бихте могли да поставите в квадратни скоби, и създава променливи от тях
така че в крайна сметка можем да имаме достъп за тях в footet.php и header.php.
Това е малко абстрактно, така че нека да се отбележи това.
>> В index.php, забележите, че аз съм преминаване в ключов стойност чифт заглавие
на стойност CS50.
Ако сега погледнете helpers.php, забележите, че RenderHeader
е извличане на тези данни, че аз съм минаваща , а след това се изисква header.php.
Това, което съм направил е нещо лошо на човека изпълнение сега на следното.
>> Ако се отвори header.php, известие, че съм вече не трудно
кодирана думата CS50 в заглавния файл.
Вложил съм това наистина отвратително име функция, HTML специални символи,
там.
Но забележете какво съм направил.
Имам отворен HTML.
Тогава имам отворена глава и отворени заглавие.
>> И тогава вътре на отворена и на заглавието Затвори таговете, имам малко PHP код.
И това е хубаво, но на синтаксиса, което просто означава, ехо навън.
Това буквално означава this-- ехо following--
но това е по-секси, за да пиша.
Ехо от титлата който е бил приет вътре.
>> Но какво мислите HTML специален знак е за всички,
особено ако имате някои преди HTML опит?
Какви знаци могат да бъдат Опасно е да премине, за да страница
къде сте динамично генериране уеб страница с код като този?
Позволете ми да отидете на този файл, версия две, и да видим, ако не може да предизвика това.
>> Версия две е това.
И забележи всичко е добре, работи добре.
Но предполагам, че отивам в index.php и I е посочено, че заглавието на страницата си
не е CS50.
Това е сигнал, отворена скоба скрипт Здравей, свят, в близост апостроф,
близо скоби, точка и запетая, отворена скоба, наклонена черта скрипт.
>> Script, като ние ще в крайна сметка виждате, е етикет
които можете да използвате, за да се използва от друг език за програмиране, наречен
JavaScript във вътрешността на дадена уеб страница.
И сега забележи логиката тук.
Тук е ключов нарича заглавие.
Ето това е луд дълго стойност сега.
>> Но ако отида на помощници page- или по-скоро, на страницата на хедър,
Обаждам се на тази функция на тази титла на първо място.
Така че, ако сега аз презаредите тази страница, I виж това, което изглежда абсурдно,
но това е безопасно.
Той просто изглежда глупаво.
>> Но вместо да предполагам Бях забравил това.
И помнете ми думата, ненулев брой вие ще забравите да направите това
и вие ще получите някои трудолюбив студент или приятел, идва
за вас по време на панаира CS50 или анонимно през нощта изпълзяват около на вашия сайт
и по същество инжектиране код без знанието на вас на вашия сайт
по някакъв начин.
>> Защото, ако аз просто плюе Титла тук и титла
there-- добре, ако заглавието буквално прилича това и PHP
като език, който може да плюе на други езици, текст,
това е буквално ще да се замени с този етикет,
Разбира се, това, което сложих на друго място.
>> Така че, ако сега отидете тук и да се презареди след отменяйки тези механизми за безопасност,
сега имам здравей свят тук.
Сега това не е всичко, че голяма от се справят, но бихте могли да направите нещо
малко по-злонамерен тук, като има
други tags-- както ще видим след като ние прекарваме повече време в JavaScript-- като място
точка HREF получава, цитирам, край на цитата, HTTP business.com, но обратното на това
от онзи ден.
И сега може да предизвика уеб страница действително да отиде веднага
тази уеб страница тук.
>> И всъщност, аз не искам дори да отидете на business.com
защото аз не искам да знам какво е това.
Но това също ще доведе до код трябва да се инжектира в тази страница.
Така че това е само за да се каже, че въпреки че ние сме за въвеждане на супер рано някои
на тези по-сложни структури, всичко е към своя край като се уверите
че кодът не е приложимо.
>> Така че сега трета версия тук.
Става все по-малко красиви.
Аз наистина не like-- аналния ми страна
ставаше все по-малко ядосан от Факт е, че бях функция, наречена
RenderHeader и RenderFooter които са почти идентични.
Така ми хрумна, защо да не се направи I задаване на параметри на тези функции
в само една, наречена направи, го вземе втори аргумент
като името на шаблона, на финала да render-- или горен или долен колонтитул?
И след това е възможно, ако искам да премине в някои ключови двойки стойности
като правя за титлата за служебната информация, но не и за долната лента,
Бих могъл да направя това.
>> И така, сега, ако отида в helpers.php, това е малко по-сложен.
И аз ще размахва ръцете си в подробности, но това е само една функция.
Така че това е стъпка към по-добър дизайн.
>> Ние можем да използваме тази една стъпка по-нататък.
Ако отида в моя четвърти версия на това, забележете сега
че правя нещо още по-загадъчен вид.
И знам, че това е много да се абсорбира веднага,
но ние сме просто вид за почистване на нещата.
Сега аз съм като моите помощници файла в папка, наречена
includes-- просто произволно назове мястото, където искате да поставите неща
че искам да include-- и след това останалата част от това е същото.
>> Но ако погледнем сега в Gedit, известие, че съм намерила отърве
на всички тези други файлове и съм тях преместени, например, в тук.
И след това в шаблони, Аз имам този тук.
И така, това е всичко, сега на стъпка за използване на много по-добре шарка.
И ние сме много бързо ще се премести далеч
от функционалност подразбиране на PHP, което започнахме тук с,
където можете просто да смесвам PHP, и си HTML и CSS си,
а ти просто го изплюе и да отида за вашия начин.
Тя няма да бъде много може да се поддържа.
Точно както в C, ние започнахме да използваме множество файлове и множество функции
и факторинг неща, че от.
Ние ще направим същото тук.
И в действителност, в петия и финала версия тук, направих едно друго нещо.
Можете дори да използвате точка точка, която, отново, е просто директория.
За да бъде още по-голяма сигурност в съзнание, защото, ако аз гледам на слушането
тук за петата и последна версия, известие че имам една директория, наречена тук
обществени, а след това върху същото ниво, така да се каже,
Имам включва и шаблони и след това, че текстов файл Readme.
>> И причината съм структуриран харесва this-- и толкова много уеб
Силите, особено онези $ 5 месеца такива или $ десет месеца такива,
ако някога сте имали някое от тези services-- какво толкова много от тях
е, че те просто очаквам да зареже всичко на вашите файлове в една директория,
като ние вече направихме с този първи пример.
>> Но веднага след като се започне изграждането на по- сложни сайтове, които само се съхранява
данните, които се грижат за вас и файлове грижа за, всъщност организиране неща
правилно и с по-голяма сигурност съзнание в съзнанието може да
ние започваме да се защитава срещу всички приятели
че имате във или извън този клас, който,
веднага след като започнете да печелите програми за себе си в интернет,
ще започне бране върху вас и върху тях.
>> И така, ние ще разгледаме в крайна сметка в този дизайн.
Това е само една снимка която показва следното.
Отиваме да се сложи всичко на нашия програмиране логика в един или повече файлове,
и ние просто ще започне призовава тези контролери.
Това е мястото, където мозъците на нашите сайтове всъщност са.
След това ние ще имат изглед и изглед
са толкова прости, колкото просто отделен files-- наречените шаблони, често.
Те просто имат естетика на моята страница,
това, което искам на страницата, за да изглежда like-- цветовете и оформлението
и позициите на Всички променливи.
>> И тогава по-интересно че ние в крайна сметка ще стигнем до
е модел, който ще бъде само думата ние шамар на други технологии
че ние носим в картина, като действителните бази данни,
така че, когато искате да запазите информацията,
не трябва само да изпратите имейл да си Proctor или за себе си,
всъщност я съхранява в база данни използване на друг език, известен като SQL.
И така, ние ще оставим тук днес и вземете с този в сряда
и въвеждане на бази данни след това.
>> [За възпроизвеждане на музика]