[Powered by Google Translate] [Тыдзень 8] [David J малая] [Harvard University] [Гэта CS50.] [CS50.TV] Сардэчна запрашаем назад. Гэта CS50, і гэта з'яўляецца пачаткам 8-й тыдні. Пару магчымасці на гэтым тыдні, сярод іх гэты размова тут, у якую ежу будуць абслугоўвацца. Для атрымання дадатковай інфармацыі праверыць слайды, якія знаходзяцца ў сеткі. А таксама яшчэ адна падзея гэтага тыдня нашы ўласныя Томас Carriero. Ён адзін з былы кіраўнік CS50 ў навучанні дзяцей, якія цяпер знаходзіцца на Dropbox, Ён хлопец, які злучыў нас з вамі ведаем, што, так што калі вы хочаце больш, што галава іх размова гэтым днём для Dropbox і многае іншае. CS50 абед у гэтую пятніцу. У далучыцца да нас, калі вы зможаце, 1:15, як звычайна, Агонь і лёд. І зараз мы пагрузіцца ў тое, што называецца семінары. Нашы CS50 семінары, нагадаем, гэтыя факультатыўныя заняткі на чале з вучэннем стыпендыятаў і вядома памочнікі і сябры, вядома, Людзі з групы ў кампусе называюць ABCD, якая ўяўляе сабой групу технофилы на тэрыторыі кампуса, а таксама група пад назвай ЖКГ, Грамадства Гарвардскага кампутар, студэнтаў, якія аналагічным зацікаўлены ў вылічэннях. Рэестр ў гэтым годзе семінараў ўключае ў сябе семінары па Android і IOS і JavaScript і PHP, Unix, Vim, і больш, так разумею, што гэтыя семінары ідуць уверх. Калі вы хочаце, каб RSVP для любога з іх адправіцца ў URL, што там. Мы будзем затым размясціць на вэб-сайце курсу часы і месцы, як толькі яны будуць завершаны. Але ведаю, ці варта ёсць 5 годзе да семінары даступныя ў Інтэрнэце, многія з якіх усё яшчэ вельмі шмат бягучай пункту гледжання тэхналогіі вы маглі б хачу гуляць з для канчатковага праекта, так што галава там на працягу некаторага даступныя відэа іх. CSS, тыя з вас, хто знаёмы з CSS ўжо, што гэта такое ў двух словах? Што такое CSS? Гэта каскадныя табліцы стыляў, і што гэта значыць? Што гэта зробіць для нас, CSS? Добра, давайце сагрэцца прасцей адзін, HTML, мова разметкі гіпертэксту. Што гэта для нас зрабіць? Любы наогул? Гэта становіцца вельмі нязручна задаваць гэтыя пытанні. HTML, мова разметкі гіпертэксту. Да? Няма? [Неразборліва адказ студэнта] Добра, добра, гэта дазваляе пазначаць тэкст для адлюстравання ў вэб-браўзэры. Гэта не мова праграмавання. Гэта сапраўды мова разметкі, які азначае, што яна загадвае браўзэру, як адлюстроўваць Інфармацыя, такім чынам, найпростыя ўвасабленне гэтага, як мы бачылі гэта тое, супер проста, як boldfacing, якая адкрывае дужкі б замкнёны кранштэйны кажа зрабіць гэты тэкст тоўстым, і гэта на самай справе толькі адзін з многіх спосабаў , У якім мы можам зрабіць гэта, і сапраўды, у гэтыя дні лепш падыход для стылізацыі вашых вэб-старонак, робячы рэчы, тоўстым шрыфтам і курсівам і па цэнтру і абгрунтаваным і да таго падобнае, не зроблена з дапамогай HTML-тэгаў толькі а з тэхнікай называюць CSS, каскадныя табліцы стыляў. Гэта мова сам па сабе. Гэта таксама не з'яўляецца мовай праграмавання, але- ўсім, гэта Дэн, які трымае далучыліся да нас сёння. Некаторыя тэхнічныя цяжкасці. Не праблема. CSS дазваляе стылізаваць старонку , Усталяваўшы, што называецца ўласцівасцямі, так што давайце паглядзім на гэтую шляхам некаторыя асноўныя прыклады. Адпусціце мяне ў прыбор сёння. У мяне ёсць крыніца 8 панядзелак каталог тут, і я збіраюся ісці ў каталог CSS, дзе мы маем цэлы букет файлаў чакае нас прама тут, і ў гэтай папцы ў нас ёсць, напрыклад, search0.html ў мінулы раз. Цяпер успамінаю з search0 мы выйшлі на гэтую нататку ад роду ажыццяўленні Google або сапраўды толькі пярэдні канец для яго тыдзень таму, і заўважыў, што ў нас было некалькі новых тэгаў няма. У нас быў h1 для вялікай, тоўсты загаловак, формы, якія дазволілі нам на самой справе ёсць HTML форма для ўводу дадзеных карыстачом. Дзеянні, які быў сэнс дзеянняў атрыбутам на HTML тэга формы? У чым быў сэнс гэтага дзеяння? Я проста зраблю гэта сёння. Дзеянне з'яўляецца месцам, дзе форма будзе прадстаўлена. Справа ў тым, што кажа, дзеянне = "google.com / пошук" азначае, што калі карыстач націсне кнопку або эквівалент ўсе палі формы запоўненыя яны будуць адпраўленыя не на нашым серверы або наш прыбор, а да гэтага канкрэтнага URL у Google. І метад, які ён збіраецца выкарыстоўваць называюць атрымаць, і атрымаць, на дадзены момант, гэта проста тэхніка для перадачы інфармацыі па вэб-серверу шляхам URL, так што давайце кінем хуткі погляд назад, як гэта працуе. Звярніце ўвагу, што ёсць уваход, чыё імя д , Тып якога з'яўляецца тэкст, а затым другі ўваход тыпу ўяўляюць , Значэнне якога CS50 пошук, і сапраўды, калі мы адкрыем гэты файл тут, search0.html, гэта супер простай форме, і калі я шукаю нешта накшталт кампутарнай навукі а затым націсніце ўвод або націсніце на CS50 пошук заўважыць, што тое, што адбываецца за межамі дабрацца да Google Я адмыслова скончылі ў гэтым URL у верхняй частцы, google.com / пошук? Q = кампутар + навука, і інфарматыцы, відавочна, што я набраў цалі + Проста азначае, што там прабел быў, і гэта зроблена ў браўзэры, проста каб пераканацца, што няма ніякіх блытаніна і прабелы ў фактычных URL. І тады д, вядома, імя параметру. Мы не бачылі, як мы, праграміст, можа на самай справе доступ Q пакуль няма. Можна выказаць здагадку, што Google ведае, што рабіць з гэтым тут, але мы вернемся туды ў свой час сёння. Але дазвольце мне зірнуць, а не на search1.html, , Якая выглядае крыху па-іншаму, таму што я вырашыў, што гэтая форма тут было трохі кульгае. Я маю на ўвазе, гэта ў левым верхнім куце. Там на самай справе ніякай эстэтыкі, і таму я хачу, каб стылізаваць гэтую трохі больш, як Google, чыя хатняя старонка, нагадаем, Нават калі вы не можаце наведаць яго, што часта, падобна, пра гэта сёння на Хэлоўін. Калі мы замест гэтага адчыняюць версіі 1 гэтага файла, пошук 1.html, я яго цэнтру. Тым не менш даволі выродлівыя, але па крайняй меры цяпер я пачаў кантраляваць эстэтыку гэтай старонцы, не толькі разметка іх. Давайце зірнем на пошук 1, і там сапраўды толькі адно адрозненне тут, , Якія могуць выскачыць на цябе, а можа і няма, але тое, што адна радок або ўрывак розніца? Там у гэты атрыбут стылю, так што атрымліваецца, што ў HTML большасць элементаў, большасць тэгаў можа мець атрыбут стылю на іх, і ўнутры гэтага стылю атрыбуту ў двукоссях, і што радок у двукоссях з'яўляецца CSS. Вы можаце паставіць каскадных табліц стыляў там , Паказаўшы яго ў якасці імя ўласцівасці двукроп'я варта значэнне. Гэта свайго роду няшчасных дызайнерскае рашэнне некалькі гадоў назад , Што CSS гэта мова сам па сабе, але сінтаксічна гэта вельмі адрозніваецца ад HTML. У гэтым выпадку, мы бачым, што ўнутры майго вэб-старонкі, якія напісаны на HTML, У мяне ёсць CSS ўнутры гэтых двукоссяў, і Канвенцыі аб CSS з'яўляецца тое, што ў вас ёсць тое, што называецца ўласцівасць варта, зноў жа, тоўстай кішкі, пасля чаго значэнне гэтага ўласцівасці, так што няма знака роўнасці. Там няма дадатковых двукоссі. Гэта проста, гэта падзеленых двукроп'ем пару ключоў значэнне, і тэкставая радок робіць менавіта тое, што ён кажа. Гэта выраўноўвае тэкст у цела старонкі, якія сапраўды кішкі старонкі, у цэнтры. Добра, канчатковым вынікам тое, каб быць ясна, заключаецца ў наступным. Не ўсё, што сэксуальней, але па крайняй меры гэта па цэнтры і трохі больш падобна на рэальную Google. Але што, калі я замест гэтага адчыняюць версія 2 гэтага і паказаць тут новы тэг наогул? Цяпер у галаве маёй старонцы, якая раней была толькі які тэг Ва ўсіх папярэдніх прыкладах? Гэта проста было гэта, назва. Хвіліну таму кіраўнік тэгі выглядала наступным чынам. Цяпер замест яго ёсць стыль ўнутры тэга гэта, і гэта таксама, я прашу прабачэння, сінтаксічна выглядае вельмі адрозніваецца ад HTML, але вы абвыкнеце да яго, у выніку чаго ўнутры стылю тэга Цяпер я магу вынесці за дужкі тое, што было хвіліну назад атрыбутаў, атрыбут стылю, і я магу паставіць яго на самы верх маёй старонцы. Чаму? Ну, гэта крок да ачыстцы рэчаў, гэтак жа, як у пісьмовай форме C код мы будзем часам пісаць функцыі для выключэння агульнай функцыянальнасці. Гэта проста трохі чысцей, каб пачаць факторынгу з такіх рэчах, як эстэтыка у адным месцы замест таго, каб усё гэта перасыпаць ўсёй вашай HTML. Гэта таксама робіць тое, што ён кажа, хоць ёсць трохі новага сінтаксісу. Гэта вось селектар, і цела проста азначае, абярыце элемент цела і прымяніць наступныя ўласцівасці да яго. Ну, уласнасць сапраўды гэтак жа. На ўсялякі выпадак я дадаў кропку з коскай у рэшце рэшт, якая мае тэндэнцыю быць канвенцыяй, і я абгорнуты ўсю гэтую ўласнасць у фігурныя дужкі, таму што я сапраўды можа мець розныя рэчы. Я мог бы на самай справе сказаць нешта накшталт колеру: сіні; Цяпер гэта таксама не збіраецца быць на крок у бок усё, што заўгодна прыгажэй, але калі б я цяпер вярнуцца да версіі 2 я па крайняй меры цяпер зрабілі цела маё старонкі тэксту ўсе сінія. Кнопка застаецца тым жа, таму што гэта ўваход. Гэта не чысты тэкст. Але ўсё астатняе, што тэкст, як CS50 пошук наверсе, на самай справе сінія. Зноў жа, усё, што мы зрабілі зараз, гэта выдаліць з арганізма тэгаў, заўважце, атрыбут стылю, і мы ўлічвацца гэта тут. Гэта не вялікі крок наперад, але калі мы возьмем гэта яшчэ адзін крок наперад заўважыць, што мы можам зрабіць у гэтай трэцяй версіі тут. У search3.html вэб-старонкі амаль ідэнтычныя акрамя таго, што новы тэг зараз? Link, так што гэта не вельмі трапна назваў таму што вы не звязваючы ў сэнсе гіперспасылка. Хутчэй за ўсё, вы робіце нешта накшталт эквівалента # ўключыць у C прычым спасылка тэга з атрыбутам HREF і отн атрыбуту кажа, ісці наперад і капіяваць ўставіць змесціва файла з імем search3.css прама тут, па сутнасці. Гэта не зусім тое, што, але гэта дух яго. Ён кажа, што ісці з адкрытым файлам, search3.css, і ставіцца да яго, як быццам карыстальнік набраў яго прама тут, у чале старонку гэтак жа, як я зрабіў у папярэднім прыкладзе. Search3.css, між тым, даволі просты. Гэта сапраўды проста ўтрымлівае менавіта тое, што было хвіліну назад у стылі тэга, але я улічаны гэта тут у свой уласны файл. Нават калі мы не патрацілі шмат часу на ўсё гэта ў HTML або вэб-праграмаванні проста інтуітыўна тое, што матывацыя, мабыць, выносячы гэта невялікі фрагмент нават CSS у асобны файл , А затым ўключыць яго з гэтай спасылцы тэга тут? [Неразборліва адказ студэнта] Добра, гэта лягчэй чытаць у тым сэнсе, што ў вас ёсць CSS у файле CSS. У вас ёсць HTML у HTML файл, так што гэта больш чытаным ў гэтым сэнсе. Што яшчэ можа быць пераканаўчым? Так. [Неразборліва адказ студэнта] Так, так што вы можаце ўключыць яго шмат разоў, так што зараз мы робім гэта Асноўныя прыклады з асобнымі файламі, але выкажам здагадку, што вы на самай справе робіць рэальны сайт, як вы будзеце на PSET 7 або ваш канчатковы праект, магчыма, і вы хочаце мець некалькі вэб-старонак, як, безумоўна, сустракаецца на фактычныя World Wide Web, і было бы выгляд кульгавага мець, каб скапіяваць і ўставіць той жа сіні колер і той жа тэкст выраўнаваны цэнтрам у кожнай з гэтых старонак. Хутчэй, гэта мае сэнс вынесці за дужкі, гэтак жа, як мы зрабілі ў C с. файл г, паклаў яго ў адным месцы, У гэтым выпадку search3.css, а затым дазволіць любому файла У ваш сайт на самой справе ўключыць гэты файл праз гэты тэг тут, у радку 16. Як гэта звычайна і бывае, мы пачалі з версіі 0, што від работ але не абавязкова лепшыя, і з кожным крокам, Пошук 1, пошук 2, і зараз пошук 3 мы ўзялі гэтыя крокі дзіцяці на праекты, якія з'яўляюцца крыху больш чыстым і больш падрыхтоўчых Для больш складаных старонак, якія мы маглі б зрабіць у будучыні. Дазвольце мне адкрыць адзін апошні прыклад тут, каб паказаць яшчэ больш стылізаваным старонкі, але спачатку давайце паглядзім на HTML. Гэта search4.html, і заўважыў, што структурна гэта амаль тое ж самае за выключэннем ўвядзення новага тэга Div. Div тэг, які ўводзіць дзяленне на гэтай старонцы. Вы можаце думаць пра гэта як пра нябачным прамавугольніку. Гэта свайго роду стварае паласу вобласць на вэб-старонцы , Які можна стылізаваць ўсё адразу. Што я зрабіў тут заключаецца ў наступным. Усярэдзіне майго цела тэга, які быў там увесь час, Я кажу, што стварае падраздзяленне старонцы тут па лініях 45 да 47, і гэта азначае, па сутнасці, дайце мне нябачны прастакутнік ў верхняй частцы старонкі. Тады дайце мне другую прастакутнік, хоць і нябачным, ніжэй, і ідэнтыфікаваць яго па імя змесціва, а затым, нарэшце, дай мне трэці раздзел старонкі ў ніжняй частцы называецца ID. Мы ўбачым, чаму я зрабіў гэта праз хвіліну, але канцэптуальна ў мяне ёсць загаловак дывізіі. У мяне ёсць змест падраздзялення, і ў мяне ёсць склеп падзел старонкі хоць гэта толькі ў разметцы. Карыстальнік не убачыць 3 прамавугольніка, але накшталт структурна там, за кулісамі яны на самай справе. Зараз, хто клапоціцца? Чаму на самой справе гэта зрабіць? Усё астатняе на старонцы так жа, як мы бачылі раней. Вось мая форма. Вось мой унёсак, мой ўваход, радкі і гэтак далей. Вось малюнак, хоць, такім чынам, мы будзем бачыць, куды гэта прыйшло ад усяго хвіліну. Вось склеп, які з'яўляецца новай, толькі таму, што я хацеў бы прадставіць некалькі утрыманнем тут. Калі мы прагортку ўверх заўважыць, што ID гэтай спраў з'яўляецца загаловак. ID гэтай спраў з'яўляецца ўтрыманне, і ідэнтыфікатар гэта адзін калантытул. І, як вынікае з назвы, калі ў вас ёсць ID атрыбуту у HTML, па вызначэнні, яно павінна адназначна ідэнтыфікаваць адзін з элементаў, адзін з тэгаў на старонцы. Цяжар цалкам на вас памятаць, што ў вас ёсць загаловак ID ўжо. У вас ёсць склеп. У Вас ёсць змест ID ўжо. Кампутар не збіраюся высветліць, што даступна ID для вас, так што вы можаце выпадкова даць 2 ID тэгаў загалоўкаў, і гэта было б проста няправільна. Вы павінны мець на ўвазе, што вы стварылі, але як толькі вы гэта зрабілі, звярніце ўвагу, што мы можам зрабіць тут. Цяпер я магу паказаць у маім стылі тэгаў у верхнім або, што эквівалентна, у маім файле CSS, калі б я да гэтага часу выкарыстоўваюць гэтую версію, Я магу сказаць # загалоўка, і што гэта азначае, што ўсё, што тэг У гэтым вэб-старонка мае ідэнтыфікатар загалоўка і #, проста чалавечыя канвенцыі, уяўляе ID. Рэзкае знак або знак фунта ўяўляе ID. Загаловак гэтае імя, якое я даў яму. Гэта азначае, што ўжываць гэта ўласцівасць CSS на любой тэг на гэтай старонцы, носіць ідэнтыфікатар загалоўка. Тое ж тут справа. Ужыць гэтую ўласнасць, якая бывае тое ж самае, любы элемент з ідэнтыфікатарам змесціва, а затым тут заўважыце, што я стаў крыху аматар з калантытул. Любы элемент з ідэнтыфікатарам склеп, з якога не можа быць толькі адзін, па вызначэнні, пайсці далей і зрабіць свой шрыфт меншага памеру, яе вага шрыфта смелы, яго маржа 20 пікселяў. Што гэта значыць? Гэта проста маржа па верхняй, ніжняй і левай і правай. Гэта азначае, дайце мне 20-піксель нябачным краем вакол яго проста націснуць ўсё астатняе ад яго трохі, як вы маглі б зрабіць у Word, Microsoft Word або старонкі або да таго падобнае. І тады тэкст па цэнтру. Давайце паглядзім на канчатковы вынік, а потым мы вернемся да аднаго пакінутага фрагмента CSS там. Гэта 4-й версіі, наш апошні для пошуку прыкладаў, і гэта значна, значна сэксуальней. Цяпер, шчыра кажучы, я проста ў пошукавай сістэме Google "Google шрыфта лагатыпа генератар". І гэта дазволіла мне стварыць GIF, фармат малюнка, якое выглядае як, што там. На самай справе, вы можаце зрабіць гэта занадта. У нас ёсць "Google шрыфты, лагатып генератар". Давайце паглядзім, калі мы можам гэта зрабіць. Добра, я думаю, што гэта сайт які я выкарыстаў. Мы можам сказаць, EC 10, напрыклад, і зрабіць іх самастойна. Вы можаце гуляць з гэтым на працягу ўсяго дня, а затым націсніце правай кнопкай мышы , А затым загрузіць фактычнага GIF, які гэта ўсё, што я зрабіў. І сапраўды, вось чаму ў маім HTML, нагадаем, сюды У мяне быў вобраз тэг, які мы бачылі на мінулым тыдні коратка крыніцай якіх з'яўляецца logo.gif. І тое, што зноў была матывацыя за тое, што гэта альт атрыбут, гэта альтэрнатыўны атрыбут? Так. [Неразборліва адказ студэнта] Добра, такім чынам, 2 прычынах сапраўды, калі браўзэр не можа пацягнуць малюнак таму што ў вас павольнае падлучэнне да сеткі або малюнкаў пашкоджаны ці нешта падобнае, па меншай меры, чалавек можа бачыць "CS50 пошук" , А затым і даступнасці прычынах. Калі ў вас ёсць карыстальнік, які з'яўляецца сляпым і выкарыстоўваецца для чытання з экрана і таму, відавочна, не можа бачыць вобразы, якія яны могуць па крайняй меры пачуць тэкст, калі іх кампутар кажа ім. Увогуле, гэта лепшая практыка, калі гаворка заходзіць аб даступнасці старонак так што нават карыстальнікі ў гэтай сітуацыі можа пачуць ці ўбачыць, так бы мовіць, што гэта такое, што гэта на вашай старонцы. Там яшчэ адна рэч, якую я зрабіў тут які трохі цікавай, і мы будзем бачыць больш пра гэта ў задачу ўсталяваныя 7 праз адзін з шорт на чале з адным з вучэнні таварышаў. Але # зместу ставіцца да тэгу ID якога з'яўляецца ўтрыманне, але тады ёсць прабел, і затым ёсць слова ўваход. Ну, што цікавага CSS з'яўляецца тое, што вы можаце гл. тэгаў ў старонку роду іерархічна, і тое, што гэты фрагмент сродкамі CSS, гэта знайсці тэг ID якога з'яўляецца ўтрыманне, а затым прымяніць наступныя ўласцівасці для ўсіх ўваходных тэгаў, якія з'яўляюцца нашчадкамі зместу, , Што ў тым, што з водступам ўнутры яго. Водступы, зноў жа, важна толькі да кампутара, а не да чалавека, але па дамове мы водступ рэчы, як мы паглыбіцца ў старонкі, такім чынам, гэта азначае, прымяняюцца край на 5 пікселяў любога элемента ўводу што недзе ўнутры ці ўкладзеныя ў  элемент з ідэнтыфікатарам ўтрымання. Хто што звярнуцца? Ну, там на самай справе менавіта гэтыя 2 хлопца тут. Звярніце ўвагу, што ўнутры віду ёсць 2 ўваходу, як там было на ўсе гэтыя прыклады. Але звярніце ўвагу, што гэтыя 2 ўваходу здарыцца быць укладзеныя, хоць і трохі глыбока, пару слаёў водступы, ўнутры тэга з ідэнтыфікатарам ўтрымання. Што гэта значыць? Калі мы ідзем у браўзэр тут можна ўбачыць вельмі трохі- Дазвольце мне павялічыць, то ёсць трохі водступаў паміж кнопкай і паміж тэкставым полем. Дазвольце мне часова адключыць гэтую функцыю. Адпусці мяне да майго CSS, і дазвольце мне ісці наперад і толькі змяніць гэтую маржу ад 5 да 0 пікселяў пікселяў. Дазвольце мне ісці наперад, то і захавайце файл, вярнуцца да пошукавай сістэме і перазагрузіць, і глядзець на сярэдзіне старонкі. Усё, што было сціснутыя разам, і, калі я ўпершыню узбітымі гэтым прыкладзе да Я думаў, што выглядала недарэчна з тэкставага поля, а затым кнопку непасрэдна пад ім. Я хацеў, каб дапоўніць яго трохі, так што я прадставіў поля. Тое, што мы не будзем рабіць у лекцыі праходзяць праз некалькі дзесяткаў CSS ўласцівасці, якія існуюць, таму што, зноў жа, ёсць такія рэчы, як памер шрыфта, шрыфта, край, выраўноўванне тэксту, і некалькі дзясяткаў іншых, і мы будзем называць вас праблемы ўстаноўлена 7 розных падручнікі онлайн і спасылкі, якія дазваляюць падабраць гэтыя рэчы. Але тое, што сапраўды важна ў канцы дня , Каб зразумець, як гэтыя рэчы не прымяняюцца. Зноў жа, калі мы маем у стылі тэгі якой можа пайсці селектары, накшталт ідэнтыфікатараў, якія вызначаюць да якога вы хочаце ўжыць гэтыя ўласцівасці, а затым вы кладзеце ўласцівасці як ключавыя пары значэнняў падзеленых двукроп'ем, а затым скончыў з коскі, ці вы можаце капіяваць усё гэта, і пакласці яго ў асобны файл CSS сама па сабе. Добра, любыя пытанні па канцэпцыі або вялікую карціну CSS? Вы будзеце зноў бачыць больш яго ў PSET 7, але мы будзем трымаць гэта наогул даволі проста. Няма? Добра. Гэта час для рэальнага мовы праграмавання, і мы вернемся да трохі CSS у выглядзе прыкладу. PHP на самай справе дзіўна даступным мовай у тым, што гэта сінтаксічна амаль эквівалентна C. Іншымі словамі, калі вы ведаеце C, вы ведаеце, па большай частцы PHP, па крайняй меры, сінтаксічна, хоць ёсць некаторыя новыя функцыі і некаторыя новыя паняцці, якія мы павінны будзем паглядзець. Але па большай частцы, зараз, калі мы пераходзім ад З да PHP Большасць новых рэчаў сапраўды па вялікім рахунку, як вы выкарыстоўваеце мова для праграм на вэб-у адрозненне ад у камандным радку ці ў радку міргае, як мы рабілі да гэтага часу. Для параўнання, асабліва з PSET 7 і канчатковы праект наперад, у скарыстацца гэтым URL тут, калі вы хочаце, каб чытаць на фармальнасці PHP. Гэта на самай справе хацеў бясплатны онлайн падручнік эфектыўна, і вы таксама выявіце, што тое, што сапраўды добра пра PHP з'яўляецца тое, што існуюць сотні функцый, якія прыходзяць з ёй, , Тады як у C вы не абавязкова мець доступ да больш функцый, чым было ў матэматычную бібліятэку, CS50 бібліятэкі. У PHP і многія сучасныя мовы, Python і Ruby, сярод іх, Вы атрымліваеце доступ да так шмат больш функцый, а значыць, вы атрымаеце пісаць нашмат менш кода, таму што вы можаце стаяць на плечы іншых людзей , Якія ўжо напісаныя некаторыя рэчы для вас. Давайце кароткі агляд сінтаксісу PHP, а затым напісаць некалькі прыкладаў. Што прыемна аб PHP у першую чаргу Ёсць няма галоўнай функцыі. Калі вы хочаце напісаць праграму ў PHP вы толькі пачынаеце пісаць код, і вам не прыйдзецца турбавацца аб галоўным. Там няма Int. Там няма вяртання. Там няма ARGV, агдс, што патрабуецца, калі вы пішаце праграму. Замест гэтага вы можаце проста пачаць пісаць код, і гэта часткова таму што PHP з'яўляецца тое, што называецца інтэрпрэтаваны мову. C быў складзены, і ён быў складзены ў тым сэнсе, што вы пачынаеце з зыходным кодам, запусціць яго праз Clang, які з'яўляецца кампілятарам, і ў канчатковым выніку праз некаторы колькасць крокаў, якія вы атрымаеце код аб'екта, 0 і 1. PHP і Python і Ruby, і Пэрл і інш розныя тыпы моў у тым, што вы не кампіляваць іх. Вы не ідзяце з зыходным кодам 0 і 1. Вы проста запусціць зыходны код, і вы запусціце зыходны код пішыце ў звычайны тэкставы файл, які сканчаецца на. PHP ў дадзеным выпадку замест. з, што робіць праграма на кампутары яно літаральна інтэрпрэтуе код радок за радком за радком. Іншымі словамі, замест таго, каб пісаць праграму і запусціць праграму непасрэдна вам, а напісаць праграму з файлам сканчаюцца на. PHP. Затым вы запускаеце праграму пад назвай фактычнай php.exe, калі вы на Windows, ці проста PHP, калі вы на Mac OS або Linux, і Вы падаеце ў якасці ўкладу ў праграме PHP ўласнага зыходнага кода, і яго мэта ў жыцці, каб чытаць ваш код зверху ўніз, злева направа, і рабіць усё, што вы сказалі гэта рабіць. Давайце паглядзім, што гэта будзе азначаць, сінтаксічна. У PHP у нас ёсць умовы. На гэтым слайдзе ідэнтычны таму, што вы бачылі ў тыдзень 1 таму што сінтаксічна умовах, IFS і IFS яшчэ і яшчэ ў PHP выглядаць дакладна так, як гэта. Калі справа даходзіць да лагічныя выразы, што яны збіраюцца выглядаць дакладна так, як гэта. Калі справа даходзіць да лагічнага множання рэчы разам, як булеўскіх гэта будзе выглядаць менавіта так. Перамыкачы выглядаюць аднолькава, і вы атрымаеце дадатковае перавага ў PHP , Што перамыкачы ў C можна было толькі ўключыць знак ці Int. Вы не маглі б перайсці на радок. У PHP вы можаце мець выраз , Што з'яўляецца зменнай, змесціва якога радок, і вы рэальна можаце зрабіць параўнанне радкоў у рэальным інтуітыўна зразумелым спосабам, Ня паказальніка параўнання, для таго, каб вырашыць, ці варта рабіць выпадку я ці J ці нешта яшчэ. Мы ўбачым, што патэнцыйна ў хуткім часе. Завесы занадта цудоўна тое ж самае. Для завесы маюць ініцыялізацыя, ўмова, і некаторы колькасць абнаўленняў. У той час як завесы, таксама існуюць у PHP. Зрабіце той час як завесы, таксама існуюць у PHP, і масівамі існуе ў PHP, але вось дзе сінтаксіс пачынае станавіцца крыху па-іншаму, але прынцыпы тыя ж, і паняцці сапраўды адны і тыя ж як яны былі ў тыдзень 0 з нуля. Перш за ўсё, гэта знак $. Гэта было дызайнерскае рашэнне ў PHP якім любы зменнай У PHP дызайн пачынаецца з $ знака. Там няма больш X, Y, Z. Гэта цяпер $ X, $ Y, $ Z проста так. Гэта нешта трымаць у розуме, і цяпер на правай баку гэта падобна на масіў, але мы выкарыстоўваем квадратныя дужкі тут. У PHP і JavaScript у, як мы бачым у канчатковым выніку, абвясціць масіў вы адкрыты квадратныя дужкі і зачыніў квадратныя дужкі, і тады ў вас ёсць спіс падзеленых коскамі значэнняў, будзь то цэлыя або радкі знакаў або, што вы хочаце, усярэдзіне гэтага выказвання няма. Цяпер, як мы рабілі нешта падобнае ў C? Што было сінтаксіс для статычна аб'яўленні масіва вядомага ліку? Гэта было фігурныя дужкі, так што невялікая розніца тут, але і ў PHP і ў канчатковым выніку наяўнасць ён проста выкарыстоўвае квадратныя дужкі, так на самай справе Толькі цікавая дэталь тут з'яўляецца знакам $ на імя зменнай , А таксама ў квадратных дужках, і ёсць адна цікавая рэч , Які быў апушчаны, а на левай баку знак =. Чаго не хапае, што мы былі якая патрабуе ўжо некалькі тыдняў? Так. [Неразборліва адказ студэнта] Памер, так што няма ніякай згадкі пра памеры масіва. Шчыра кажучы, няма ніякай згадкі ў квадратных дужках у левай частцы знака =, і, што яшчэ адсутнічае ў радку? Так. >> [Неразборліва адказ студэнта] Тыпу, так што цікава, у прыватнасці, аб PHP з'яўляецца тое, што яна не з'яўляецца строга тыпізаваных моў, як З, і гэта моцна набраў у тым сэнсе, што вы павінны сказаць знакаў, Вы павінны сказаць INT, вы павінны гаварыць паплаўка. У любы час вы хочаце, каб пераменная вы павінны сказаць Clang, што яго тып. PHP трохі лянуецца больш. Ён свабодна набраныя ў тым сэнсе, што Вы можаце мець паплаўкі і сімвалаў і радкоў і Інтс і гэтак далей, але сама мова на самай справе не хвалюе, што вы пакладзеце ўнутр зменнай. Вы не павінны інфармаваць яго загадзя, які тып дадзеных збіраецца ў зменную. Гэта цалкам залежыць ад вас, так што гэта добрая у тым, што вам не прыйдзецца турбавацца, як шмат пра тыпізацыі дадзеных і турбавацца, што вашы аргументы і гэтак далей. Гэта таксама азначае, у канчатковым рахунку функцый у PHP збіраецеся быць у стане вярнуцца альбо Int вялікую частку часу, і, магчыма, раз у той час яны будуць вяртаць лагічнае значэнне, лагічнае значэнне FALSE, напрыклад, каб паказаць, што нешта пайшло не так. Гэта дае нам некаторы патэнцыял росту, але і зробіць нас накшталт дызайну трохі лянуецца больш, калі справа даходзіць да ўводу дадзеных. Што яшчэ мець на ўвазе тут? Зменныя выглядаюць цалкам задавальняе, так што $ S = "прывітанне, свет". Гэта, магчыма, якая выводзіцца з папярэдняга прыкладу, і ў нас ёсць іншы тып цыклу. Гэта адно мы на самай справе бачым раз у той час, так як гэта вельмі зручна, Еогеасп пабудаваць. У гэтым выпадку цыкл па кожнаму элементу адбываецца ўнутры яго дужкамі 3 словы як правіла, $ Гэта першае, што і масіў вы хочаце перабраць членаў, Затым літаральна ключавое слова, а затым, нарэшце, іншай зменнай імя, якое вы атрымліваеце на выбар. Гэта можа быць Foo, Bar, або элемент, і тое, што гэтая канструкцыя робіць , Калі масіў $ змяшчае 10 элементаў на кожнай ітэрацыі гэтага масіва, прабачце, на кожнай ітэрацыі гэтага цыклу зменную элемент будзе абнаўляцца першым элементам масіву, то другі элемент масіва, то трэці элемент масіва, тым самым ухіляючы неабходнасць зрабіць трохі раздражняе квадратных пазначэнне кранштэйна і $ Я для таго, каб індэкс ў масіве. PHP робіць усё гэта за вас і на кожнай ітэрацыі проста ўручае вам наступны элемент з масіва без неабходнасці ведаць ці клапаціцца пра яго лікавае размяшчэнню азначніка. І тады, нарэшце, на дадзены момант, ёсць яшчэ адна асаблівасць PHP што гэта будзе вельмі карысна, асабліва калі мы пачынаем праграмавання ў Інтэрнэце, і гэта вядома як асацыятыўны масіў. Масіваў, што мы ведаем да гэтага часу, як 20 секунд таму і на працягу апошніх 8 тыдняў масівы з лікавымі індэксамі, роду традыцыйных масіваў, дзе індэксы цэлых лікаў, 0, 1, 2, на ўсім шляху ўверх. Асацыятыўныя масівы з'яўляюцца значна больш магутным. Яны дазваляюць мець адвольныя клавішы, адвольных індэксаў і адвольныя значэння. У той час як у традыцыйных масіваў гэта 0, 1, 2, ў асацыятыўны масіў, вы можаце мець індэкс або ключ Foo, значэннем якога з'яўляецца бар. Вы можаце мець яшчэ адзін ключ, імя якога Баз і значэнне якога qux. Зноў жа, дурныя камп'ютэрныя навукі агульныя імёны зменных тут, але справа ў тым, што гэты масіў не мае кранштэйны 0 або кранштэйн 1. Гэта замест таго, прыйдзецца Foo кранштэйн і кранштэйн Баз. Гэта нашмат больш універсальныя у тым, што мы збіраемся, каб мець магчымасць супаставіць словы з іншымі словамі, ключы са значэннямі цалкам адвольна, і мы збіраемся, каб мець магчымасць атрымаць гэтыя значэння назад у фіксаваны час таму што пад капотам, што асацыятыўны масіў сапраўды ўяўляе сабой хэш-табліцу. Нагадаем, што Хэш-табліца дазваляе размясціць у некаторых ўваходных хацелі пакласці ў словы Давіда, калі вы хочаце, каб ўставіць Давіда ў нейкі слоўнік, і тады вы атрымаеце назад некаторы значэнне звычайна. У выпадку правапісу, сапраўдным або ілжывым. Дэвід або што слова або няма ў слоўніку. Асацыятыўны масіў, на самай справе проста хэш-табліцы, але гэта значна больш зручным увасабленнем яго. Як мы ўбачым, гэта будзе, каб дазволіць нам зрабіць некаторыя рэчы Вельмі, вельмі лёгка. Давайце зірнем на некаторыя асноўныя PHP прыклады і паглядзім, што мы можам зрабіць з гэтай мовай. Дазвольце мне ісці наперад і адкрываць у нашай зыходны каталог сёння файл з імем hello1.php. Гэты файл больш каментароў, чым рэальны код, так што дазвольце мне на самай справе выдаліць усе з файла і прадставіць Вам магчыма, самы просты PHP праграму прама тут. 5 ліній, а некаторыя з іх з'яўляюцца прабелы, так што заўважыць некаторыя ключавыя адрозненні тут. Размовы называецца hello1.php. Самая першая радок, хоць, , азначае, што менавіта для майго PHP кода. Давайце паглядзім, як кіраваць гэтым. Я збіраюся вярнуцца ў сваю акне тэрмінала тут. Я збіраюся пайсці ў маю PHP дырэкторыю. Звярніце ўвагу, што ў нас ёсць цэлая куча файлаў, першы з якіх з'яўляецца hello.php. Дазвольце мне ісці наперад і выканаць гэта, hello1.php, увядзіце. Доступ забаронены. Добра. Як мы зафіксаваныя такія рэчы, як гэта ў мінулым? Што гэта? >> [Неразборліва адказ студэнта] Нам патрэбна чытаць і пісаць, але дазвольце мне зрабіць LS-л. Памятаеце пра гэта некалькі загадкава выхад якога hello1 здаецца, для чытання і запісы мной але чытаецца усімі астатнімі. Аказваецца, гэта на самай справе не з'яўляецца крокам у правільным кірунку. Розніца, зноў жа, з інтэрпрэтаваная мова гэта вы не запусціце праграму напрамую. Вы, а не працаваць перакладчыкам і перадаць яго код што вы напісалі так што ён можа інтэрпрэтаваць гэта радок за радком. У гэтым выпадку перакладчык або праграму, якую я на самой справе хочуць працаваць літаральна называецца PHP. Дзесьці на гэтым цвёрдым дыску апарата ёсць праграма напісаў нехта іншы называецца PHP, або на АС Windows php.exe. Што я буду рабіць тут, я буду рэальна працаваць PHP але даць яму ў якасці аргументу каманднага радка кода, які я напісаў, і тады я буду маштаб і націсніце ўвод. Яна працуе мая праграма для мяне, зверху ўніз, злева направа. Дазвольце мне ісці наперад і адкрываць невялікія адхіленні ад гэтага. У hello2.php заўважыць, што гэта занадта у асноўным каментары, таму дазвольце мне пазбавіцца ад тых, як адцягненне, і тое, што відавочна адрозніваецца цяпер пра гэта файле? Там гэтая новая лінія, некалькі загадкавым на самым версе. У радку 1 гэта #! / Бэн / PHP. Бэн з'яўляецца Канвенцыя аб Linux і Mac OS для двайковых файлаў, так / бен азначае, што гэта тэчка, якая змяшчае кучу файлы , Які запраграмаваны, адным з якіх з'яўляецца PHP. #! па мянушцы прытон, , Якая з'яўляецца хуткім спосабам сказаць гэта, і што гэта азначае з'яўляецца тое, што, калі вы запусціце гэтую праграму зараз ёсць намёк на пачатак файла , Якая кажа кампутара, што перакладчык у выкарыстанні. Гэта становіцца трохі раздражняе, калі вы павінны былі расказаць сваім карыстальнікам і кліентам "Гэй, мы напісалі гэтую праграму пад назвай hello1.php". Усё, што вам трэба зрабіць, гэта назаўжды запуску PHP, а затым імя гэтай праграмы. Шчыра кажучы, было б проста прыемней працаваць hello1.php, І сапраўды, мы можам, калі мы робім наступнае. Дазвольце мне ісці наперад і рабіць LS-л, а апавяшчэнне ў hello2 гэта яшчэ толькі чытання і запісу , А затым чытаць чытаць, так што я пакуль не магу гэта зрабіць, hello2.php. Але мы ўвялі гэта вельмі коратка апошні час, каманда CHMOD. Калі я CHMOD + х, які азначае, што ўсе плюс выканальны, , А затым hello2.php, а затым зрабіць LS-л зноў заўважаем, што змянілася. Адзін з іх, Linux паказвае мне імя файла ў зялёную, каб перадаць ідэю што гэта выкананы файл, але што яшчэ больш важна, на левай баку заўважыць, што біт, які ўяўляе х выкананых у цяперашні час ўстаноўлена. Што гэта азначае зараз гэта я магу запусціць ./hello2.php як звычайна, націсніце ўвод, і з-за прытон ў самым пачатку файла гэта намёк, зноў жа, Linux, якая кажа выкарыстаць гэты перакладчык, каб запусціць гэты файл. Не турбуйцеся аб прымушаючы карыстальніка ўводзіць яго на самай справе. І што прыемна цяпер гэта накшталт не мае дачынення да маіх кліентам або сябрам якую мову я напісаў гэтую праграму, таму я магу ісці наперад з ЬІ і перайменаваць гэтую рэч hello2, напрыклад. І зараз, калі я ./hello2 і памяншэнне мая праграма працягвае працаваць. Гэтыя файлавыя пашырэння чалавечых канвенцыі, што гэта неабходна нешта накшталт Clang і зрабіць, хто глядзіць на іх. Але для PHP, я мог бы назваць гэта нічога пашырэнне файла я хачу. Я мог бы падмануць свет, думаючы, што я сапраўды добра Ruby, і я мог бы напісаць hello2.rb, а затым запусціць гэта, і вуаля, зараз у мяне ёсць версія Ruby, якая з'яўляецца поўнай хлуснёй. Але пашырэнняў файлаў, не маюць сэнсу калі файл з'яўляецца выкананым і мае адмысловую гэтым намёк на пачатак файла. Цяпер, як і ў бок, дазвольце мне паказаць вам хутка версіі 3, якая з'яўляецца свайго роду карысны трук ведаць. У hello3 я зрабіў нешта трохі няправільна што я буду абнаўляць онлайн зыходным кодам. У версіі 3 і атрымліваецца, што на большасці кампутараў Linux ёсць праграма пад назвай акр для навакольнага асяроддзя, і што вы можаце рабіць тут, калі вы не ведаеце, дзе PHP усталяваны на лакальны жорсткі дыск, таму што гэта сапраўды можа мяняцца ў залежнасці ад кампутара што хтосьці выкарыстоўвае, ENV проста кажа працаваць ENV, , Які знаходзіцца на большасці сістэм, і высветліць, дзе PHP ёсць. Проста звычайны прыём, таму вам не прыйдзецца турбавацца аб высветліць, дзе праграма. Але калі вы клапоціцеся, каб высветліць, дзе праграма і вы не клапаціўся да гэтага часу Вы можаце выкарыстоўваць якую каманда. Дазвольце мне маштаб і тып якіх PHP, і звярніце ўвагу, ён кажа мне, што гэта на самай справе ў USR / бен / PHP. Гэта свайго роду хлусня. Гэта знаходзіцца таксама ў смеццевае вядро. Гэта проста паказвае мне першы ўдар. Калі вы калі-небудзь задаваліся пытаннем, дзе Clang ёсць, што Clang, які ў USR / бен / ляск, , Якія робяць, USR / бен / зрабіць, і што гэта значыць, увесь гэты час Вы маглі ўводзіць USR / бен / ляск ўвесці для запуску Clang, але гэта накшталт стомнай, каб зрабіць гэта, таму некаторыя тэчкі як USR / бен і бен мяркуюцца па змаўчанні так што кампутар ведае, шукаць у іх для вас. Любыя пытанні па напісанні супер, супер проста Hello праграмы Сусветнага У PHP, а затым запусціць яго? Таму што цяпер мы пачнём ўкараняць больш пераканаўчым сінтаксісу. Добра, тут мы ідзем. Гэтыя праграмы, якія мы бачылі на самай справе ўсё з іх раней. Калі я адкрываю, напрыклад, давайце зробім beer1.php, Мы не пройдзе праз некалькі версій, але тое, што я зрабіў быў я сеў і выліў яе ці ператвораныя мой C код, код PHP тут. Большасць з верхняй часткі файла каментары тут. Аказваецца, ёсць яшчэ адна новая функцыя, мы павінны называць Readline. GetString, нагадаем, ад тыдня 0 наперад было CS50 рэч. PHP пастаўляецца са сваёй уласнай зручнай функцыяй завецца Readline , Што займае 1 аргумент, які вызначае радкі што вы хочаце паказаць карыстальніку, і тое, што робіць Readline яно вяртае ўсё, што карыстач набірае цалі У гэтым выпадку, я аб'яўленні зменнай $ п. Я захоўванні ў ім вяртаецца значэння Readline Пасля запыту карыстальніка з гэтай радком. Проста для рэзервовага капіявання, каб фактычна выканаць гэтую рэч, адпусьці мяне наперадзе і запусціць PHP beer1.php. Колькі бутэлек будзе? Давайце проста зрабіць 2 у гэты раз. Enter. Вось і ўсё. Праграма з'яўляецца функцыянальна ідэнтычныя версіі C ад тыдня таму. Але сінтаксічна давайце паглядзім, што па-іншаму. Пасля таго як я атрымліваю Int ад карыстальніка заўважылі, што я раблю некалькі памылак, а калі п складае менш за 1 я пайшоў, і я раздрукаваць прабачце паведамленне карыстачу і выхад з 1. Гэта таксама трохі адрозніваецца.  У C Што ж нам рабіць? У C мы вярнуліся 1. У PHP вы выйдзеце з 1, які адкрыта, я думаю, трохі больш інтуітыўным таму што вы літаральна выхадзе з праграмы. Добра, а затым сюды раздражняе песні ідэнтычныя сінтаксічна за выключэннем зменнай, так што тут, у радку 24 наперад заўважыць майго цыклу амаль тое ж самае, але ў мяне ёсць $ у пярэдняй частцы я і п, і што таксама адсутнічае радок 26, якія мы мелі ў мінулым пры аб'яве зменнай я? Там няма тып. Гэта няправільна ў PHP сказаць Int. Вы проста не трэба гэтага рабіць. Кампутар, РНР досыць разумны, каб разумець, што калі вы пакладзеце нумар у $ I ён будзе ставіцца да яго як нумар для вас. А потым тут мы відэлец у $ я, $ I $ - 1. Усё, што тое ж самае, а затым тут мы робім "Нічога сабе, гэта раздражняе" Printf , А затым выйсці (0). Зноў жа, вынас ў тым, што нават калі мы збіраемся правесці адносна мала часу на PHP, вядома, супраць таго, што мы зрабілі на C, гэта амаль тое ж самае, і так, што мы будзем рабіць сёння і на наступным тыдні і за гэта сапраўды засяродзіцца на некаторых з новых ідэй. Проста каб паглядзець, што яшчэ адна рэч робіць пераклад больш з C, гэта было супер проста праграма, якую мы зрабілі ў тыдзень 1 або 2, што ў кубе значэнне. Але што цікава, у той час аб гэтай праграме з'яўляецца тое, што ўведзена паняцце карыстацкага напісаў функцыі, якія мы самі пісалі. Сінтаксіс ў PHP амаль тое ж самае. Вось мая праграма наверсе. Звярніце ўвагу, зноў адсутнічае любое паняцце асноўнага. Я пачынаю пісаць код, і гэта тое, што збіраецца атрымаць выкананы інтэрпрэтатарам. Я раздрукуйце х цяпер 2, па-відаць. Тады я сцвярджаю, кубатуры ... Тады я называю куб функцыі і перадаць у $ х і прысвоіць вяртаецца значэнне $ х. Тады я сцвярджаю, што гэта кубе, і тады я кажу пра гэта, якое, мы спадзяемся, скажу х цяпер 8. Сінтаксіс функцыі ў PHP з'яўляецца вельмі трохі іншая. Зноў хапае вяртаецца тыпу. Зноў жа зніклых без вестак вяртаецца тыпу, а таксама адсутнічае, так гэта тое, што іншы тып? [Неразборліва адказ студэнта] Ну, добра, гэта добра. Давайце вернемся да гэтага ў секунду. У нас няма, напрыклад, INT тут. Мы не, напрыклад, былі Int тут, таму што, зноў жа, у PHP Вы проста не павінны і не павінны рабіць, а там гэта новае ключавое слова завецца функцыяй. У PHP гэта амаль крышачку больш зразумела, таму што, калі вы хочаце функцыя Вы літаральна кажуць функцыю, вы даеце яму імя, а затым праз коску калі якое-небудзь з яе аргументаў. Няма неабходнасці гаварыць, несапраўдным або нешта ў гэтым родзе, а потым вярнуцца і тое ж, $ * $ * $. Што ж не хапае? Сэмі паказаў на гэта тут. У верхняй частцы файла цалкам адсутнічае ў PHP таксама з'яўляецца прататыпам. Гэта таксама па дызайне. Мовы і перакладчыкі, як PHP разумнейшы, чым калі-небудзь C У кампілятары, як Clang. Нагадаем, што Clang, калі вы не паведаміце яму, што куб існуе, калі вы не паведаміце яму, што Printf існуе ў выглядзе прататыпа з або з # ўключыць, ну, ён збіраўся крычаць на вас і нават не кампіляцыі кода. PHP і больш сучасныя мовы нашмат разумней, калі справа даходзіць да гэтага. Яны возьмуць на сябе прачытаць увесь код , А затым крычаць на вас, толькі калі ён знаходзіць куб нікуды. Гэта не мае значэння, калі куба знаходзіцца на ніжняй або верхняй або нават у некаторых асобным файле. PHP і падобных моў у цяперашні час досыць разумныя, каб глядзець у будучыню на ўсё, перш чым лічачы вас, як дапусціўшы памылку. Дзе гэта пакідае нас? Давайце зробім адзін прыклад тут, ва ўмовах, і калі я адкрываю conditions2.php апавяшчэння таксама Сінтаксіс тут амаль тое ж самае. Я выкарыстоўваю Readline замест GetString, але гэтую лінію гэтак жа, як і раней, "Я хацеў бы цэлае, калі ласка". Я тады, калі ўмова, інакш, калі, а затым іншае, але функцыянальна гэтая праграма таксама ідэнтычна таго, што мы зрабілі тыдняў назад так што калі я запускаю гэтую рэч, PHP з conditions2, і я даю яму нумар, як 23 - Я абраў станоўчае лік. Калі я даю яму -1 Я абраў адмоўнае лік. Калі я даю добра 0 сапраўды ўзяў 0. Дык хто ж клапоціцца пра ўсё гэта? Ну, адзін з пацешных роду практыкаванні тут Для мяне па крайняй меры, павінен быў вярнуцца і паглядзець, як хутка я мог бы ажыццяўляць PSET 5, памылкамі друку PSET. Нагадаем, што там быў гэты файл пад назвай speller.c, і там быў файл з імем dictionary.c. Тое, што я зрабіў, я як бы выдаткаваў некалькі хвілін, і я ператварыў код C у кодзе PHP, і мы не будзем марнаваць шмат часу на спеллер таму як у PSET 5 вы сапраўды не трэба, каб марнаваць шмат часу на спеллер сябе, таму што ваша ўвага была прыкавана да слоўніка. Дастаткова сказаць, што калі вы прачыталі правапісу, Гэты файл тут, гэта ў значнай ступені эквівалентна код C мы далі вам для PSET 5. Я толькі што дадалі каля $ на месцах. Я змяніў некаторыя імёны функцый, калі яны не існуюць у PHP. Там адна дадатковая рэч тут, preg_match, які трохі аматар спосаб рабіць нешта, але мы вернемся да гэтага ў рэшце рэшт. Але ў агульным, правапісу амаль ідэнтычныя, і калі вы паглядзіце на самае дно тое, што ён у канчатковым выніку выплёўвае гэта тут, словы з памылкамі, слова ў слоўнік, слова ў тэксце. Добра, так што цікава зараз заключаецца ў наступным. У верхняй частцы майго файла Я патрабуюць dictionary.php. Гэтак жа, як C # быў ўключаюць PHP ёсць адмысловая функцыя, званая патрабуюць што ў значнай ступені робіць тое ж самае, патрабуе файл з імем dictionary.php. Як я магу ісці аб рэалізацыі PSET 5? Дазвольце мне ісці наперад і адкрываць файл тут. Дазвольце мне трохі спасылкай тут. І дазвольце мне стварыць новы файл і пачаць называць гэта dictionary.php. Дазвольце мне сказаць гэта ў іншы тэчцы, так што мы можам зрабіць гэта жыць. А цяпер я змяніць маштаб малюнка Я збіраюся пачаць сваё PHP файлаў з адкрытым кранштэйны PHP зачынена кранштэйн. І тады тут было некалькі функцый Мне трэба рэалізаваць для PSET 5, так што дазвольце мне пачаць рэалізацыю некаторых з тых, так што функцыя праверкі, якія павінны былі ўзяць слова ў якасці аргументу. Мы будзем рабіць гэта і вярнуцца да яго ў дадзены момант. Існаваў функцыі нагрузку, якая адбылася ў тым, што ў якасці аргументу? Слоўнік, таму файл, што я на самой справе хацеў, каб загрузіць. Існаваў функцыі памеры, які не прымае аргументаў і там была функцыя-тое, што было іншым? Unload, які не прымае аргументаў небудзь. Гэтыя 4 функцыі, што я павінен быў бы зараз рэалізаваць у PHP, і тое, што я збіраюся зрабіць, гэта ісці наперад і рабіць гэта. Многія з вас выкарыстоўваць хэш-табліцу ў PSET 5, так што дазвольце мне пайсці далей і стварыць хэш-табліцы ў PHP. Гатова. Гэта дае мне хэш-табліцы. Ну, чаму? Адзін з іх, зменная называецца $ табліцы, проста каб выклікаць ва ўяўленні ідэю хэш-табліцы. Квадратныя дужкі, хоць, нагадаем, ўяўляюць сабой што? Масіве, але ў масівах PHP не павінны быць лікавымі індэксамі. Яны таксама могуць быць асацыятыўнымі масівамі, якая азначае, што вы можаце мець адвольную ключоў і значэнняў. Многае, як у PSET 5, тыя з вас, хто гэта зрабіў хэш-табліцы рэалізацый Вы, верагодна, уставіў слова, а затым ўставіць яго ў ланцужок звязаных спісаў, ці вы захавалі значэнне ісціна дзесьці ці нешта ў гэтым родзе. Вы чамусьці ўспомніў той факт, што слова не было. На дадзены момант, гэта будзе мой хэш-табліцы, І вось цяпер ісці аб рэалізацыі функцыі кантролю Мне проста трэба, каб зазірнуць унутр гэтага хэш-табліцы і паглядзець, калі слова ёсць. Тое, што я збіраюся зрабіць, гэта я збіраюся казаць, калі- скажам, Исеть, якая з'яўляецца PHP функцыя, якая літаральна азначае, набор ключоў, так Исеть ($ табліцу [$ словам], і калі так, вярнуць праўдзівы. Вось і ўсё. Вось PSET 5 у PHP. Ну, справядлівасці дзеля, усё ў парадку. Астатняе вярнуцца ілжывым, так што гэта не было. Што на самай справе адбываецца? Ну, калі табліцы або хэш-табліцы тут у больш агульным- ўяўляе сабой асацыятыўны масіў, што азначае, што вы можаце індэксаваць ў яго словам, як «слова», і вы павінны вярнуць некаторы значэнне. Мы быццам атрымліваю адзін крок наперадзе нас. Было бы збольшага добра, калі б мы на самай справе загружаецца файл першым, так што нагрузка не так проста, але дазвольце мне ісці наперад і на хуткую руку  вельмі хутка ажыццяўленне нагрузкі. Дазвольце мне ісці наперад і сказаць словамі атрымлівае файл слоўніка. Размовы функцыю ў PHP адкрывае файл і вяртаецца да вас масіў ўсе словы ў гэтым файле, проста перадае іх вам. Гэта была вялікая боль таксама, ці не так? Зараз па кожнаму элементу, гэта наша новая канструкцыя, Еогеасп ($ словы $ словам). Гэты цыкл будзе пачынацца ітэрацыі па масіве слоў і прысвоіць зменнай $ словам кожнае слова ў файле ад першай да другой да трэцяй на чацвёртую ўсе шляхі так што я не павінен рабіць раздражняльныя [I] абазначэння і таму падобнае. І тое, што я проста буду рабіць для кожнага з гэтых слоў будзе захоўваць яго ў маёй табліцы індэксацыі ў табліцы , А затым рабіць так, таму што ўспомніць , Што слова ў маім слоўніку ўсё, што мне сапраўды трэба зрабіць, гэта свайго роду перавярнуць трохі, і кажуць, што гэтае слова ў маёй Хэш-табліца ёсць, праўда. І калі яго там няма, я не трэба відавочна пакласці ілжывымі, у адваротным выпадку я б паклаў ілжыва для ўсіх магчымых слоў ў Сусвеце. Досыць для мяне проста ўсталяваць значэнне індэкса праўдзіва, калі слова на самай справе ў маёй хэш-табліцы. Зараз, я рэзка пару кутоў тут, што я буду махаць рукамі на дадзены момант, але цяпер функцыя загрузкі зроблена. Я загружаю ўсе словы з файла ў масіў. Я перабору масіва, і для кожнага слова ў масіве Я падлучыць яго да маёй Хэш-табліца з 1 радком кода. Гэта весела. Вы ведаеце, як мы можам рэалізаваць памеру цяпер? Ну, памер заўсёды даволі лёгка, у справядлівасць. Тут мы можам проста вярнуць кол-ць сталом. Гэта даволі лёгка занадта, падлічыць колькасць рэчаў у табліцы. Гэта на самай справе выгляд не самы эфектыўны. Я, верагодна, варта мець зменную памеру такім чынам, мы можам зрабіць гэта У пастаянным часу, але гэта даволі лёгка. Ох, і затым выгрузіць, калі мы сапраўды хочам быць анальны тут мы можам сказаць, што гэта, як вы выгрузіць нешта. Вы проста ўсталяваць велічыню, роўную пусты масіў, і ён пазбаўляецца ад усяго, што было там. Не трэба тэлефанаваць бясплатна. Зноў жа, я скараціць некаторыя вуглы, і я прашу прабачэння за прысваенне праблема мноства 5 магчыма, у C, але калі мы зараз ісці наперад і выканаць гэта, Я збіраюся на самай справе запусціць версію, якую я напісаў загадзя проста так, што я не рабіў ніякіх сінтаксічных памылак наогул. Дазвольце мне ісці наперад і працаваць правапісу. Выкарыстанне тое ж самае. Вось файл слоўніка, які толькі змяшчае слова Foo. Вось гэта тэкставы файл, які змяшчае толькі Foo Bar. Давайце праверкі арфаграфіі гэта, так правапісу, выкарыстоўваючы гэты файл слоўніка на гэтым тэкставым файле. Там адзін слова з памылкай, бар, і вуаля. Здзейснена з PSET 5. Давайце 5-хвілінны перапынак тут, і мы вернемся і больш на PHP. Добра, мы вярнуліся. Давайце рабіць-ненавідзіце мяне на некаторы час. Давайце цяпер на самай справе ўбачыць, калі гэта не было станоўчага на самай справе рэалізацыі гэтай рэчы ў PHP. Вядома, гэта заняло 45 секунд, каб рэалізаваць. Але давайце ісці наперад зараз і запусціць рэчы. Дазвольце мне ісці наперад і запусціць версію C з правапісу, і мы будзем запускаць яго на адным з найбуйнейшых файлаў, якая з'яўляецца Бібліі караля Джэймса. І вось у давайце ўвойдзем у нашу тэчку C, спеллер на караля Джэймса 5-га. Шмат слоў з памылкамі. Добра, так вось выснова, які вы, верагодна, атрымалі нават калі раз крыху па-іншаму, Калі вы атрымалі ўсё працуе правільна, і так раз у агульнай складанасці для праверкі правапісу Бібліі караля Джэймса быў 0,38 секунды, так што вельмі добра з дапамогай гэтай рэалізацыі. Цяпер дазвольце мне перайсці ў версіі PHP, якую мы толькі што напісалі. Дазвольце мне выканаць правапісу на караля Джэймса. Ой, ігнараваць гэтую памылку. Я ў тую дырэкторыю. Speller на караля Джэймса 5-га. Амаль гатова. Добра, праніклівы назіральнік зразумее, што быў больш чым на 3 секунды там. Гэта і ёсць сапраўдны час працы. Аказваецца, што гэта займае час, каб плюнуць шмат тэксту з з-за буферызацыі пытанні, але карацей кажучы, , Якая была 3,15 секунды машыннага часу, працэсарны час, супраць таго, што было хвіліну назад? Як .3. Я маю на ўвазе, гэта на парадак больш павольна, так дзе гэта Смешна запаволенне прыходзіць? Ну, як гэта было ў выпадку з большасцю любога дызайнерскага рашэння мы зрабілі у класе за апошнія 9 тыдняў там амаль заўсёды гэта кампраміс. Часам толькі паміж прасторай, часам паміж прасторай і часам, прасторы, часу і намаганняў у галіне развіцця, ды і тут, хоць Мы захавалі велізарную колькасць часу, можа быць, патэнцыйна 10-20-30 гадзін час распрацоўкі ажыццяўленні праверкі арфаграфіі пугамі яго ўсяго за 45 секунд з гэтай мовай Цана, якую мы заплацілі тое, што гэта на парадак больш павольна, як вынік, і гэта, як правіла, у выпадку з большасцю любой інтэрпрэтаваная мова, PHP, Python, Ruby, Pearl або іншыя якой калі вы збіраецеся запусціць яго праз перакладчыка, а ён чытаў код радок за радком, зверху ўніз, злева направа, , Што пасярэднік збіраецца заняць некаторы час сваё, і што вы адчувалі сябе тут у 3 секунды, а не 0,3 секунды з'яўляецца той факт, што гэта пасярэднік, які мае ў літаральным сэнсе інтэрпрэтаваць наш код радок за радком, і не дай бог, калі вы знаходзіцеся ўнутры цыклу з велізарным файл, які змяшчае сотні тысяч слоў. Гэта накладныя збіраецца дадаць і скласці і дадаць і скласці. Для такі інструмент, як гэта, што гэта, верагодна, не самы лепшы мову, каб выкарыстоўваць для рэалізацыі праверка арфаграфіі, калі непасрэднасць ўяўляе цікавасць для карыстальнікаў, і для вас. Але раскоша, якую мы маем у дадзены момант з'яўляецца, калі Вы карыстацца мовай, як PHP або шмат інтэрпрэтаваных моў ў кантэксце Web, калі на тое пайшло, у вас ёсць выгада , Што Інтэрнэт з'яўляецца нашмат павольней, чым большасць кампутараў. У вас ёсць GHz CPU ў кампутары, 2 Ггц, можа быць, нават больш у гэтыя дні. Але рэальнасць такая, у інтэрнэце існуе вялікая колькасць затрымкай якой для браўзэра, каб пагаварыць з серверам, хоць мы бачылі на мінулым тыдні , Што даволі хутка, палову мілісекунды або так, , Што таксама дадае, і калі вы спампоўваеце рэчы, як малюнак ці фатаграфію Facebook або атрыманне імгненных паведамленняў праз балбатню Facebook, Gchat і да т.п., усё гэта туды-зваротна раз паміж браўзэрам і серверам пачатку складаць, што робіць ваш канкрэтны выбар мовы ў многіх выпадках Не ўсё, што неабходна, так што вы выдатна з дапамогай трохі павольней мове як PHP або Python або Ruby, але для якіх ёсць велізарныя расквітацца з вамі і вашымі калегамі і вашы сябры, таму што вы можаце рэалізаваць усе так, так нашмат хутчэй. І больш за тое, у вас значна менш рызыка пэўных недахопаў у бяспецы. Там няма паказальнікаў у PHP. Там няма сегментах няспраўнасцяў, якія можна лёгка выклікаць такім жа чынам, вы маглі б у C. З C ты супер блізка да абсталявання. З дапамогай PHP і аналагічных моў ты накшталт высокім узроўні, так бы мовіць, з вялікай колькасцю абарону паміж вамі і тое, што адбываецца на самай справе ўнутры машыны, і гэта ўсяго толькі кампраміс. Мы дайшлі да кропкі, якія маюць гэтыя больш сучасныя, мовы высокага ўзроўню як PHP, таму што з урокаў, вынятых ў мовах, як PHP на C. Але калі вы не разумееце, што адбывалася на пад капотам ўвесь гэты час Вы, вядома, не можа прымаць правільныя рашэнні, дызайн, і, вядома, калі справа даходзіць да працы на месцы, як Facebook або Google або любое з гэтых месцаў, якія ўсё часцей гуляюць з вялікімі наборамі дадзеных нават калі вы вярнуцца назад і зрабіць СБУЭОБ і працуюць з некаторымі MD на некаторых вялікіх набораў дадзеных з удзелам пацыентаў і лекараў і як з дапамогай правільных інструментаў з'яўляецца надзвычай пераканаўчым таму што ў адваротным выпадку ваш аналіз некаторых набораў дадзеных можа заняць секунд, ці ён можа літаральна некалькі гадзін. Гэта толькі адзін прыклад, каб не парушыць вас з тым, як прыкласці значна больш намаганняў гэта было ў C, але, каб дапамагчы вам зразумець, што калі вы рэалізаваць нешта ў C Вы сапраўды разумееце, ні ў тэорыі, на самай справе разумеюць як усе, ці павінен працаваць, і ў вас амаль поўны кантроль за тое, што адбываецца пад капотам, і з гэтых мовах больш высокага ўзроўню Вы павінны адмовіцца ад большага кантролю да людзей, якія іх прыдумалі і могуць быць больш па праектных рашэнняў, чым ваш. Але калі мы лічым само сабой якія разумеюцца, што прадукцыйнасць не гэтак важна на вэб-за гэтых іншых пытанняў, толькі хуткасць сеткі трохі павольней, чым хуткасць працэсараў у любым выпадку, так што мы можам сартаваць дазволіць сабе выкарыстоўваць трохі павольней мове калі расквітацца мы можа развівацца рэчы ў 10 разоў хутчэй ці нават больш. Давайце паглядзім, як мы можам пачаць выкарыстоўваць гэта. Адпусціце мяне ў тэчцы Сярод прыкладаў сёння называецца frosh.ims, і гэта было на самай справе асабіста матываваныя тым, што самае першае, што Я напісаў для вэб гадоў назад пасля таго, CS50 і CS51 быў сайт праграмы Frosh імгненныя паведамленні, першакурснік вочнага спорту, які ў той час гэта было дастаткова гадоў таму, што ў той час, Не было ніякіх сайце праграмы, нягледзячы на ​​тое, што Web, і замест гэтага быў суправаджалы ў Wigglesworth згодна з якім, калі вы хочаце зарэгістравацца для гульні ў валейбол ці футбол, ці як вы б запоўніць ліст паперы. Затым вы павінны ісці праз двор. Вы б тады пастукацца ў іх дзверы і слайд ў іх дзверы або руку суправаджалы ліст паперы з вашым імем на ёй, ці сапраўды вы хочаце быць капітанам каманды, якім выглядам спорту вы хацелі б зрабіць, і што інтэрнаце вы былі цалі Гэта быў свайго роду старой школы рабіць рэчы, і гэта было простае магчымасць аўтаматызацыі многіх гэты працэс. Вы проста зайдзіце на вэб-сайт. Вы набіраеце нешта цалі Вы атрымаеце пацвярджэнне па электроннай пошце, і стрэлы, вы зрабілі. Гэта было самае першае, што я зрабіў, хоць і ў мове пад назвай Pearl, але гэта адносна лёгка зрабіць у PHP, і гэта з'яўляецца свайго роду прадстаўніком праблем вы можаце прыступіць да рашэння, калі вы можаце выказаць сябе праграмна і не павінны спадзявацца на такія рэчы, як сайты Google або Excel або інструменты, якія перадалі вам. Вы, хлопцы, зараз ёсць магчымасць зрабіць нешта накшталт гэтага. Гэта супер выродлівыя версію форме, Але давайце проста выкарыстоўваць яго для пачатку размовы якім гэта прыкладна тое, што форма выглядала гадоў таму для нас каб людзі ў інтэрнэце, каб падпісацца на Frosh Чат. Мы папрасілі імя, сцяжок ці яны ці не хацеў быць капітанам, мужчыны ці жанчыны, і што тады інтэрнаце яны былі, і тады яны будуць прадстаўляць гэтую форму. Давайце спачатку паглядзім пад капотам на HTML, які ўяўляе гэтую вэб-старонку. Адпусціце мяне ў froshims0, і як у баку, для PSET 7 Я прымаючы як належнае каталогі і тэчкі, якія я кладу рэчы цалі Мы будзем ісці Вы праз менавіта там, дзе матэрыял павінен пайсці ў прыбор, які мод каманды вы павінны працаваць, так што не хвалюйцеся аб усіх дурныя падрабязнасці сінхранізацыі З самага пачатку ісці тут. Добра, вось froshims0.php. Дазвольце мне пракруціць ўніз, і, што цікава тут, гэта PHP файл, але тое, што ўнутры яго, ясна? Гэта цэлая шмат HTML, і, сапраўды, PHP, паходжанне сапраўды былі за тое, Web-арыентаваны мова. Хвіліну таму мы выкарыстоўвалі яго для рэалізацыі піва, напрыклад, умовах, напрыклад, прывітанне прыклад, і гэта нармальна. Вы можаце выкарыстоўваць PHP ў якасці скрыптовай мовы дзе сцэнарый на самай справе проста наменклатуры надаецца хуткай і бруднай праграмы або тое, што вы пішаце ў сцэнары ці ў больш агульным інтэрпрэтаваны мову. PHP гэта супер карысны для гэтага, таму што вы бачылі, як хутка Адносна мы можам нагнятаць праграм у PHP. Але гэта быў сапраўды прызначаны для выкарыстання ў сеткі Інтэрнэт, і прызначана для вэб-у тым сэнсе, што заўважыў тут у верхняй часткі файла Я пачынаюцца з