>> [Музыка, якая іграе]
>> Дэвід Дж Малання: Добра.
Гэта CS50.
Гэта пачатак тыдня восем.
І вы, напэўна, памятаеце, што мы спыніліся Апошні раз, гледзячы на ​​новую мову
ў цэлым.
На самай справе, адзін, што даволі лёгкі і гэта нават не
Мова праграмавання.
Гэта мова разметкі, які дазваляе нам фактычна структураваць і зрабіць вэб-старонак.
А калі вам што-то яшчэ ў спалучэнні з this--
ці вы хутка будзеце, калі Вы ўжо не маеце.
Мы збіраемся выкарыстоўваць каскаднае Стыляў, або CSS, якія
яшчэ адзін тып мовы са ўласцівасцямі і значэннямі
што адбываецца, каб паведаміць нам зрабіць рэчы, як змяніць колер
і змяніць становішча і гэтыя віды налад.
Але сёння і далей, мы пачынаем засяродзіцца на больш магутных мовах,
фактычныя мовы праграмавання, такія як PHP.
>> Так PHP была вакол на працягу некаторага часу.
І, як вы ўбачыце, гэта быў распрацаваны, перш за ўсё,
рана для фактычная выкарыстоўваць у вэб-распрацоўцы
і на самай справе генерацыі вэб-старонак.
Так што віды Асаблівасці робіць мову
трэба для таго, каб вэб- старонкі дынамічна з ёй?
>> Іншымі словамі, калі вы хочаце стварыць Змест dynamically-- як Facebook,
Стужка навін, якія пастаянна змяняецца, або імгненныя паведамленні, якія з'яўляюцца час ад
у time-- як тое, што Ключавой часткай функцыянальнасці
Вам трэба на мове праграмавання што хай будзе вам дынамічна
друкаваць новую інфармацыю на экран?
>> СТУДЕНТ: Код.
Дэвід Дж Малання: Код.
Добра.
Мы будзем лічыць, што.
Крыху больш за дакладным.
Я маю на ўвазе, мы маглі б зрабіць гэта з C, адкрыта.
Было б боль у шыі.
Но-- гэта абавязацельства?
>> СТУДЕНТ: Так.
Зменныя, можа быць?
Дэвід Дж Малання: Зменныя.
Так, вядома.
Зменныя, безумоўна, можа дапамагчы нам.
І нават што-то прасцей.
Мы выкарыстоўвалі яго ў самы першы Праграма першага дня
калі мы на самай справе сказаў "прывітанне свет".
>> СТУДЕНТ: Друк.
>> Дэвід Дж Малання: Друк, ці не так?
Друк, або Printf ў Свет C. Такім чынам, увесь гэты час,
мы мелі ў нашай утылізацыя language-- C,
у particular-- і нават Драпіны на тое пайшло, што
можа генераваць радкоў тэксту.
>> Ну, калі HTML, як мы бачылі на мінулым тыдні, з'яўляецца проста цэлая куча радкоў тэксту
хоць і з адкрытымі дужкамі і зачынены Кранштэйны і нейкі вершык
і прычына гэтага, ну тады мы маглі сапраўды
пачаць вырабляць вэб-старонак альбо ўручную, увёўшы іх у Gedit
або ў Microsoft Word, для гэтага matter-- мы проста патрэбен тэкставы рэдактар.
>> Ці мы маглі б напісаць код, з Вашым прапановай
раней, што хай бы нам дынамічна генераваць HTML,
і вось што мы збіраемся каб пачаць рабіць з PHP
і ў канчатковым выніку нават пры Мова называецца JavaScript,
гэта выкарыстоўваць адну мову для стварэння іншы.
І на самай справе, гэта тое, што Facebook і многія, многія іншыя сайты
зрабіць, каб на самой справе дынамічна адлюстроўваць новую інфармацыю для вас.
>> Такім чынам, давайце пачнем з this-- а загадкавымі гледзячы лінія, але адзін
што на самой справе даволі магутны.
Да гэтага часу, мы выкарыстоўвалі C, якая ўяўляе сабой скампіляваны мову.
І проста хутка recap-- складзены Мова мае якой характарыстыку?
Вы, відавочна, трэба кампіляваць гэта, але што гэта значыць?
Так?
>> СТУДЕНТ: Яна павінна быць сабраны ў машынны код.
>> Дэвід Дж Малання: ОК.
Ён павінен быць сабраны у машынны код.
Такім чынам, вы бераце свой зыходны код, якая з'яўляецца свайго роду англійская-як.
Вы пераўтварыць, што ў што-то больш нізкі ўзровень,
які ў канчатковым рахунку называецца Аб'ект code-- 0 і 1 ..
І гэта тыя 0 і 1. што CPU, як тыя зробленыя Intel,
на самай справе зразумець.
>> Зараз, PHP і Python і Рубі і JavaScript і гронкі сябра
языкі не складзены мовы, але інтэрпрэтаваных моў,
значыць, вы проста ўводзіце іх, а затым Вы не ператварыць іх у 0 і 1 ..
Вы замест гэтага проста забяспечыць тое, як уваход для праграмы чужым,
называецца перакладчык.
І дадзенай асобы праграма была распрацавана
каб зразумець, што кожны і кожны знак у Python або PHP
або Рубі або любую колькасць іншыя мовы азначае.
>> А так усё што нам трэба гэта нешта накшталт гэтага.
Такім чынам, на самай справе, я збіраюся перайсці да прыбора
тут, як раз у любы Старое акно, і мы
збіраюся ісці наперад і адкрытым файл з імем, скажам, прывітанне.
Цяпер раней, я мог бы выратаваць гэта нават з пашырэннем файла,
але я збіраюся зрабіць што-то яшчэ прасцей тут.
Я збіраюся ісці наперад і пачаць гэты файл з гэтай загадкавай сінтаксісу.
Такім чынам, "карыстальнік, бен, ENV, для навакольнага асяроддзя, PHP ".
>> Гэта проста адна радок кода, што гэта збіраюся распавесці сваю аперацыйную сістэму,
знайдзі ў ваш мясцовы серада усё, што ёсць,
ўсюды, дзе PHP is-- на interpreter-- і ісці наперад і выкарыстоўваць гэтую перакладчыка
інтэрпрэтаваць наступны код.
Цяпер, гэта свайго роду пачварны асаблівасцю PHP.
Але на гэтай мове, любы раз, калі вы напісаць PHP код,
Вы павінны мець адзін з іх непрыгожа PHP-тэгі дэмаркацыі пачатак
Вашай code-- <? PHP.
>> Але ніжэй, на што я магу зараз зрабіць што-то даволі проста, як Printf прывітанне коска
Свет зваротны слеш н блізка цытата, блізка дужкі.
А потым проста назаўжды мера, я збіраюся
ісці наперад і блізка мой PHP тэг тут
каб усё выглядала прыгожа даволі надрукаваныя.
>> І як толькі я націсніце кнопку Захаваць, Gedit дастаткова на самай справе разумныя
паглядзець на гэтай самай першай радку і рэалізаваць, ну, вы пішаце PHP-код.
Хай мне падсвятленне сінтаксісу гэта з кветкамі
тут так, што ён стаіць трохі больш.
Але зараз я збіраюся пайсці да майго акна тэрмінала.
Я маштабу.
>> Гэтая праграма называлася «Прывітанне», так што я збіраюся рабіць кропкавы рысу прывітанне,
але доступ забаронены.
І баш.
Мы на самай справе чулі пра тое, што рэч пару тыдняў таму
у кантэксце Shellshock, адна з гэтых памылак.
>> Але дазвол адмаўляў, што мы бачылі да, можа быць, у іншым кантэксце.
Нагадаем, Хто-небудзь, як Вы маглі б нешта выправіць
дзе дазвол адмоўлена, як гэта?
Што каманда, па меншай меры ,?
>> СТУДЕНТ: Chmod.
Дэвід Дж Малання: Так, CHMOD, для змены рэжыму файла.
І вы атрымаеце ўсё больш выкарыстоўваюцца для гэта на наступным тыдні з наступным праблемы
ўсталяваць.
Але цяпер, я збіраюся змяніць Рэжым не павінны быць бачныя,
але каб даць кожнаму executeability льготы, магчымасць
каб запусціць гэты файл.
І я збіраюся прызначыць што ў файл прывітанне.
>> Калі я зараз зрабіць кропкавую рысу прывітанне увядзіце, вам см, на самай справе, мая праграма, прывітанне свет.
І тое, што крок зрабіў я ясна прапусціць наогул?
Кампіляцыя.
Так што я проста запусціў гэтую праграму даволі проста.
>> І атрымліваецца, што вы можаце зрабіць гэта з шмат сінтаксісу нагадвае С.
Адпусьці мяне ў сённяшняй кода, якія я паклаў у маім каталогу з віртуальнымі хастамі
тут, на рэальных прычын мы вернемся да.
І я збіраюся пайсці ў, скажам, умовы 1.
>> І вы ўбачыце тут, у першую за ўсё, цэлая куча заўваг.
Але гэта на самай справе аднаўленне ў PHP
праграмы мы зрабілі ў тыдзень адна называецца ўмовы 1.c
дзе мэта ў жыццё гэтай праграмы
па-відаць, каб спытаць Карыстальнік цэлы лік
а затым зрабіць некаторыя пухнатыя Аналіз на ім у выніку чаго
Вы кажаце, калі гэта станоўча ці адмоўны або роўны нулю.
І я пра гэта толькі таму, што, на працягу магчыма адной маленькай дэталі, за выключэннем,
гэта неадрозна так далёка ад С.
>> Што адна характарыстыка тут, што, можа быць, выскоквае
ў вас як трохі адрозніваецца?
Можа быць, дзве рэчы.
Так?
>> СТУДЕНТ: Знак даляра н?
>> Дэвід Дж Малання: Так.
Так знак даляра н прысутнічае.
І даляр прыкметы, як мы ўбачым, ідуць
быць выпраўленне да пачатку любы зменнай у PHP.
Гэта і добра, і bad-- добра ў што гэта свайго роду відавочна, што гэта
Зменная, дрэнна ў тым, што гэта яшчэ адна рэч, каб ўвесці.
І ёсць яшчэ адзін што ў нас ёсць не зусім
відаць, па меншай меры, па гэтай арфаграфіі. так?
>> СТУДЕНТ: Readline.
>> Дэвід Дж Малання: Readline.
Readline мы не бачылі, як такой, у З, нават пры тым, што існуе нешта
падобныя, але мы выкарыстоўвалі GetString, і ў гэтым яго калега.
Так што, калі я іду ў гэты каталог, які бывае,
як я растлумачу ў трохі ў маёй віртуальны хост каталог і мой крыніца каталога,
і я іду наперад і рабіць кропкавы слэш conditions-- whoops-- кропка слэш
ўмовы 1, вы ўбачыце, зноў жа, тое ж самае issue-- доступ забаронены.
>> Такім чынам, дазвольце мне павялічваць і рабіць CHMOD плюс х на ўмовах, кропкавых умовах касой.
Я хацеў бы цэлае, калі ласка, 50.
І мы маглі б гуляць у гэтую гульня на працягу ўсяго дня.
Гэта будзе паводзіць сябе сапраўды гэтак як гэта было ў тыдзень адзін.
>> Добра так не ўсё, што адрозніваецца, за выключэннем таго, не толькі, што невялікая трохі сінтаксісу,
але ў верхняй часткі, я зноў была гэтая лінія, якая
дазволіў мне стварыць нешта, што выглядае як C праграму пад назвай Прывітанне,
званыя ўмовы 1.
Але гэта не 0 і тыя, Я выканання непасрэдна.
Гэта замест таго, каб працаваць у гэтым перакладчык, імя якога
здараецца, супадае з мовай.
Праграма называецца PHP, і мой код ніжэй лініі адзін перадаецца ў яго.
>> Мы можам зрабіць яшчэ адзін даволі просты прыклад нагадвае пра што-то
мы зрабілі тыдняў таму.
Зноў жа, гэта свайго роду адвольнае кавалак кода
што, па-відаць робіць што пры запуску яна?
Што гэта ў друк, па-відаць?
>> Так, першапачаткова на лініі 16, гэта збіраюся сказаць х цяпер 2, напэўна.
% D такая ж, як $ я для Printf.
Так то гэта кубатуры, кропка, кропка, кропка, у радку 17.
І тады лініі 18 з'явіцца для выкліку функцыі ў кубе.
А дзе ў кубе вызначаецца?
>> Ну, як ён выглядае ў лініі 25, так што гэта не ўсё, што адрозніваецца.
У мяне ёсць некаторыя каментары вышэй гэта, але па большай частцы,
гэта даволі проста партаванне або пераўтварэнні
ад C праграмы на PHP версіі.
Але ў цяперашні час існуе некалькі адрозненні, якія, можа быць, варта скакаць.
Што яшчэ адрозніваецца, як вы можа напісаць гэтую ж праграму ў C?
>> СТУДЕНТ: [неразборліва].
>> Дэвід Дж Малання: Там няма прататып верх.
Так PHP-- і, шчыра кажучы, Шмат сучаснай languages--
шмат разумней і карысна чым C кампілятары ў тым, што вам
можна паставіць функцыю тут, Вы можаце змясціць функцыю тут,
а перакладчык будзе зрабіць вам ласку чытання
ўвесь файл перад яго вырашае што некаторыя функцыі не існуе.
Так прыемна ўдасканалення гадоў праз.
Але ёсць таксама тое, яшчэ адрозніваецца або адсутнічае тут.
Так?
>> СТУДЕНТ: [неразборліва].
Дэвід Дж Малання: Мы не павінны аб'яўляць тыпы зменных,
так што мы ўбачым у бліжэйшы час, што Існуюць розныя тыпы ў PHP,
але вам не трэба паказваць іх, які таксама з'яўляецца і добрае і дрэннае.
І ёсць яшчэ адна рэч, якая адсутнічае.
>> СТУДЕНТ: Там няма бібліятэкі.
>> Дэвід Дж Малання: Там няма бібліятэкі.
ОК, так што гэта добра.
Мы атрымліваем нашмат больш з скрынкі.
Так што на самай справе значна больш, рэчы, чым я думаў, былі розныя.
Як наконт шляху ў спіне?
Што гэта?
Скажыце, што гэта яшчэ раз?
>> СТУДЕНТ: Паказальнік.
>> Дэвід Дж Малання: Няма паказальнікаў.
Добра, па меншай меры, у гэтым прыкладзе, няма.
Гэта справядліва.
Такім чынам, значыць не паказальнікі у PHP фактычна ў цэлым.
Ёсць што-то называецца спасылкі, але мы не будзем марнаваць занадта шмат часу там.
А што яшчэ?
>> СТУДЕНТ: Галоўная.
Дэвід Дж Малання: Галоўная.
Так гэта было важная персона Я думаў пра.
Звярніце ўвагу, што ня мае асноўнага кропкай ўваходу.
Вы проста пачаць пісаць код.
І гэта на самай справе будзе выгадна
калі мы пераходзім на імгненне, каб на самой справе з дапамогай
гэта той жа мову для вэб- праграмаванне, для якіх мы
не хачу мець толькі адну кропку ўваходу.
Мы, магчыма, захочаце мець кучу URL-адрасы, куча розных файлаў
усе браць у карыстацкі ўвод і вырабляць прадукцыю.
>> Але вось вельмі ўразіла Прыклад, які я абяцаў у мінулы раз,
а менавіта ў гэтай тэчцы тут, памылкамі друку.
Так што ў гэтым файле правапісу, якія мы не будзе марнаваць занадта шмат часу на, ёсць
істотна porting-- P-O-R-T. Гэта проста слова, дадзенае калі, скажам,
пераўтварэнні з адной мовы ў іншую, як правіла, уручную.
>> Гэта партаванне ПК версія правапісу ад PSET 5.
І я ў асноўным спрабаваў пераўтварыць гэта радок за радком, наколькі я магу.
Так што, калі вам падабаецца гэты выгляд рэчы, ён на самай справе стаіць на нейкі момант
пацягнуўшы іх абодвух да бок бок і бачачы, што тая ж самая
і што па-іншаму.
Але яны па-чартоўску падобныя.
Калі вы памятаеце, тое, што арфаграфіі нават выглядаў,
нават калі вы не зрабілі павінны змяніць гэты файл,
гэта даволі падобныя структурна толькі з некалькімі
зменаў тут і там.
>> Так што гэта толькі сказаць, што гэта даволі проста канвертаваць Speller
ад З да PHP.
Але ў слоўніку, ёсць што-то яшчэ больш прывабным.
Дазвольце мне ісці наперад і ствараць мой уласны файл dictionary.php.
Так трохі адрозніваецца ў тым, што мы будзем называць яго .php замест .c.
Таму што гэта файл PHP, я do-- злёгку annoyingly-- ёсць
на запуск файла з тэг PHP падобнае.
І я збіраюся ісці наперад і вызначыць некалькі функцый.
Функцыя называецца праверка, якая з'яўляецца збіраецца заняць у слове, як раней.
Але гэты аргумент-х будзе мець даляр
падпісаць, таму што мы, зноў жа, з дапамогай PHP.
Яшчэ адна функцыя з dictionary.c быў нагрузка
і ён узяў на імя слоўніка, так што я атрымаю гэтую функцыю гатовыя пайсці.
>> Яшчэ адзін у dictionary.c было тое, што?
Памер быў адным з самых добрых, у Прынамсі, калі вы трымалі некаторыя зменныя вакол.
так што памер проста павінен вяртаць зменную.
А потым была разгрузка.
>> Так з'явіліся гэтыя чатыры функцыі ў праблеме ўстаноўкі +5
што вам трэба для рэалізацыі з некаторыя структуры дадзеных або структуры.
Так што я абяцаў, што ў PHP, мы можам аб'явіць
Хэш-табліца, напрыклад, Усё, што больш лёгка.
На самай справе, калі я хачу хэш-табліцу, Я проста хачу, каб ісці, як, што
і ёсць мая хэш-табліцы.
І гэта заўвага, роспач, што мы спыніліся на апошні раз.
І вы ведаеце, што, калі б я хацеў пераменная для памеру, добра,
гэты яшчэ не ўсё што адрозніваецца ад C,
але я збіраюся ісці наперад і рабіць што.
І не заўважыць не тып дадзеных.
І я вярнуся пазней, а на самай справе дадаць некаторыя каментары тут.
Але як наконт нагрузкі?
>> Калі слоўнік знак даляра гэтае імя майго файла
і я на самой справе хачу, каб загрузіць слова ў гэтай табліцы прадпрыемствам,
Я магу на самой справе што-то даволі проста.
Одно-- і гэта minorly annoying-- ў PHP,
Вы павінны паказаць ўнутры функцыі, калі вас
хочаце атрымаць доступ да некаторых глабальным Пераменная які вызначаецца межамі.
>> Але гэта не асабліва Цікава цяпер.
Што больш цікава, гэта для кожнага пабудаваць што я ўжо ў апошні раз.
І атрымліваецца, што PHP мае функцыю называецца файл, мэта якога ў жыцці
гэта адкрыць файл і прачытаць у ўсе яго лініі ў масіў
і перадаць іх назад да.
>> Які павінен сказаць, што я магу зрабіць слоўнік так што ў цяперашні час эфектыўна, калі я называю файл,
гэта будзе здаць мяне Масіў слоў з файла.
Гэта яшчэ не ўсё, што добра.
Ён па-ранейшаму будзе лінія слоў, што-то лінейнай.
Але я магу ісці наперад і ітэрацыі за кожнае з гэтых слоў з дапамогай
што сінтаксіс мы бачылі коратка апошні раз.
І вы ўбачыце гэта больш у маючым адбыцца PSET.
>> Але зараз у мяне ёсць завесы ітэрацыі за кожнага слова ў слоўніку.
І на кожнай ітэрацыі, успомніць, што я называючы бягучае слова "слова".
І ўсё гэта зойме, каб ўклаў слова ў слоўнік
будзе слова здагадка "праўда".
Гэта мая функцыя ўстаўкі.
Гэта мая функцыя нагрузкі для майго слоўніка.
Зараз гэта накшталт падману, таму што, Вы ведаеце, што ёсць на самой справе
зваротны слэш н-х у канцы слова што я, верагодна, варта пазбавіцца ад,
але гэта не праблема, таму што PHP мае Функцыя называецца адбіўную, якая ў літаральным сэнсе
адсякае аднаго персанажа ў самым канцы.
Так ніякая праблема там.
Мы пайшлі наперад і на самай справе скарачаецца, што менавіта да гэтага.
І зараз я, верагодна, варта адсочваць ад памеру, так што давайце, па меншай меры зрабіць this--
Памер ++.
Я магу зрабіць гэта, як і раней.
І тады гэта, верагодна, будзе працаваць нармальна, так што вернемся дакладна.
Гатова.
PSET 5.
>> [Смех]
>> Дэвід Дж Малання: ОК.
Мы збіраемся зрабіць гэта зноў з наступнага PSET, таксама.
Так што аб памеры?
Ну, гэта адзін, спадзяюся, пра як можна было б чакаць у мінулы раз,
хоць я павінен зрабіць гэта па-дурному глабальная рэч.
Гэта проста артэфакт ад дызайн мовы.
>> Але праверка з'яўляецца трохі больш цікавым.
Так што, калі я прайшоў у долар падпісаць слова, я ўпершыню
хочуць мець доступ да што глабальная пераменная стол.
І зараз, калі я хачу, каб праверыць, калі слова ёсць,
Я магу проста сказаць, калі гэта праўда, што Ніжэй усталёўваецца ў табліцы,
затым пайсці далей і вяртанне праўда; яшчэ, вярнуцца ілжывым.
Гатова.
Іншая палова PSET 5.
>> Добра, так што зноў, я рэзкі некалькі кутоў.
Справядлівасці дзеля, варта, верагодна, правесці яшчэ некалькі секунд
на гэтай рэалізацыі.
І я, напэўна, не варта дражніць ўсе гадзін вы паклалі на PSET так шмат.
Так strtolower з'яўляецца функцыяй.
Што-то падобнае экзистенциалист у С, па меншай меры, для сімвалаў,
але PHP атрымаў цэлы версію радка.
>> Гэта адбываецца, каб прымусіць усе у ніжні рэгістр, які некаторыя з вас
маглі б зрабіць, каб кананізаваць што Вы ставілі ў слоўніку.
І цяпер вы можаце зрабіць гэта ў C, занадта.
Гэта не мае нічога агульнага з PHP.
>> Але ў любы час у вас ёсць Лагічнае стан,
як-то на лініі 10 ёсць, якія толькі
збіраецца ацаніць, дакладна ці хлусня, і ваш, калі яшчэ ясна
вяртаецца сапраўдным або ілжывым, я мог проста сапраўды зрабіць гэты сэксуальней
і проста зрабіць нешта накшталт гэтага.
Так што мая функцыя праверкі.
Права, калі лагічны вяртае сапраўднае або ілжывае,
давайце проста вярнуць яго адразу.
>> І ёсць некалькі іншых налад Я мог бы зрабіць тут і там.
Load-- выгрузкі, дарэчы, гэта будзе зроблена.
Нічога не рабіць там.
Так як усё ў памяці PHP і многія іншыя мовы
на самай справе атрымалася для вас.
Так, тады як у C, як Вы даведаліся хваравіта,
усё, што вы Таноса або calloc або Realloc, вы павінны вызваліць сябе.
Усё, што вы адкрыць паток, вы павінны fclose, такім чынам, што рэсурсы, у канчатковым рахунку вызваленыя
і інструменты, такія як Valgrind ня заўважыць і не скардзяцца,
які з'яўляецца добрай рэччу для працы на іх.
>> Але, вядома, там павінны быць некаторыя ўлоў, ці не так?
У адваротным выпадку, мы як-то марна цэлая куча тыдняў.
Так што любую колькасць прычын Таму мы як бы ўзяць гэтую траекторыю,
але ёсць кампраміс.
Права, гэта было тэматычным.
>> Так што можа кампраміс тут рухаецца, ад З да PHP?
Па адчуваннях усе выйграць да гэтага часу, акрамя трохі агіднасці тут ці там.
Так.
Што гэта?
>> СТУДЕНТ: [неразборліва] памяці.
Дэвід Дж Малання: Хуткасць.
Добра.
Ну, мая хуткасць была даволі хутка.
Ці не так?
Але хуткасць выканання праграмы?
ОК, так што гэта справядлівая заўвага.
>> Так як гэта будзе адбывацца, я загадзя падаюць рэплікі да як маё рашэнне паспрабаваць, адзін
Я быў на вялікай дошцы было рашэнне спроба аснове,
і ў мяне ёсць, што ў гэтым каталогу тут.
Так што я ў дадзены момант, я магу ісці наперад і запусціць гэта на Бібліі караля Якава,
Націск Enter.
І гэта, спадзяюся, правільна Рэалізацыя ў канцы,
дае мне час у агульнай складанасці з 0,38 секунд для гэтага
адзін некалькі адвольна прыклад.
>> І калі я зараз спыняцца на гэтым Другі акно тэрмінала
тут, дзе я ўпершыню адкрыў Gedit, хай мне ісці ў сённяшнім code-- якія, зноў жа,
знаходзіцца ў гэтым каталогу here-- і дазвольце мне ісці наперад і працаваць Speller.
Так проста быць ясна, гэта PHP версіі.
Я толькі паказваю верх яго тут.
>> Так што, калі я раблю Speller з тыльды CS50 Pset 5 тэксты, Кароль Джэймс, увядзіце.
Ён па-ранейшаму хутчэй, чым лісты гэта ў C, але агульны час
гэта, заўважце, 0.93, у той час як мой Рэалізацыя C на базе 0,38.
Так што гэта нетрывіяльная розніца.
>> І гэта толькі на адным файле.
Калі б вы былі запусціць два праграмы ў параўнанні з вялікай дошцы
і ёсць цэлая куча уваходаў выпрабаванні, гэта, безумоўна, складаюцца.
І калі б мы мелі нават вялікія аб'ёмы дадзеных, гэта таксама будзе скласці ўсе больш.
Так што, так, плаціць некаторую цану хуткасці сапраўды так.
Што яшчэ?
Так?
>> СТУДЕНТ: Сума выкарыстання RAM.
>> Дэвід Дж Малання: Сума выкарыстання RAM.
Так што я не даваў адну секунду думаў, калі пісаў гэтую PHP
Версія пра тое, як шмат памяці я выкарыстаў.
Я цалкам адкласці, што ў PHP Сам і той, хто напісаў гэтую праграму.
І што можа быць у парадку, Але калі я на самой справе вельмі
клапаціцца аб сціскаючы столькі прадукцыйнасць з маёй праграмы або з майго вэб-сайта
або з якой-небудзь інструмент Я будую, можа быць,
PHP, на самай справе, не з'яўляецца правільным мовай.
>> І на самай справе, менавіта таму, для Напрыклад, многія вэб-servers--
фактычныя праграмы, абслугоўваць вэб content--
не напісаны ў PHP або ў Python або Ruby.
Яны напісаныя, як Вы зараз зрабіць з Pset 6,
у C, так што вы можаце сціснуць кожны біт прадукцыйнасці з яго
і сапраўды ажыццяўляць кантроль дробназярністая над тым, што гэта
адбываецца пад капот і не проста ўзяць яго
як належнае некаторыя вышэй Структура дадзеных ўзроўню.
>> Разгледзім, у рэшце рэшт, хто ў PHP рэалізаваны
што паняцце хэш table-- гэта на самай справе больш
правільна называецца асацыятыўны array-- ён ці яна ёсць ідэі, якія
уваходаў вы збіраецеся быць ўвод у структуры?
Так, відавочна, не, не так?
Гэта універсальны інструмент, ў інструментары, гэта
пры ўмове, усім, хто хоча выкарыстоўваць яго, і таму, вядома, гэта
не могуць быць аптымізаваныя, у канчатковым рахунку менавіта тое, што вы хочаце зрабіць.
>> Так гандлёва-offs-- час распрацоўкі можа адрозніваюцца, прадукцыйнасць можа адрознівацца,
Складанасць або выкарыстанне памяці можа адрознівацца.
І так, што вы знойдзеце больш, што ёсць
будзе па-іншаму інструменты для гандлю.
І на самай справе для супер большасці Канчатковыя праекты народныя ў гэтым класе,
верыце ці не, C не збіраецца каб быць правільным мова выкарыстоўваць.
>> І на самай справе, адной з ежы на дом у канчатковым рахунку, для любога класа, як гэта
з'яўляецца, каб вы думаеце пра, добра, што вы павінны зняць
палка, калі вы хочаце вырашыць некаторыя праблемы.
І на самай справе, мы праз гэта нават больш, паколькі мы глядзім на некалькіх мовах
нават за сённяшні дзень.
>> Так што давайце пераход зараз магчыма, больш знаёмыя кантэкст
для выкарыстання мовы як PHP.
Гэта некалькі прынята выкарыстоўваць у каманднага радка, напісанне сцэнарыяў
як я зрабіў, але гэта шмат, значна больш агульнага.
І гэта было прызначана для выкарыстання ў форма файлаў, якія, як правіла, у канчатковым
у .php-- але гэта ня prerequisite--
што самі генераваць вэб-кантэнту.
>> Такім чынам, дазвольце мне ісці наперад і адкрыць некалькі Прыклады, якія я падрыхтаваў загадзя.
І гэта на самай справе свайго роду праўда Гісторыі ў тым, што адзін з першых рэчаў,
Я калі-небудзь рабіў сам пасля заканчэння CS50 і, можа быць, я думаю,
CS51 гадоў таму мой сусед па пакоі і я дапамагалі
запусціць пачаткоўца вочны спартыўную праграму, якая, у той час,
ўжо на першым курсе рэгістрацыі на розных спорт, запаўняючы лісток паперы,
як яго называлі, ідучы праз двор да Wigglesworth,
і паклаўшы яго ў некаторых Проктор падзенне дзверы.
І тады ён ці яна будзе праходзіць праз іх, а затым фактычна, напішыце нам ўручную
што мы былі зарэгістраваныя на працягу некаторага спорту.
>> Такім чынам, ясна, магчымасць для паляпшэння.
У гэтыя дні, вы можаце звярнуцца да толькі што Google Forms, але назад у дзень,
мы павінны былі на самай справе дасягнуць for-- гэта не было нават, што доўга ago-- дасягнуць
для праграмавання Мову, які не быў PHP.
У той час, гэта было тое, што называецца Perl,
які з таго часу выйшла з моды.
Але ідэя тая ж.
>> І я па сутнасці сеў паспрабаваць у порт ідзе Perl версіі для PHP,
але ў поўным агаворкі, не даюць Любая думка да эстэтыкі толькі пакуль.
Дык вось вэб-старонка.
Гэты файл.
Калі я набліжаць, яго, відаць, называецца froshim0.php
проста таму, што гэта наша першая Прыклад у гэтай серыі.
І заўважце, што ў яго ёсць тое, што здаецца быць вельмі непрыгожа форма HTML,
а форма Цікава паколькі яна дазваляе
мне даць карыстацкі ўвод у браўзэры.
>> Зараз апошні раз, калі ў нас быў выгляд, каб каго ж мы прадставіць нашу параметр запыту,
параметр чарзе, як яго называлі?
Такім чынам, каб Google, ці не так?
Мы цалкам спонтировал на ідэі рабіць што-небудзь з гэтым уваходам.
>> Але сёння, мы пачынаем вырабляць выснову.
А паводзіны я збіраюся паглядзець тут першапачаткова даволі трывіяльна.
Дэвід, я праверу ад падлогу Тут, кажуць, Мэтьюз тут.
Я не буду капітанам.
Я збіраюся націсніце Рэгістрацыя.
І звярніце ўвагу, што URL мае змянілася зарэгістравацца, 0.php,
а там гэты пачварны тэкст тут.
Я не думаў, каб фарматаванне гэта.
>> Але цікава тое, што тры Значэння па-відаць, былі перададзеныя ў.
Гэта свайго роду РНР з эквівалентна printf--
мы ўбачым, што гэта сапраўды называецца у bit-- што проста друкуе
тое, што вы прайшлі ў яго.
Такім чынам, гэта кажа пра тое, што гэтай форме па меншай меры тры поля да яе,
і вы бачылі, што я увядзіце іх у.
Адзін з іх быў маё імя, адзін быў падлогу, адзін быў інтэрнат.
І капітан нават не адпраўляюць на сервер, таму што я не правяраў яго.
>> Так што гэта сказаць па-відаць, калі вы прадставіць рэчы ў Інтэрнэце,
не толькі робіць URL часам change-- часам не.
На самай справе, імя файла змяніў, але тое, што адсутнічае ў URL
што мы сапраўды бачылі ў апошні раз з Google.
Так?
>> СТУДЕНТ: Няма радок запыту
>> Дэвід Дж Малання: Там няма радкі запыту.
Там няма пытальніка што-то.
Там няма пытальніка в роўная котак, як мы зрабілі ў мінулы раз.
І ёсць, вядома, няма Назва пытальнік роўна
Дэвід або інтэрната роўная Мэтьюз, так дзе тое, што ўсё адбываецца?
>> Ну, дазвольце мне вярнуцца да Gedit тут і адкрыць першы з гэтых файлаў
на мой віртуальны хост, лакальны хост, грамадскага каталог тут і пайсці ў froshim0.
Вось і атрымліваецца, што амаль усе гэтай старонцы толькі HTML.
І гэта можа быць вам незнаёмыя, але гэта хутка будзе больш, з PSET 6
і PSET 7 і PSET 8.
Але гэта толькі HTML-старонкі.
>> І цікавы матэрыял здаецца, тут.
Форма тэг, дзеянне якога атрыбут мае значэнне рэгістра 0.
Вось чаму, калі я ўявіць гэта, ён ідзе да гэтага файлу.
Але метад адрозніваецца раз сёння пост.
Вось і атрымліваецца, там, па меншай меры два метаду ў Інтэрнэце выкарыстоўваюцца
для перадачы інфармацыі ад браўзэра да сервера.
Get ставіць яго ў URL.
Паведамленне ставіць яго ў іншым месцы.
А калі і чаму можа вы на самай справе хочаце сайт
выкарыстоўваць пост, то замест з атрымліваеце, проста інтуітыўна?
Любы вэб-сайт.
Якія дадзеныя павінны быць перададзены толькі шляхам высноў зараз праз пост, у адрозненне
атрымаць, калі мы бачылі два адрозненні?
СТУДЕНТ: [неразборліва] забяспечыць.
Дэвід Дж Малання: Калі вы хочаце што-тое, каб быць у бяспецы.
Такім чынам, вы можаце ўвесці пароль ў вэб-сайт, крэдытная карта
ў вэб-сайт будзе выгляд з іх неаптымальна
калі браўзэр пакласці, што Значэнне ўнутры URL.
Чаму?
Вы бачыце яго, што не робіць здаецца, такую ​​вялікую справу,
але хутчэй за ўсё, вы даволі часта хадзіць удалечыні ад кампутара або выкарыстання кампутара
лабараторыі, і таму хто- у іншым месцы ці нават сусед па пакоі
маглі лёгка ісці ўверх і ўбачыць што прыватная інфармацыя.
Пры адпраўцы па электроннай пошце праз Інтэрнэт, вы, верагодна,
не хачу, што заканчэнне дадзеных да ў URL, а таксама.
І так ёсць любую колькасць прычын Таму мы, магчыма, захочаце паставіць яго тут.
І photos-- права, я не магу нават цалкам ўявіць сабе, як вы б графікі,
як JPEG, і пакласці яго ў URL.
Вы можаце зрабіць гэта.
Там у шляху кадавання яго, але гэта проста не простая, як, што.
>> Так зарэгіструйцеся 0 на самай справе вельмі захапленне.
Усё гэта кажа літаральна гэта.
Яна выводзіць у некаторых HTML тэгі наступнае.
У мяне ёсць PHP тэг тут укладзены ў загадзя тэга.
"Pre" проста азначае, папярэдне адфарматаваны тэкст, мона-разнесеныя, як пішучая машынка.
>> Printr з'яўляецца друк рэкурсіўная функцыя.
А тут яшчэ гэты Цікава тое тут.
І мы вернемся да гэтага таму што ёсць іншыя,
але знак даляра падкрэслення Паведамленне здаецца,
пераменная ў PHP, у якім што- Вы пасылаеце ад браўзэра да сервера
атрымлівае захоўваецца для вас.
І мы ўбачым, як дабрацца да што інфармацыя ў хуткім часе.
>> Але спачатку, давайце вернемся да трохі іншы прыклад.
Увайшоўшы ў register-- або хутчэй, froshims1.php,
які выглядае крыху па-іншаму.
Я ўзяў трохі больш намаганні з фарматаваннем,
хоць гэта ўсё яшчэ даволі пачварны.
Але я збіраюся ісці наперад і ўвядзіце ў "Давіда" цяпер.
Мужчынскі.
Мы праверым "капітан" у гэты раз.
Мы зробім Мэтьюз.
І зарэгіструйцеся.
>> І на гэты раз ён кажа, хм, не зусім.
Добра, так што Зарэгіструем 1?
Дазвольце мне ісці ў адкрытым рэестры 1 и-- гм.
Добра, так што гэта Цікава, а гэта
з'яўляецца прыступкай цяпер да больш цікавыя праграмы.
>> Звярніце ўвагу на верхнюю гэтага файла ёсць PHP тэга, а таксама некаторыя каментары.
І гэта, на дадзены момант, адцягненне так што давайце проста пазбавіцца ад гэтых каментарыяў
гэтак жа, як яны ў С. І я сцвярджаю, з гэтай кавалак кода з каментаром
што гэты код праверкі прадстаўлення.
>> Ну, атрымліваецца, што зменныя, такія як знак даляра
падкрэсліваюць пост з'яўляюцца называецца супер глабальныя.
Яны як яны спецыяльныя глабальныя зменныя
што толькі всенаправленной цяперашні даступныя ў вашай праграме.
І вы можаце выкарыстоўваць квадратныя абазначэння кранштэйна ў якасці індэкса ў іх не выкарыстоўваючы лічбы
як 0, 1, 2, 3, а рэальныя словы.
>> Такім чынам, вы можаце думаць аб знак даляра падкрэсліваюць пост як свайго роду хэш-табліцы
што вы маглі б прайсці ключ у, пошуку па Слова ў-ў квадратных дужках,
і ён збіраецца даць вам назад значэнне, што карыстальнік сапраўды прадугледжана.
PHP мае функцыю называецца пустым, што проста
кажа так ці не, гэта пераменная пустая ці не.
У нас ёсць гэтыя падвойныя бары, які проста азначае, ці, як у C.
>> Такім чынам, у сутнасці, гэтая лінія 4 з'яўляецца проста кажучы, калі карыстальнік не даць імя
ці не даць падлогу ці зрабіў не даць інтэрнат, ісці наперад і перанакіраваць яго
ці яе дапамогай гэтай лініі тут.
Так што гэта крыху загадкавым, але гэта проста азначае, літаральна
вярнуцца да гэтага месца, так што пласкадонку карыстачу
туды, адкуль ён ці яна родам.
Але гэта крыху безгустоўны у тым, што я жорстка яго.
>> Але што, калі гэта, калі ўмова ня ацэньвае да ісціны?
Што рабіць, калі карыстальнік сапраўды давалі мне яго ці яе імя і інтэрнаты і падлогу?
Гэта, калі ўмова не збіраецца ацаніць, дакладна,
так што я не патрапіў на выезд у радку 7.
Дык што ж адбываецца?
І гэта тое, што Цікава аб PHP.
>> Вы можаце зайсці ў і з рэжыму PHP, так бы мовіць.
Калі вы хочаце якой-то код, каб выканаць, Вы можаце адкрываць і закрываць PHP тэг
і паставіць код там, як я зрабіў тут.
Як толькі вы зачыніце PHP тэг, сервер
проста будзе выплёўваць што вы паклалі там.
І на самай справе, гэта было часткай Арыгінальны дызайн PHP,
для лепш горш, было гэта змешванне кода і разметкі
мова.
І мы ўбачым, што гэта вельмі хутка кладзецца ў лужыну.
І таму мы будзем рабіць лепш, чым гэта, у канчатковым рахунку, але проста
звярніце ўвагу на лёгкасць, з якой я знаходжуся на самай справе ў стане выканаць некаторую логіку.
>> Але ўсё-ткі трохі ў захапленне.
Давайце адкрыць версію два з Фрош чаты, якія
па-відаць, уяўляе register2.php.
Так гэты файл на самай справе адбываецца глядзець амаль тое ж самае.
Я збіраюся пайсці ў Фрош чаты 2.
Але ў Фрош чаты 2, давайце паглядзім, што адбудзецца.
>> Дэвід, усталюйце перамыкач, як гэта называецца; Мэтьюз, ня капітан.
Рэгістрацыя.
Вы зарэгістраваныя.
Не зусім так.
Ой, пачакайце, мы проста зрабілі што прыклад, ці не так?
Добра, стаяць.
Мы зробім усё тры.
Відавочна што-то пра адбудзецца з Gmail.
Мы дабяромся туды.
>> Так Фрош імгненныя 3 выглядае наступным чынам.
Нічым не адрозніваецца.
Але калі я раблю Дэвід, мужчына, Мэтьюз, і зарэгіструйцеся, гэты трэці і канчатковы варыянт
прэтэнзіі, даволі проста, вам зарэгістравана сапраўды.
Гэта свайго роду неістотныя.
Але я сцвярджаю, з гэтым Трэці і апошні варыянт
Я зараз адноўлены дакладна, што мой сусед па пакоі, і я пабудаваў для Фрош чаты
Праграма гадоў таму.
І гэта было проста.
Там не было ніякай базы дадзеных, няма Excel табліцу.
Але што яшчэ больш важна, няма больш паперы
таму, што мы зрабілі з гэтай праграмай быў на самай справе па электроннай пошце Проктор, які
быў раней атрымлівалі гэтыя рэчы праз формах.
>> І, відаць, мы запраграмаваныя гэта ў такім чынам, што, калі хто-то рэгіструецца,
Лісты рахункаў Джона Гарварда proctor-- або сам у гэтым выпадку,
Джон Harvard-- наступным text-- "Гэты чалавек толькі што зарэгістраваўся."
Імя Давід, капітан пуста; падлогу, мужчына; і інтэрнаты, Мэтьюз.
>> Так што там адбылося?
Ну, файл у пытанні тут па-відаць, register3.php.
І калі я адкрываю гэта, вы ўбачыце, як сіла такога кода
а таксама, шчыра кажучы, адсутнасць бяспекі сістэмы, як электронная пошта.
Я толькі эфектыўна прыкінуўся быць Джон Гарвард наступным чынам.
>> У мяне ёсць адкрыты PHP тэг верх, які проста кажа тут прыходзіць некаторы PHP код.
Тут, унізе, аказваецца, ёсць бібліятэкі ў PHP.
Вы проста не трэба ўключэння файлаў загалоўкаў як шмат.
Вы атрымліваеце больш з кухонная ракавіна, так бы мовіць.
>> Але на гэты раз у радку 4, я хачу спецыяльнай бібліятэкі пад назвай
PHP паштар, які што-то вас можна ўсталяваць бясплатна ў многіх сістэмах.
Тут, унізе, я праверкі прадстаўленне толькі
шляхам праверкі было карыстачу даць мне імя, пол, і інтэрнаты.
І калі так, ісці наперад і асобнік паштовай праграмы.
>> Вы можаце думаць пра гэта як пра радок кода, якая проста вылучае.
Гэта як Таноса, але гэта крыху сэксуальней
у тым, што вы ўжо не проста Таноса і некаторыя агульныя лік.
Вы кажаце, дайце мне адзін з іх, даць мне новую адзін з іх.
>> І калі вы праграмавалі ў Java або C ++ або іншых мовах,
Вы, магчыма, бачылі гэта.
Але за выключэннем гэтага, калі незнаёмыя, гэтая лінія
ставіць у знак даляра пошце спецыяльная структура называецца
Аб'ект, мае убудаваную пошта функцыянальнасць.
І на самай справе, заўважыць і падобны сінтаксіс.
>> Гэта не з'яўляецца паказальнікам, як такія.
PHP проста выкарыстоўвае той жа сінтаксіс.
Гэтая лінія кажа выкарыстання SMTP-- Simple Mail Transfer
Пратакол, які з'яўляецца проста Пратакол, які выкарыстоўваецца для адпраўкі пошты.
Гэта паказаўшы выкарыстання SMTP-сервер Гарварда, які
дзе-то тут, на тэрыторыі кампуса.
>> Гэта кажа, што TCP Нумар порта, каб гаварыць,
і я проста зразумеў, што шляхам звяртаючыся да дапамогі або звярнуцца ў службу падтрымкі.
А потым з-за Гарвардскага выкарыстоўвае некаторыя Сістэма бяспекі на паштовай server--
па меншай меры, для шыфравання трафік паміж вамі і ім,
хоць хто-то можа адправіць it-- Я збіраюся ўключыць пратакол TLS
для падтрымання гэтага бяспечным.
>> Але гэта дзе рэчы атрымаць крыху страшна.
Я магу проста адвольна сказаць, што я jharvard,
і я магу проста адвольна напішыце сабе тут.
І тады я магу пазначыць тэма з гэтай лініі тут.
>> І гэта толькі выглядае непрыгожа, але гэта проста куча счаплення.
Аказваецца PHP мае супер карысны сімвал, як некаторых мовах, аператар кропка,
якія проста літаральна аб'ядноўвае Радок пасля радка пасля радка,
і вы не павінны Таноса або фігуры з агульнай даўжыні радка.
Вы проста робіце гэта.
І на самай справе, таму што я канкатэнацыі ва ўсіх гэтых рэчах з гэтых кропак,
вось чаму ліст, які я адпраўлена паглядзеў, як гэта было.
>> А потым, нарэшце, тут, я пасылаю пошту.
Так што, калі гэта не так, Я проста памру,
якая з'яўляецца функцыяй, якая проста друкуе на экране некаторыя паведамленні пра памылку.
Але гэта, па сутнасці, выкліку функцыі адпраўкі.
У адваротным выпадку, калі ўсё гэта не дапамагае, ён перанакіроўвае мяне сюды.
>> І чаму я бачу, што Я зарэгістраваны на самай справе?
Ну, гэта адбылося прама тут.
Так я пра гэта не для некалькі прычын.
>> Адзін з іх, гэта дакладна, як калі вы будуеце некаторыя вэб-сайт для канчатковага праекта
або для рэальнага свету, гэта як вы пасылаеце электронную пошту напамінкі
для Вашых кліентаў або вашых падпісчыкаў.
Гэта, як вы адправіць нагадванні пароля.
Гэта, як вы адправіць людзей паведамлення што ў іх ёсць новы Facebook
Паведамленне чаканні ці нешта падобнае.
>> Але гэта таксама кажа Справа ў тым, што гэта мог
былі вельмі добра ад Дэвин або хто-небудзь іншы.
І я кажу гэта выгляд з усмешкай, таму што я
зусім упэўнены, што адбываецца праз некаторыя з вашых розумаў у гэтай кропцы.
Але гэта адзін з тых, рабі, як я кажуць, ня як я раблю падобныя рэчы,
таму што гэта трывіяльна падрабіць электронную пошту, як гэта.
Але, як вы, магчыма, бачылі ці чытаць у Crimson,
у апошні час ён таксама даволі трывіяльна для людзей
прасачыць іх назад у нейкі паходжання.
І прашу мяне некаторы час, магчыма, на CS50 абед, як я ўпершыню
пазнаёміліся вельмі блізка амаль у рэд борце многіх гадоў
таму, калі я выявіў, як інтэрнэт працаваў.
Такім чынам, у любы case-- трохі пасля рэд дошка зрабіў.
>> Такім чынам, у любым выпадку, існуе цэлая куча супер глабальныя,
як яны называюцца тут, адзін з якіх мы saw-- знак даляра падкрэслення пост.
Там у аналаг называецца Get, які з'яўляецца, дзе рэчы з URL
заканчваецца збіраецца.
І ёсць цэлая куча іншых, too-- сесія і сервер і печыва.
Мы вернемся да печыва ў іншы раз,
але сесія крута не таму, што прама now-- аж да now--
усё, што мы зрабілі з дапамогай вэб-браўзэра гэта свайго роду асобай без грамадзянства, калі можна так выказацца.
Я магу націсніце вакол, доступ файлы на сэрвэры, то
адбываецца на экране, але то злучэнне зачыняецца.
, 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-- проста цэлая куча стыляў.
Гэта вялікі файл тут, што нехта напісаў,
або ў каго-то пісаў, што з цягам часу вызначае колеру і фарматаванне
і яшчэ шмат чаго, так што я магу выгляд пазычаць іх сінтаксіс
і не павінны высветліць, як выкласці сваю форму.
Гэта таксама мінімізаваныя так што кампутар можа
зразумець яго, але не абавязкова чалавек.
Дык вось, чаму стылізацыя там змянілася.
>> Але давайце цяпер рабіць лепш з пункту гледжання дызайну,
таму што калі мы застанемся ўніз гэтая дарога занадта доўга,
наш код збіраецца заблытацца і брудней.
Так давайце засяродзімся на гэтых прыкладах тут.
Апошні на сённяшні дзень.
>> Дык вось гэта супер проста Версія 1.0 сайце CS50 ст.
Яна мае толькі спасылкі на лекцыі і план,
і ён выкарыстоўвае гэта неўпарадкаваных спіс tag-- тэг UL, які мы выкарыстоўвалі ў мінулы раз.
І калі на самай справе, калі я адкрыць 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.
Там няма фактычнага логіку праграмавання тут.
>> І астатнія файлы даволі шмат як нецікава.
Гэта проста жорстка тыдні адзін тут, каб тыдзень адзін м і тыдня адзін ж,
на панядзелак і сераду.
І потым, калі я адкрываю нулявы тыдні заўважыце, што ён амаль ідэнтычны.
>> І гэта свайго роду ключавой вынас.
Звярніце ўвагу, наколькі залішняй гэта.
Гэтыя файлы амаль не зменіць, і ўсё ж я выцягнуў адну з гэтых копій / працоўных месцаў пасты
дзе я ўзяў адзін file-- меркавана у тыдзень zero-- скапіявалі іх
калі тыдзень адзін прыйшоў, і адладжаны некалькі значэнняў.
Мы павінны, верагодна, быць у стане зрабіць лепш, чым гэта.
>> Так што давайце вернемся да MVC і ісці ў версіі аднаго.
І звярніце ўвагу, у мяне ёсць некалькі файлаў, таму што
быў агульным для ўсіх гэтых файлаў толькі Момант ago-- калі я вярнуся ў версіі 0,
давайце вернемся ў індэксе, і проста postulate--
як толькі я пазбавіцца ад comments-- якая частка гэтай старонцы
Як мяркуецца, у кожным з маіх файлаў?
Проста патэлефануеце яго.
Якія радкі дублююцца верагодна, ва ўсіх гэтых старонак?
Так?
>> СТУДЕНТ: [неразборліва].
>> Дэвід Дж Малання: з 1 па 9.
Так, абсалютна.
Ад 1 да 9, за выключэннем, магчыма 8 трохі змяняецца, таму што CS50
становіцца лекцыі ці нулявы тыдзень ці нешта.
Але практычна ідэнтычныя.
Так што ўсе гэтыя рэчы проста выгляд скапіяваны і ўстаўлены.
І ёсць пара іншыя лініі я магу думаць
таго, што, верагодна, ідэнтычныя па ўсіх файлаў.
>> СТУДЕНТ: 12 і 13.
Дэвід Дж Малання: Так.
Вядома, 12, 13, і 14, верагодна, толькі таму, што ў цікавым матэрыяле
што адбываецца на лініі 11 і 10, такім чынам, здавалася б.
Такім чынам, давайце зірнем на версіі 1, якая спрабуе змяніць да лепшага гэта.
У версіі 1 гэтага MVC example-- мы будзем растлумачыць, што MVC сродкі ў moment--
калі я іду ў індэксе, гэта збольшага выглядае цяпер крыху заблытаным.
Гэта не так проста, як раней.
>> Але як толькі вы пачынаеце Уважліва прачытайце яго, гэта
даволі проста, што ён робіць.
Мабыць лініі 1 і лінія 8 замянілі
усе рэчы вы проста identified-- хоць проста для добрай мерай,
Я пакінуў ULS ёсць на ўсялякі выпадак якой- дзён ня ёсць спіс рэчаў.
І так трэба, гэта накшталт як фунт ўключаюць у С. копій і паст
змесціва эфектыўна прама тут у гэтым файле.
>> Такім чынам, у 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 і Я ўдакладніў, што назва маёй старонцы
ня CS50.
Ён адкрыты кранштэйны абвесткі сцэнар прывітанне свет, блізка адзінарныя двукоссі,
блізка дужка, кропка з коскі, адкрытая дужка, слэш сцэнар.
>> Сцэнар, як мы будзем ў рэшце рэшт убачыць, з'яўляецца тэг
што вы можаце выкарыстоўваць, каб выкарыстоўваць іншага Мова праграмавання называецца
JavaScript ўнутры вэб-старонкі.
А цяпер звярніце ўвагу на логіку тут.
Вось ключ называецца тытул.
Вось гэта вар'яты доўгае значэнне цяпер.
>> Але калі я іду ў памочнікі страница- ці, хутчэй, на старонцы загаловак,
Я тэлефаную гэтай функцыі на гэты тытул першай.
Так што, калі я цяпер перазагрузіць гэтую старонку, я пераканацца ў гэтым, які выглядае смешна,
але гэта бяспечна.
Гэта проста выглядае недарэчна.
>> Але выкажам здагадку, што замест Я забыўся гэта.
І запомніце мае словы, выдатнае ад нуля лік з забудзешся гэта зрабіць
і вы атрымаеце некаторы працавітыя студэнт або іншым прыдумляць
Вам на CS50 кірмашы або ананімна ноччу калупацца на сваім сайце
і, па сутнасці ўкаранення кода без ведама да вас на вашым сайце
як-то.
>> Таму што, калі я проста пляваць з назвы тут і назвы
there-- добра, калі назва літаральна Падобна на тое, гэта і PHP
як мова, які можа пляваць з іншага тэксту моў,
гэта літаральна збіраецца замяніць гэты тэг з,
Вядома, тое, што я паклаў у іншым месцы.
>> Так што, калі я зараз ідуць сюды і перазагрузіце пасля адмяняючы тыя механізмы бяспекі,
Цяпер у мяне ёсць прывітанне свет тут.
Зараз гэта яшчэ не ўсё, што вялікі з справа, але вы маглі б зрабіць што-то
трохі злей тут, як ёсць
іншы tags-- як мы ўбачым, як толькі мы трацім Чым больш часу ў JavaScript-- як месцы
кропка HREF атрымлівае, цытата, канец цытаты, HTTP business.com, але процілегла, што
з другога дзень.
І цяпер вы можаце выклікаць павуціну старонка на самай справе ісці адразу
на гэтай вэб-старонцы тут.
>> І на самай справе, я не хачу нават пайсці на business.com
таму што я не хачу, ведаць, што гэта такое.
Але гэта таксама выкліча код які будзе ўведзены ў дадзенай старонцы.
Так што гэта толькі сказаць, што нават пры тым, што мы ўяўляем супер рана на некаторых
з гэтых больш складаных структур, гэта ўсё да канца пераканаўшыся
што ваш код не скарыстацца.
>> Так што цяпер трэцяя версія тут.
Гэта становіцца трохі больш незвычайным.
Я сапраўды не like-- анальны бок мяне
станавілася крыху раздражняе Справа ў тым, што я функцыя называецца
RenderHeader і RenderFooter што былі амаль ідэнтычныя.
Так што мне прыйшло ў галаву, чаму не Я параметрызацыі гэтых функцый
у толькі адным званай аказаць, ўжо займае другі аргумент
як імя матрыцы, канчатковы у render-- альбо калантытула?
І тады, магчыма, калі я хачу прайсці ў некаторых пар ключ-значэнне
як я магу зрабіць для назвы для загаловак, але не для ніжняга калантытула,
Я мог бы зрабіць гэта.
>> І вось цяпер, калі я іду ў helpers.php, гэта крыху больш складана.
І я буду махаць рукамі на Дэталі, але гэта ўсяго толькі адна функцыя.
Так што гэта крок да лепшага дызайну.
>> Мы можам зрабіць яшчэ адзін крок наперад.
Калі я іду ў мой чацвёрты версія гэтага, звярніце ўвагу зараз
што я раблю нешта яшчэ выгляд загадкавы.
І я ведаю, што гэта шмат, каб паглынуць адразу,
але мы толькі збольшага ачысткі рэчы.
Цяпер я стаўлю мае памочнікі файл у тэчку пад назвай
includes-- проста адвольнае назваць, дзе я хачу, каб пакласці рэчы
што я хачу, каб ўключаць: а затым Астатнія гэта тое ж самае.
>> Але калі я гляджу цяпер у Gedit, Звярніце ўвагу, што я пазбавіўся
з усіх гэтых іншых файлаў і ў мяне ёсць пераехаў іх, напрыклад, у тут.
А потым у шаблонах, У мяне гэта таксама тут.
І так гэта ўсё цяпер да кроку выкарыстання значна лепш шаблон праектавання.
І мы вельмі хутка збіраецца адысці
ад функцыянальнасці па змаўчанні ў PHP, які мы пачалі тут з,
дзе вы проста змешваць PHP, і ваш HTML, і ваш CSS,
і вы проста выплюнуць і вы ідзяце па нагоды вашага шляху.
Гэта не збіраецца быць вельмі суправаджэнні.
Гэтак жа, як у C, як мы пачалі выкарыстоўваць некалькі файлаў і некалькі функцый
і факторынгавыя рэчы гэта.
Мы зробім тое ж самае тут.
І на самай справе, у пяты і апошні версія тут, я зрабіў адну рэч.
Вы нават можаце выкарыстоўваць дзве кропкі, якія, зноў, толькі на бацькоўскі каталог.
Каб быць яшчэ больш сьвядомая бяспеку, таму што, калі я гляджу на праслухоўванне
тут пяты і канчатковы варыянт, паведамлення што ў мяне ёсць адзін каталог тут пад назвай
грамадскасці, а затым на той жа ўзровень, так бы мовіць,
У мяне ўключае і шаблонаў а затым, што тэкставы файл ридми.
>> І прычына я структураваная гэта падабаецца this-- і так шмат вэб
Гаспадары, асабліва тыя, $ 5 месяц тыя або $ 10 у месяц тыя,
калі вы калі-небудзь меў адзін з іх services-- тое, што многія з іх робяць
гэта яны проста чакаюць, што вы скінуць ўсе вашыя файлы ў адну дырэкторыю,
як мы гэта рабілі ўжо з гэта самы першы прыклад.
>> Але як толькі вы пачынаеце будаваць больш складаныя сайты, якія проста захоўваюць
Дадзеныя вы клапоціцеся аб і файлы, якія вы хвалюе, на самай справе арганізацыі рэчаў
правільна і з большай бяспекі свядомасць на ўвазе можа
мы пачынаем абараняць супраць усіх сяброў
што ў вас ёсць у доме або за межамі гэтага класа, якія,
як толькі вы пачынаеце рабіць праграмы самастойна ў Інтэрнэце,
збіраюцца пачаць збор на вас і на іх.
>> І так мы будзем глядзець у канчатковым рахунку, у гэтай канструкцыі.
Гэта проста карцінка што адлюстроўвае наступнае.
Мы збіраемся паставіць усе нашы праграмную логіку ў адным або больш файлаў,
і мы збіраемся проста пачаць называючы гэтыя кантралёры.
Гэта дзе мазгі нашы сайты на самай справе з'яўляюцца.
Тады мы ідзем да маюць выгляд, і выгляд
так проста, як проста асобны files-- званыя шаблоны, часта.
Яны проста павінны Эстэтыка маёй старонцы,
тое, што я хачу старонку, каб паглядзець like-- колеру і кампаноўкі
і пазіцыі ўсе зменныя.
>> А потым больш цікавым што мы ў рэшце рэшт дабрацца да
з'яўляецца мадэль, якая будзе проста слова мы аплявуху ад іншых тэхналогій
што мы прыносім ў карціна, як рэальных баз дадзеных,
так што, калі вы хочаце для захавання інфармацыі,
Вы не проста адправіць па электроннай пошце на ваш суправаджалы ці для сябе,
Вы на самой справе захоўваць яго ў базе дадзеных выкарыстоўваючы іншую мову, вядомы як SQL.
І таму мы пакінем тут сёння і падабраць з гэтым у сераду
і ўвесці баз затым.
>> [Музыка, якая іграе]