Даг LLOYD: Значи ние сме направи многу работа во C, и Ц е многу добар јазик, бидејќи ви дава способноста да се нурне навистина Ниското ниво во вашите програми. Ние се да ги правите нештата како навистина минута што е манипулација индивидуални бајти од меморија. Потсетиме дека навистина покажувачи ни овозможи што флексибилност. Но секогаш треба да имаме тоа ниво фино зрно детали во нашите програми? Веројатно не, нели? И ако ние се случува да треба трампа помеѓу се можност да се направи навистина, навистина минута работите и навистина, навистина големи нешта што ние не треба да се размислува за, ние не треба да се имплементира овие навистина големи идеи ако тие се веќе вградени во за нас, главно за изградба на голем програми или големи проекти, ние сме веројатно нема да згрешат на страната на постоење на повеќе работи јазикот изградена во за нас, наместо да има работи на ниско ниво. И тоа е каде PHP навистина доаѓа во. Сега, една од причините дека ние ги учат на PHP во CS50 е дека тоа е во голема мера инспириран од В И всушност, според мое мислење, постојат навистина две прогениторните јазици се многу честа појава во денешно време. C и Lisp. И тие се прогениторните јазици затоа што секоја друга модерна програмирање јазик, кој има развиено оттогаш е инспириран од страна на еден или на друг синтаксичкокомплексни. PHP е многу сличен синтаксички до C, додека јазици како Шема, на пример, што можеби сте слушнале, е силно инспириран од јазикот наречен LISP, кој е постар јазик. Значи причината ние ги учат PHP во CS50 е тоа што, со знаејќи Ц како фундаментално како што го правите во овој момент, подигање на PHP, кој ви дава на Способноста да се направи многу повисоко ниво работите од C прави тоа, не е дека голема пречка, затоа што веќе имаш на Основната идеја на синтаксата. С е околу речиси 45 години во овој момент. PHP е околу 20 години. И во таа 25 години меѓу нив, програмери констатирано е дека тие многу повеќе би а имаат повисоко ниво на способности, и грешките и борби на 20 години меѓу довело до PHP и другите современи јазици. Одличен избор на PHP е јазикот за софтвер дека allow-- за софтвер that-- каде што треба да се прават работите кои во С се всушност комплицирано. Така на пример, во кои работат со жици во C е многу комплицирано, бидејќи како што знаеме, стрингови во C се навистина само низи од карактери. Тоа не е вграден во тип на податок. Или можеби уште поважно, нешто што дури и не ги покрие во C, Што ако ви треба да се направи некои компјутерски мрежи? Во ред? Ц има способност да го направи тоа, но тоа е толку Тајниот, а толку тешко да се всушност прават. Зарем не би било убаво ако јазик имал вграден, лесен начин за спроведување на вмрежување? И PHP е јазик што го прави тој, или олеснува тоа, сосема малку повеќе. Како што реков, PHP е многу силно инспириран од В. Синтаксата е многу сличен. И така треба да се надеваме дека се направи премин од еден во друг малку помек од некои други јазици може да биде. За да почнете со пишување на PHP, само отвори датотека со .php наставката на датотеката. Технички тоа не е всушност се бара, но ако сакате да работите како синтакса истакнување во IDE, така што тип имиња, или променлива имиња, функции, што знаете, на клучни зборови на јазикот се означени во специфична боја, обично сакате да го именувате вашите датотеки со одредена наставката на датотеката. Значи ние сме именувани нашите датотека со .php продолжување, но потоа, исто така, со PHP, сите кодот PHP ние пишуваме со тоа датотеката мора да биде приложен во овие PHP Раздели, кои ги гледаме тука на екранот. Аглеста заграда? Php да се започне. Потоа ние пишуваме сите наши PHP кодот што го сакаме она помеѓу. И потоа ? аглеста заграда да се затвори. Ако ние не го стори тоа, тогаш што ќе се случи? Тоа не се случува да се сруши. Тоа не се случува да го Навистина го уништи нашата програма. Но, тоа не се случува да имаат ефектот што го сакаме. Што ќе се случи, всушност, е дека кога ќе се обиде и да ја извршите оваа програма, сè не меѓу оние Раздели се случува да бидат отпечатени на непроменети копии. Тоа не се случува да го всушност извршување на кодот, тоа се случува да се само печати ја надвор од збор до збор. А зошто е така? Па C е она што е познат како Составувач јазик. Сигурно сте запознаени со чекор за правење на вашите програми, вртење на .C .h фајлови и датотеки во една извршна со шминка, особено со употреба на Ѕвекот како наш компајлерот. PHP, сепак, не го прави тоа имаат оваа еквивалентни. PHP е она што се нарекува толкува јазик. И што значи тоа? Па, тоа значи дека ние не треба да го конвертирате нашиот изворен код за да се нули и единици пред тоа. Наместо тоа, има програма, кој исто така е наречена PHP, која ги разбира PHP и може да го направи тоа за кој вид на во лет. Тоа не е навистина точно точни, но тоа е прилично добра аналогија од она што се случува. Тоа е толкување на тие нули и оние на мува. И така, ако тоа не се знае како да се процес нешто, ако тоа не се знае како да се PHP процес, најверојатно сакаше да се стави дека текстот во таму, нели? Најверојатно сака да ја стави во кодот таму, дури и ако тоа не е меѓу PHP-- Раздели PHP. But-- па тоа не се случува да ја избришете за вас, тоа е само ќе да се основа фрлете го. Па затоа се случува да се печати тоа до екранот. Ова изгледа како тоа е лоша работа, но всушност тоа е ќе биде навистина добра работа, како што ќе види кога зборуваме за PHP веб развој, затоа што тоа значи дека може да едитирате PHP и HTML. Можеме да ги користите заедно за да се создаде динамична веб-страница. Но повеќе за тоа во видео на PHP веб развој. Значи она што е синтакса на PHP? Тоа е она што ова видео е за сите. Ајде да зборуваме за тоа. Така да се започне, променливи. Постојат PHP променливи. Постојат само две големи разлики од В. Првиот е дека има Нема типот назначувач. Ние не треба да се каже int, знак, плови, сето тоа работи. Ние не треба да се направи тоа повеќе. PHP е модерен јазик. Тоа може да дознаам што сте обидуваат да го направат или да направите најдобар Претпоставувам дека тоа што се обидуваш да го направи тоа. Значи тоа е прилично убаво. Од друга работа е тоа што сите променливи имиња мора да почнат со знак за долар. Тоа е само нешто да се навикнеш на. Тоа е малку чудно, бидејќи тоа е толку дека PHP може да се разбере што е променлива, а што не е. Значи секоја променлива име започнува со знак за долар. Па во C може да се каже нешто вака, int x = 54. Ние не треба да го правам тоа повеќе во PHP. Можеме да речеме $ x = 54. И ние може да се каже, на пример, во C, ако имавме фунта-вклучени .h CS50 хедер датотека, може да се каже стринг фраза = "Ова е CS50." Ние не треба да се направи тоа во PHP, иако. Можеме да речеме $ фраза = "Ова е CS50." И всушност, стринг е сега вграден тип на податок во PHP, или подобро го разбира PHP она стринг е. Тоа е посебен од низа на ликови како што е во В. Сите ваши омилени условно извештаи од C се уште е на располагање за да ги користите. Па не е голема транзиција таму. Можеме да say-- можеме да имаме ако извештаи се допаѓа ова. ако y $ 43 или $ z = 15. Значи тоа е прилично јасна. Ние може да има ако и друго. Ние може да има ако и друго, ако. И ќе забележите нешто прилично убаво тука, а тоа е вид на една од оние предности на PHP наспроти Ц, огласот каква функција ние не користите во оваа ситуација? Ние сме со користење == да се споредат променлива, $ име, во низа. Ние не можевме да го направите тоа во C, нели? Моравме да се користи некоја функција наречена StrComp или StrEndComp или било од неговите поврзани братучеди. И така веќе ги гледаме овие предности. Ние не треба да се направи нешто како глупави или можеби unintuitive што се јавите на функција наречена StrComp ако јас само сакаат да се тестираат дали односно вредноста не е еднакво на стрингот. Јас само може да се користи еднаква еднаквите, како би можел да се направи нешто друго. Значи има предност. Понекогаш, патем, можеби ќе види друго ако како еден збор, elseif. И тоа е во ред во PHP, како и. Па понекогаш може да се види тоа. Тоа не е печатна грешка. PHP, всушност, го разбира elseif. Јас не знам зошто тие одлучи да се спроведе тоа, но како што видовме многу пати во текот на нашата видеа досега, ние програмери го сакам, ако можеме да се прават работите брзо, така да се ослободиме од тој простор очигледно е голема предност. Значи, тоа е, ако и elseif. Ние исто така имаат троичен оператор, потсетиме прашалник на дебелото црево, за навистина краток формулар ако друго или условно разгранување. И очигледно, во овој, што ние се обидуваме да го направите тука се додели на променлива $ писмо или вистинити или лажни, зависност од тоа дали $ var е азбучен карактер. Така што ова е прилично слична на isalpha дека ние сме запознаени со од В. Ова е вид на еквивалент во PHP. Функцијата е очигледно наречен ctype_alpha, но тоа е како ние го направи тоа во PHP. Па сето ова е и ќе биде се, ако $ var е писмо, $ писмо е точно. Ако $ var не е писмо, $ писмо е лажна. Ние, исто така, имаат прекинувач изјави уште. Ние се потсетиме на оние од С, како и. Во самиот врв, таму, тоа е како тоа го правиме нешто како да стапите int или да добијат низа. Така што се PHP е вграден. Ние не треба CS50 библиотека веќе. Ние само може да ја користите функцијата readline. Она што се случува да направите е да се печати од пораката: "Вашата држава, Ве молиме, "а потоа трепка брзо чека на корисникот за да го внесете некои информации. Сега се забележи што друго можеме да направиме со прекинувачот. Ако сте го користеле порано, може да се сети дека прекинувачот е ограничена доста за цели броеви и знаци, но сега можеме да го користиме жици. И всушност, изјава на прекинувачот во PHP е сосема малку пофлексибилни од нејзината братучетка од В. Петелки. Исто како conditionals, сите Вашиот стар омилени се уште е таму. Имаме додека петелки, кои бројот од 1 до 100, во овој случај. Имаме направите додека петелки што се смета од 1 до 100, и ние имаме за петелки што се смета од 1 до 100. Па не и голем скок таму. Синтаксата е прилично многу исти, освен сега ние сме со користење Доларот променлива знак наместо за прогласување целобројни променливи или нешто слично за нашите шалтери. Тука е местото каде што нештата се многу подобро отколку Ц, иако. Низи. Така се потсетиме кога бевме Станува збор за Ц, со цел за нас да расте и се намалува комплети на информации, што ни е потребно да се најде решение за неплаќање со оваа идеја на поврзани листа, бидејќи С низи се фиксни во големина. Не можевме да ги намали. Ние не можевме да ги расте. Ние моравме да ги пренамени меморија и го направи сето ова лудило или користете поврзани листи, кои заземаат многу малку повеќе простор. Но, во PHP, низи се не се фиксни во големина повеќе. Тие може да расте и тие може да се намали. Значи, повторно, овие 20 години, кои постоеле Од првото издание на С и првата PHP ослободување, решивме дека, знаете, тоа ќе биде навистина голема ако би можеле да го направите тоа. И така ние се спроведува оваа. Па PHP низи не се фиксни во големина, и затоа што PHP навистина не имаат програмер пред се соочуваат со поими на видови, ние може да се меша типови на податоци во нашата низи, исто така. Значи, ние дури и не треба да ги користите сите цели броеви или сите лебдат поени, ние може да има микс на сите различни видови во една низа. Објавувајќи низа е прилично јасна. Тоа е само како и секоја друга променлива. $ nums = array (1, 2, 3, 4), низа се биде функција кој е изграден во PHP дека ќе се создаде низа за вас. Ова создава низа од четири вредности, броеви во овој случај, се нарекува $ nums. И има повеќе од еден начин да го направи тоа. И ние ќе треба да види овој многу во PHP. PHP е развиена од страна на многу различни луѓе и расте и расте и расте. Има обично не две- три начини да се направи нешто во PHP, има обично како 10 или 20. Тука е само уште еден заеднички начин да се изјаснат за низа. $ nums = квадратни Држач за 1, 2, 3, 4. Значи ова е вид на слични на агол С br-- кадрава заграда нотација, наместо. $ - или тоа ќе биде int nums плоштад загради е еднаква на кадрава заграда 1, 2, 3, 4. Во PHP е $ nums = плоштад загради, 1, 2, 3, 4. Но, и двете од овие примери тука да ми даде низа од четири во овој случај цели броеви. Што ако сакам да тактика нешто сега? Па јас само може да се каже $ nums 4, кои повторно, ние сме сè уште сметајќи од 0 овде во PHP, ќе биде петтиот елемент од низата. Јас само може да се каже тоа. Јас не одам за да страдаат од секунда вина, затоа што мојот е само низа ќе расте за да се приспособат тоа. Тоа е прилично добро, нели? И всушност, јас дури и не треба да се наведете каде што сакате да го стави. Јас само може да се каже ова и само таа тактика десно за да на крајот, или би можел дури и само речеме $ nums 20 или 1.000. Тоа навистина не е важно. Тоа е уште само ќе таа тактика право до крај. За да можам да расте, и ние сме as-- нема да го покрие во тука, но можам да се сплетка или лента елементи од низата, како и, и низа ќе се намали за да се приспособат дека сега празен или простор. Постои друг начин да се тактика нешто врз низа, кој е на функција наречена array_push. Значи, повторно, само оваа идеја да се биде можност да се прават работите на многу различни начини. Така што сум го видел три различни начини сега да тактика уште еден елемент врз низа. Па ова додава уште еден елемент до крајот на низа $ nums. И ние може да се измеша нашите типови на податоци. Па можев да имаат низа на не 1, 2, 3, 4, но 1, точно, 3, 4, каде точно е Булова, а потоа ако сакам да тактика на друг елемент за таа низа, можеби еден конец, стрингот "пет", би можел да го направи тоа. И сега ми низата би биде 1, тоа е вистина, 3, 4, пет. Зборот пет, а не на цел број 5. Толку многу флексибилност таму. Флексибилност добива дури и подобро, иако, затоа што се PHP е поддршка за нешто наречен асоцијативна низа. И ние вид на нејасно зборуваше за асоцијативни низи во С во контекст на хаш маси, бидејќи она асоцијативни низи се навистина сите за се што клучните мапирање вредност пар. И во овој случај, ако keys-- ние сме запознаени со низи од C, копчињата се индексни броеви. 0, 1, 2, 3. И вредностите се она што сметаме дека Низа 0, 1 низа, низа 2, и така натаму. Така што копчињата се индексира, и вредностите се она што е во таа локација низа, утврдени со тој индекс. Но, во PHP, ние не треба да го направите тоа Поимот на низа 0, 1 низа, низа 2 веќе. Сега можеме да го користиме вистинските зборови за да на сајтот клучевите на вредности. И така да можам да кажам нешто како ова. Можев да се создаде низа со користење на квадратни заградата синтакса како што следува. $ пици = квадратни заградата "сирење" и потоа овој вид на двојна стрелка нотација, 8.99 ", феферони," arrow 10.99-- 9,99, и така натаму. И така што се случува овде? Што сум јас, всушност, се прави? Јас сум создавање клучните мапирање вредност пар. Па наместо да се каже, на пример, пици 0, 1 парчиња, пици 2, Сега можам да кажам пици сирење, пици феферони, а се однесуваат на вредности поврзани со нив. Значи тука се нашите клучеви во зелена боја. Сирење, феферони, зеленчук, бафало пилешко. Еве на стрелката што го прави оваа клучна мапирање вредност пар. И тогаш тука се и вредностите на тоа место низа. Така, тоа е како да кажеш низа 0 еднакво на 8.99. Клучот е 0. Вредноста е 8,99. Сега можам да кажам низа сирење, или во овој случај пици сирење, кашкавал е клучот, и она што го најдете на пици сирење е 8,99. Тоа е вредност за која сметам дека таму. Па можам да кажам нешто како. $ пица сирење = 7.99. Велат дека јас сум имаат продажба. Сакам dis-- Сакам да се откажат од цената на пица сирење. Или јас да го користите зеленчук пица, како дел на состојба, или можам да додадете нов елемент во мојата низа, исто како и јас не можеше да стори претходно. Јас може да додадете нов елемент на оваа асоцијативна низа со клучот "сланина" и вредноста 13.49. Но, овој вид претставува проблем, ако мислите дека за тоа за една секунда. Како ќе iterate преку оваа низа? Нели? Во C, ние само ќе има за телефонска линија, обично, дека ќе се кандидира од 0 до големината на низата минус 1. Низата има n елементи во, на валидни индекси се 0 до n 1 минус. Па ние може да се користи за да се јамка чекор низ секој елемент. Но, тоа не е навистина случај веќе, нели? Сега каде што имаме пар клучеви вредност мапирање каде се клучевите зборови, како ние да iterate во текот на сите на зборови? Па, за среќа, PHP има начин да се справи со тоа исто така, и така ќе скокне назад да петелки за втор да се воведе четврти вид на јамка што постои во PHP нарекува foreach јамка. И што е foreach јамка прави е тоа е во основа иста идеја. Можете да го користите за било каков вид на низа. Но, тоа е во основа истата идеја како за телефонска линија, освен наместо да се користат индексни броеви, само имаат овој чуден синтакса каде ќе се јавите секој елемент име за потребите на овој циклус. Значи во овој случај, foreach ($ низа како $ клуч). Во суштина, како што коментар белешки, внатре во тоа foreach циклусот, тоа се случува да одам во текот на секој елемент на $ низа, што е типично ќе биде асоцијативна низа, но навистина може да биде било каков вид на низа што сакате во PHP. И секој пат дека во за телефонска линија можеби ќе рекоа $ низа квадратни загради $ i, може само да се каже $ клуч. Така што $ клучните станува алијас за секој индекс на вашиот PHP асоцијативна низа, и така можете да го користите како што. Така на пример, ние сме сега доби нашите пици низа. Јас сум вид на тоа напика во аголот таму за да можеме да го користите за да го направите брзо пример. Ако кажам foreach ($ пици како $ пица), добро, што се случува? Па, јас ќе одам да iterate преку секоја еден елемент на низа $ пици на, и со тоа, јас ќе одам да се јавите секој елемент, кога сум во внатрешноста на телото на кои за телефонска линија, $ пица. Значи тоа е еден вид на стенд-во, да се потсетиме, дека $ пица е стенд-во за велејќи $ пици квадратни загради $ i ако бевме користење за телефонска линија, каде што би можеле да одат од $ i = 0 за да се, во овој случај, $ i = 3. Ако немавме клучните вредност парови тука, ова ќе биде елемент на 0, 1, 2, 3, и ние ќе го користи за телефонска линија да се оди пици $ 0, пици $ 1, $ 2 пици, $ пици 3. Па сега само $ пица е замена за таа поединечна клуч. Значи она што е ова се случува да се печати? Јас сум печатење $ пица. Што сум јас ќе најдете at-- ако јас се печати $ пици, $ i? Нели? Ако јас одам да се печати на о елемент на пици, она што сум јас ќе ја печати? Одам да се печати од вредности на тоа место, нели? Како да сме биле прави ова во контекст на Ц, вообичаено не ги користат нашите iterator променлива, int i = 0, i е помал од 3, i ++, за печатење на 0, 1, 2, 3. Ние сме печатење низа 0, 1 низа, низа 2, 3 низа. И така, ова отпечатоци е ова. Ова е листа на цени. 8.99, 9.99, 10.99, 11.99. Сега брзо белешка овде. А foreach јамка не мора печатење на работите во ред. Тоа не е загарантирана. Тоа обично се прави. Тоа е обично врз основа на наредба на кои елементи се додадени во низа, па само носат тоа на ум. Тоа не може да биде во ред. Но foreach јамка ќе iterate низ секој елемент на низата во прашање. Во овој случај, повторно, таа низа е $ пици. Јас може да се промени на синтаксата, иако, ако Сакам двете клучот и вредност. Наместо да се каже $ пици како $ пица, можам да го кажам ова. И ако се погледне во она што сум подвлечени во зелено тука, тоа изгледа како клучен мапирање вредност пар. И така, ако you-- дури и ако не се целосно сигурни дека она што се случува да се направи, што веројатно може да се погоди дека $ прелив се случува да биде клучен во овој случај и $ цена се случува да биде на вредноста. Па јас сум замена сега секој елемент од $ пици како клучен пар вредност, и сега можам да се однесуваат на клучните и вредноста, кои би можеле да се најде, на пример, како што следува. "Целина" - ова е многу печатење случува here-- "целина" полнењето "пица чини $" цена, а потоа Јас се печати една период и обратна коса црта n. Па сега, најава повторно имаат пристап до клуч, $ прелив и вредност, $ цена. Па може да се погоди што е ова се случува да се печати? Има многу на печатени извештаи, но има само една обратна коса црта n, па затоа се случува да се печати нешто на една entire-- на една линија код. Ако можам да се однесуваат на клучните и вредноста, тогаш и сега, наместо само да биде во можност за печатење на цените, Јас може да се печати од нешто како ова. "Цела сирење пица чини 8,99 $." И сега јас сум со користење на сите на keys-- сирење, феферони, зеленчук, бивол chicken-- и вредностите. 8.99, 9.99, 10.99, 11.99 Па тоа е само на еден поинаков начин да се направи foreach јамка дека наместо само ви дава пристап до вредностите, тоа само дава you-- тоа ви дава пристап на клучеви и вредности. Па печатење информации. Јас веќе го сториле тоа за неколку различни начини, може да се забележи. Двете функции ние сме првенствено видел се печати и ехо. И за доста сите намерите и цели, тие се сосема исти. They're-- Има еден многу суптилен разлика што не е дури вреди навлегува во, но во основа насекаде можете да го користите за печатење што веројатно може да се користи ехо, како и. И тоа не е само две. PHP има многу различни начини да се печати работи надвор, а исто така има начини да се интегрираат променливи во средината на стрингот. Така се потсетиме од Ц, го прават сетам што функција може да се користат за замена на променливи во работите што сакате да испечатите? Најверојатно го користат овој функционираат доста. printf, нели? Значи ова е она што го имавме пред внатре од контекстот на нашата foreach јамка. Имавме овие пет одделни изјави за печатење, затоа што тоа е единствениот начинот на кој јас навистина знаеше во тоа време како да се печати пораки. Не знаев како да се интегрираат Променливата $ полнењето во мојата PHP код. Па, ако јас само преземени диви се погоди, printf, тоа всушност би работеле. printf е функција што можам да го користам во PHP, исто како и јас да го користите во В. И така нешто како ова, printf, еднаш, ние сме запознаени со тоа. Првиот% s се заменува со вредност од $ прелив. Второто% s се заменува со вредност од $ цена. И така јас interpellating, кој е само стилизиран начин да се каже јас сум држејќи се за варијабли во таа локација. Па јас сум приклучување $ полнењето каде црвена% s и $ цена која сината% s е, а потоа јас ќе ја добие пораката, "Цела сирење пица чини 8,99 $." Не е единствениот начин на кој можам да го направи тоа, иако. Можеби ќе сакате да го користите овој метод. Ова е всушност она што е најчесто наречен променлива интерпелацијата. Можам да го користам ехо. Јас може да се користи за печатење премногу, како што ќе видиме. Но, она што се случува овде? Прво на сите, јас треба да избега знакот за долар. Бидејќи се сеќавам, кога сме биле, всушност, печатење на цените на пици, Бев всушност ги форматирање како монетарната фигури со знак за долар. Но, ние сме со користење долар знаци, исто така, да претставуваат променлива имиња во PHP, а особено кога сум користење на овој метод на кадрава заграда променлива метод интерпелацијата, ми треба да избега мојот знак за долар, па тоа не мислам јас зборувам за променлива. Тоа се случува да се, всушност, буквално се печати знакот за долар. Толку вид да го analogize она што го гледате на крајот таму. Тоа всушност не печати обратна коса црта n, нели? Тоа отпечатоци од нова линија карактер. Оваа is-- тоа не се случува да го печати коса црта знакот за долар, тоа се случува да се печати само знак за долар карактер. Истата идеја. Избега секвенци, она што овие работи се нарекува. Но забележите дека јас не сум тоа било кој вид на% s замени, Јас сум само буквално приклучување во овие променливи. И така во this-- што ќе се случи тука е дека вредноста на $ topping-- повторно, само согласност со она што ние сме биле Станува збор за толку far-- сирење ќе добијат вклучени таму. И $ цена ќе биде она што вредност е на пици, загради, сирење, која беше 8,99. И така ова исто така ќе се печати "Цела сирење пица чини 8,99 $." И како што реков, јас може да се користи печати тука, наместо на ехо, и функционалност да биде прилично многу исти. Тоа ќе се печати од истото. Постои друг начин да го направи тоа, и ова е уште една предност на PHP работи со жици. Ние можеме да правиме низа сплет. Ние би можеле да го направите тоа во Ц, исто така, со користење на функција наречена strcat, Но, повторно, моравме да јавете се одделни функции. Тоа беше целата оваа збрка да се направи. Ние моравме да ги фунта-вклучуваат string.h. Тоа е производство, нели? Но сега јас само може да се користи оваа точка операторот да concatenate жици заедно. Па јас сум concatenating "целина" и тогаш без оглед на вредноста на $ прелив е, а потоа уште стринг, "трошоци пица $" а потоа било concatenating вредноста на $ цената е, а потоа и на самиот крај јас сум tacking на периодот обратна коса црта n. Па така ова исто така, би печати "во целост" - повторно, ако зборуваме за првиот елемент на таа пици array-- "Цела сирење пица чини 8,99 $." Период, обратна коса црта n, повторно, со на $ прелив и $ цена замена за она што го имавме е наведено во нашиот foreach јамка како клучни мапирање вредноста пар. PHP може да се справи со функции. Функции беа вид на составен дел на Ц, како што видовме. Како променливи, ние не треба да се наведете го видот враќање на функцијата, затоа што тоа не е важно. И ние не се определи типови на податоци на било какви параметри, затоа што тие не се навистина материја, како што видовме во PHP. Секоја функција е воведен со функцијата на клучни зборови. Тоа е како ние се покаже дека во PHP она што ние зборуваме за тоа е во функција. И ние не треба да се се справи со главните на сите, бидејќи преведувач, PHP преведувач, дела од врвот до дното, без разлика. Доколку смета дека може да се направи повик на функција, тоа ќе одат најдете на повик на функција, дури и ако тоа доаѓа подоцна. Но, тоа се случува да се прочита од врвот до дното, така што не треба да се определи, Еве каде да почне. Ви започне на алинеја 1 на вашиот PHP и работи надолу од таму. Значи тука е како ние ќе се создаде функција наречена hard_square. Тоа очигледно зема една параметар, кој јас го повикувам $ x. Оваа функција е комплицирано само за да се илустрира на различни работи. Ние се уште имаат врати вредности. Јас сум со користење за телефонска линија тука. Но, тоа е во основа, само, што е ова се сведува на е само $ $ x x пати. Она што јас го прават всушност е само додавање х х 0 пати или $ x на нула $ x пати. Но тоа е ефикасно точно исто како множење $ x пати $ x. Јас се уште може врати на вредност, $ резултат во овој случај, и јас сум направил некоја функција во PHP. Еве како можете да ја користите во контекст. Па можеби и јас сум во внатрешноста на некои PHP фајл. Известување во сино таму дека Јас сум користел Раздели мојата PHP, аглеста заграда прашалник PHP. Помеѓу оние кои се на сите на PHP дека сакам да пишувам. Па јас сум очигледно ќе get-- Одам да го извести корисникот да ми даде број, продавница, во којашто променлива, продавница во која Променливата $ x, она што ми го дадоа. Тогаш јас ќе одам да се одгласува hard_square од таа вредност, и очигледно ќе да тактика на нова линија како и, а потоа подоцна јас ќе дефинирање на функција, така hard_square дека кога ќе се направи јавам да hard_square, тоа го знае она што јас го зборувам. Сега, јас, исто така, би можело да се направи нешто како ова. Ова е малку поинаква. Тоа е речиси точно исто како и она што го видовме досега, освен наместо да се каже само $ x таму како параметар за да hard_square, Сакам да кажам дека $ x = 10. Значи ова е пример за дефанзивна програмирање, чува вашите програми против малициозни корисници. Ова е еден начин да се направи некои грешки проверка дали ние навистина не има како опција во В. Ние никогаш не може наведете на стандардната вредност на нешто. Ние секогаш треба да го проверат дали, на пример, ако се направи повик до GetString, тоа беше најправилно доколку веднаш откако ќе провери тоа, ние се провери дали стрингот дека корисникот ни даде не е еднаков на нула, бидејќи ние не сакаме да се започне работи со нула низа. Ете, тоа е начин да се заштитат од тоа. Ако корисникот не ни даваат нешто на некој начин, што ќе правиме? Па, ние само ќе се каже она што тие не ни даваат, ние сме само ќе го приклучиш во 10, наместо. Значи, ако тие не ни даде вредност, само го користите 10 по дифолт. И така тука, забележите дека јас сум одлуки на повик да hard_square, но не постои брза на корисникот, така? Јас сум само се прават празен повик. Но мојата функција hard_square очекува параметар. Што е ова се случува да се печати? Тоа се случува да се печати од 100, нели? Бидејќи корисникот не ми даде ништо. И така јас сум само ќе да се претпостави дека 10-- 10 е преддефинирана вредност. И така ова ќе се печати од 100 на посебна линија. PHP датотеки не треба да се биде само една датотека. Може да се комбинираат повеќе датотеки заедно, исто како што можете да во В. начин сме го правеле тоа во C е вообичаено да се направи # Include да се добие насловот датотеки влечат. Ние не го сторат тоа во PHP. Правиме нешто што се нарекува require_once. И потоа, тука е целата оваа работа, што е ова __dir__? Тоа е само за посебна променлива, или посебен константна, Навистина, што го одредува она што Вашата моментална директориум е. И така тоа се случува да се погледне во тековниот директориум за датотека наречена cs50.php Во овој пример, тука, и тоа се случува да се држиме таа датотека на врвот на вашиот PHP програма, под претпоставка дека ќе се стави на бара еднаш линија на врвот на вашиот PHP фајл. Па PHP е првенствено се користи, но не се користат исклучиво, како јазик за веб-базирани програмирање. Тоа е навистина како дошло до тоа да биде. Но, тоа е целосна јазик, како што видовме. Видовме доста сите нешта дека тоа може да го направи, кои се слични на C, а тоа може да се направи еден подлец на многу повеќе од тоа. Но, бидејќи тоа е целосна јазик и ние може да направи линија програмирање команда во неа. Можеме да се кандидира програми командната линија. Се што е потребно да извршите команда линија програма која е напишана во PHP е тоа што имаш PHP преведувач. Така, тоа е вид на аналогно има компајлерот на вашиот систем ако сакате да го компајлирате вашиот C код да ја претвори во извршна датотека. Што треба да се има на PHP преведувач што постои на вашиот систем така што ќе може да ги интерпретира PHP датотеки. Претпоставувајќи го, и обично оваа преведувач се нарекува PHP, и тоа е обично во комплет со повеќето преземања или инсталации на PHP дека можете да добиете на интернет, и, секако, името на PHP преведувач имаме во CS50, ИРО. Сите да направите е тип php фајл. И она што вашата програма случува да се направи е тоа е случува да се кандидира преку толкувачот, тоа е случува да се игнорираат сè што е не е во прашање меѓу mark-- или, аглеста заграда прашалник PHP, Раздели на PHP и го испечатите, и тоа ќе се протолкува и да се изврши код во внатрешноста на вашиот Раздели PHP. Значи, да се појави во текот на CS50 IDE и да го погледне во неколку PHP датотеки, водење на неколку PHP датотеки, во командната линија интерфејс на CS50 ИРО. Па еве сме во CS50 ИРО, и јас го зедоа за слобода за отворање на датотека наречена hello1.php. И очигледно, содржините на овој датотека се само Раздели на PHP таму, а меѓу нив, ехо ("Здраво, свет"). Ова е прилично едноставна PHP програма. Јас сум само ќе да дојдете долу на мојот терминален прозорец тука, а јас ќе одам да се тип на PHP hello1.php, притиснете ентер. Здраво свету. Тоа е веројатно она што сме биле Очекуваме тоа да се направи, нели? Ајде да одиме и да ги преземат уште еден поглед на програмата. hello2.php. Доста истото, Не многу се случува тука. Ова време, иако, јас ќе одам да се каже на корисникот за да ми даде нивните имиња. Јас сум со користење дека readline функција еднаш. $ име = readline. Тоа е брза, "Како ти е името?" Очигледно јас сум за печатење тоа е на посебна линија. И тогаш, па линија подолу дека ќе биде брз каде што корисникот може да влезе во нивно име. И тогаш јас сум со користење на малку променлива интерпелацијата тука на линијата 3 да се печати "Здраво" и без оглед на корисникот видови. Значи ова е аналогно на велејќи: Здраво, запирка,% s ако бевме користење printf во В. Па ајде да одиме и интерпретираат оваа програма. Значи, повторно, јас ќе дојдете долу на мојот терминален прозорец. PHP hello2.php. Како се викаш? Даг. Здраво, Даг. Јас исто така имам уште една датотека наречена hello3.php. Одам да исчистам екран со контрола L, а јас ќе одам да се изврши тоа. Како се викаш? Даг. Здраво, Даг. Па на однесување е идентична со hello2.php, но зошто е тоа hello3.php? Па, тука е разликата. Во овој случај, огласот дека на линија 1 тука, Имам нешто што не е помеѓу Раздели PHP. Јас сум само печатење out-- или јас само отчукува, "Како ти е името?" Кога PHP преведувач гледа ова, тоа нема идеја како да го толкувам како PHP, и така, наместо на неуспехот, тоа е само ќе да го плукаат. Па известување на линијата 3 сега, јавете ми за да readline, нема брза повеќе. Јас сум само навистина се случува кога to-- на PHP преведувач гледа ова, тоа се случува да се печати "Како се викаш?" Потоа го гледа, ох, во ред, here's-- се друго ќе биде толкува како PHP, па тоа е зошто тоа функционира. Јас не мора да значи да го извести to-- на корисникот во внатрешноста на readline, Јас само може да го имаат надвор на Раздели на PHP и им овозможуваат на преведувачот само да го испечатите за мене. Па вие всушност не само што имаат да се има еден збир на Раздели PHP во својата програма. Ти всушност може да има неколку од нив, отворање и затворање како што е потребно. Па ајде да ги разгледаме на неколку програми во CS50 ИРО каде сме илустрираме ова идејата да има повеќе групи на одвоени PHP. Добро, па ја отворам датотеката тука се нарекува add1.php. И да се забележи она што се случува овде. Како и порано, имам PHP единствен сет на Раздели. Одам да се печати од порака: "Ве молам да ми даде број." Тогаш јас ќе одам да се чита линија и чувајте го во Променливата $ num1. Тогаш јас ќе одам да се печати повторно. Дај ми вториот број. Читај линија од страна на корисникот, продавница што и ја внеле во во $ num2. Додадете ги заедно и дека ги чувате резултира со променлива наречена $ сума, а потоа печати од ", на Збирот на овие два броја е ", а потоа interpellate таму на променливата $ сума. Па да ја извршите оваа преку преведувач да потврди дека ова е она што го очекуваме. PHP add1.php. Те молам дај ми некој број, 3. Да ми даде вториот број, 4. Збирот на овие два броја е 7. Тоа е 3 и 4. ВО РЕД? Па ништо страшно фенси таму. И сега ајде да се отвори add2.php. Еве, јас имам неколку PHP одвоени групи таму, нели? Точки 1, алинеја 1 и 3-- 3 немаат Раздели PHP. Па кога толкувачот ги гледа нив, тоа е само ќе плукаат точно она што го напишале таму. Така што каде сум прават сите мои прашува. На алинеи 2 и 4, ние гледаме на многу запознаени $? php вид на Раздели, па тие две линии се ќе се изврши како што се PHP. А потоа и на алинеја 5, имам овој чудно нешто, токму тука, нели? Овој агол заградата прашалник знак за еднаквост. Јас дури и ќе зумирате малку понатаму. Може да се види тоа е она што јас сум зборуваме за право, таму, овој $? =. Излегува дека тоа е толку вообичаени што од причина што ние се отвори збир на PHP Раздели е да се печати една вредност. А тоа е сите ние ќе треба да се направи. Но, има уште стенографија за тоа. $? = Е PHP стенографија за велејќи нешто како $? Php ехо збирот на num1 и num2. Така што ова е само уште една стенографија за тоа. Значи, ако јас ја извршите оваа програма, PHP add2.php. Јас ќе зумирате долу малку. Те молам дај ми некој број, 4. Да ми даде вториот број. И бидејќи јас не се грижам за тоа типови на податоци во PHP, можам да кажам 4.8. Збирот на овие два броја е 8,8. Таа функција се однесува доста токму исто како што би се очекувало, исто така. И имам уште една отворена до тука наречен dice.php. Обиди се со ова повторно. Имам еден уште тука се нарекува dice1.php, кој исто така, да се види, има дека аглеста заграда прашање одбележи знак за еднаквост нотација во таму, не се забележи дека во овој случај јас сум повик на функција Ранд, кој како што може да се очекува генерира случаен број. "Ти валани", а тоа се случува да пресмета некој случаен број, МО 6 + 1. Така што ќе ми даде број во опсег од 1 до 6. Се сеќавам дека МО 6 ќе ми даде голем број во опсег од 0 до 5, но ако сум симулирање генерал ролни, што е она што јас го правам тука, Не сакам овие коцки од 0 до 5, сакам коцки кои одат 1-6. И така ова е начин да се добие ме во опсег од 1 до 6. Јас го правам тоа двапати. Значи очигледно сум возен две коцки во оваа програма. Па јас ќе го исчистите мојот екран, и Јас ќе го направи PHP dice1.php. Ви валани 4 и 2. И ако јас ја стартувате програмата повторно, ќе навива 5 и 5. Така секој пат кога ќе ја стартувате програмата, Јас сум добивање на различни броеви, затоа што секој пат кога ќе се направи Значи, тоа е почеток. Тоа се случува да се генерираат нови поставени на случајни броеви за мене. Значи, ако ние сме се користи за управување со програми од C, ние сме се користи за пишување на ./ името на една програма, нели? Тоа е како ние го направиле сите на нашите програми во C до сега. Можеме да го направите тоа во PHP, како и со додавање на нешто што се нарекува на shebang до врвот на нашите PHP фајл. Знам дека е малку глупо збор. Тоа е краток за хаш тресок. Тоа е во првите две букви таму. Се сеќавам што ние го нарекуваме извичник често страшен тресок во компјутерската наука. Таа, исто така може да биде за остар тресок. Има неколку начини за да го протолкува. Но, тоа е во основа на посебен вид на заповед, што PHP преведувач разбира како, ох, сакам можете да ја извршите оваа програма, што е очигледно / user / bin / PHP, која е, всушност, каде што PHP преведувач конкретно живее на нашиот систем. Па it's-- она ​​што се случува овде е толкувачот разбира, ох, Јас сум очигледно би требало да го користат во оваа програма да ја извршите оваа датотека. И така ви овозможува за да го прескокнете во текот на чекор на морале да се каже PHP something.php. И, уште улов тука, а тоа е дека ако ние сакаме нашите програми за да се работат како што треба, ние треба да се направи нешто што се нарекува промена пермисии. И ние ќе go-- а ние се зборува малку малку повеќе за датотеката промени дозвола во нашата видео на MVC, но доволно е да велат дека тоа е она што треба да направите со цел да се направат вашиот .php датотека извршна. Па ајде да ги разгледаме во тоа како конечна нашиот пример во текот во CS50 ИРО. Па тука во IDE имам две датотеки во оваа Директориум на PHP кои се појавуваат да не биде нарекува .php. Имам функција наречена add-- Имам датотека наречена add3 и фајл наречен dice2. Значи, да се земе брз изгледа и ќе отвори add3. И како што можете да видите, на почетокот на мојата датотека Имам оваа shebang, нели? Ова хаш знак извичник. Сега, ќе исто така, можеби известување дека поради некоја причина, Јас немам никакви синтакса истакнување повеќе, и тоа е она што се алудира погоре, која беше дека ако јас не името на мојата датотека .php, јас не се во корист на осветлувањето повеќе. Оваа податотека е само се нарекува add3. Така што можам да се пушта и подоцна со ./ add3 и не ./ add3.php. Па тоа е уште reason-- во ред, таа е актуелна PHP, но тој не го синтакса нагласени, бидејќи оваа датотека, не се вика something.php. Тоа е единствената вистинска разлика тука, плус shebang. Да видиме што се случува кога Се обидувам и да ја стартувате програмата. ./ Add3, исто како што би направиле со Ц. баш. ./ Add3 забранет. Тоа е она што ви се случува за да ја видите ако го заборавите да се користи команда chmod да се промени дозволите на датотеката. Како што се испоставува, редовни PHP додадени фајлови: не само може да биде погубен. Тие може да се толкува, но ние сме прави нешто малку поинаку овде. Ние сме негово извршување. И така јас треба да додадете на дозвола на извршување на chmod + x да add3. Тогаш можам да кажам ./ add3. Те молам дај ми го бројот. 5, 6. Збирот на овие два броја е 11. Слично на тоа, јас веќе chmoded dice2, па можам да се впишат само ./ dice2, ви валани 1 и 1, можете привали 5 и 4, и така натаму. Така што е доста Идејата на синтакса PHP, нели? Има многу да се добие преку, знам. Но се надевам дека сте виделе сега дека PHP не е навистина толку различни од C и навистина ни дава можност да се работи до еден степен или два. Ние навистина не треба да се грижите премногу about-- ние навистина не мора да се грижи премногу за Детали на ниско ниво ние мораше да се грижите за со C, нели? Ние можеме да се фокусираме на повисоки ниво работи дека PHP ни овозможува да се направи и да се преземат за готово дека тоа ќе работат за нас. Па тоа ни дава можност сега, транзиција од C до PHP, да се направи на програми кои се многу повеќе комплекс, а можеби и многу повеќе робустен. Па се надевам дека ќе се забавувате работна со PHP, и јас сум Даг Лојд. Ова е CS50.