Дъг LLOYD: Така че ние сме свършили много работа в C, и C е наистина страхотно език, защото тя дава възможността да се потопите наистина ниско ниво в своите програми. Имаме възможност да правим неща, като Наистина минути като манипулиране индивидуални байта памет. Спомнете си, че наистина Указатели ни позволи тази гъвкавост. Но винаги трябва да имаме това ниво дребнозърнест на подробност в нашите програми? Вероятно не, нали? И ако ще да има компромис между това да бъдеш в състояние да направи много, много минутни неща и много, много големи неща, че ние не трябва да се мисли за, ние не трябва да се приложат тези наистина големи идеи, ако те са вече построени в за нас, принцип за изграждане на голям програми или големи проекти, ние вероятно сме се заблуждават от страна , че е по-език неща построена през за нас, вместо да се налага неща на ниско ниво. И това е, когато PHP наистина идва инча Сега, една от причините че ние учим PHP в CS50 е, че това е силно вдъхновен от C. И всъщност, по мое мнение, там са наистина две прогениторни езици, които са много чести в днешно време. C и LISP. И те са потомствени езици защото всяка друга модерна програмиране език, който е разработил Оттогава е вдъхновен от една или друга синтактично. PHP е много подобен синтактично до C, докато езици като схема, Например, което може би сте чували за, е силно вдъхновен от език наречено LISP, която е по-стар език. Така че причината да преподават PHP в CS50 е, че, знаейки C като фундаментално както го правите в този момент, бране на PHP, който ви дава на умение да прави нещата много по-високи нива от C прави, не е че голяма част от препятствие, защото ти вече имаш основната идея на синтаксиса. C е бил около продължение на почти 45 години в този момент. PHP е бил около продължение на около 20 години. И с това, че 25 години между тях, програмисти определя, че те биха много по-скоро имат по-високи способности ниво, и грешките и борбите от 20-те години в между довело до PHP и други съвременни езици. Голям избор на PHP е език за софтуер че allow-- за софтуер that-- където можете Трябва да правим неща, които в C всъщност са сложни. Така например, работи с низове в C е много сложно, защото както знаем, низове в C са наистина само на масиви от символи. Това не е вграден тип данни. Или може би по-фундаментално, нещо, което дори не покрива в C, Ами ако трябва да направите, някои компютърните мрежи? Всичко е наред? C има способността да го направя, но това е толкова тайнствена и толкова трудно да всъщност правят. Не би ли било хубаво, ако език имаше вграден, лесен начин да приложат в мрежа? И PHP е език, който прави, че, или улеснява, че доста повече. Както казах, PHP е много силно вдъхновена от C. Синтаксисът е много подобна. И така трябва да се надяваме, направи преминаване от една към друга малко по-мек, отколкото някои други езици биха могли да бъдат. За да започнете да пишете PHP, просто отвори файл с .php разширението на файла. Технически това не е всъщност е необходимо, но ако искате неща като синтаксис подчертаване на IDE, така че този тип имена или имена на променливи, функции, знаете ли, ключовите думи на езика са подчертани в специфичен цвят, обикновено искате да зададете име на вашите файлове с конкретен файлово разширение. Така че ние сме на име нашия файл с .php разширение, но след това също с PHP, всички кода на PHP пишем в тази файл трябва да бъде затворен в тези PHP разделители, които виждаме тук на екрана. Angle скоба? PHP, за да започнете. След това пишем всички наши PHP код, който ние искаме по средата. И тогава ? ъгъл скоба, за да затворите. Ако не направим това, тогава какво ще се случи? Това няма да се срине. Това няма да Наистина съсипе нашата програма. Но това няма да има в смисъл, че ние искаме. Какво ще се случи, наистина, е че когато ние се опитваме и да стартирате тази програма, не всичко между тези разделители ще бъдат отпечатани дословно. Това няма да действително изпълнение на код, то се случва да просто го разпечатате дословно. А защо е така? Така че C е, което е известно като компилиран език. Вие вероятно сте запознат с етапа на вземане на вашите програми, завъртане на .c файловете и .h файловете в един-единствен изпълним с грим, по-специално използване Звън като наш компилатор. PHP, обаче, не получите този еквивалент. PHP е това, което се нарича интерпретиран език. И какво означава това? Е, това означава, че ние не трябва да конвертирате нашата изходния код на нули и единици предварително. По-скоро, че има една програма, която също се нарича PHP, който разбира и PHP може нещо да го направи в движение. Това всъщност не е точно точна, но това е доста добра аналогия от това, което се случва. Това тълкуване на тези, нули и единици в движение. И така, ако тя не знае как да обработвате нещо, ако тя не знае как да процес PHP, най-вероятно Исках да се сложи този текст там, нали? Може би е искал да постави кода в там, дори и ако това не е между PHP-- разделителите на PHP. But-- така че не става за да го изтриете за вас, това е просто ще основно я изхвърлете. Така че това се случва, за да отпечатате тя към екрана. Това изглежда като тя е лоша нещо, но всъщност това е Ще бъде наистина нещо добро, тъй като ние ще виж, когато говорим за PHP уеб развитие, защото това означава, можем разнообразявам PHP и HTML. Можем да ги използват заедно, за да създаване на по-динамичен уеб страница. Но повече за това в видео на PHP уеб развитие. Така че какъв е синтаксиса на PHP? Това е, което това видео е за всички. Нека поговорим за това. Така че, за да започнете, променливи. Съществуват PHP променливи. Има само две големи разлики от C. Първата е, че има Не Тип спецификатор. Ние не трябва да кажа, вътр, Чар, флоат, всички тези неща. Ние не трябва да се случва повече. PHP е модерен език. Това мога да разбера какво сте опитвате да направите или да направите най-добрия Предполагам, че да това, което се опитвам да направя. Така че това е доста приятен. Другото нещо е, че всички променлива имена трябва да се започне с знак за долар. Това е просто нещо, за да свикнеш. Това е малко странно, защото това е така, че PHP може да разбере какво е променлива и какво не е. Така че всяка променлива име започва с знак за долар. Така че в C бихме могли да кажем нещо като този, инт х = 54. Ние не трябва да се случва повече в PHP. Ние можем просто да кажем $ х = 54. И бихме могли да кажем, например, в C, ако бяхме паунд-включваше .h CS50 заглавния файл, можем да кажем, низ израза = "Това е CS50." Ние не трябва да направите, че в PHP, все пак. Ние можем просто да кажем $ израза = "Това е CS50." И всъщност, сега е низ вграден тип данни в PHP, или по-скоро разбира, PHP какво е низ. Това е отделна от масив на героите, като тя е в C. All любимата си условни конструкции от C все още са на разположение за да можете да използвате. Така че не е голяма преход там. Ние можем да say-- можем да имаме ако изказвания като това. ако $ ш 43, или $ г = 15. Така че това е доста ясен. Ние можем да имаме, ако и другаде. Ние можем да имаме, ако и друго, ако. И забележи нещо доста приятно тук, а това е нещо като един от тези, предимства на PHP срещу C, известие каква функция ние не използвате тук? Използваме == да сравните променлива, $ име, в низ. Ние не може да направи това в C, нали? Ние трябваше да се използва функция, наречена StrComp или StrEndComp или някоя на свързаните с него братовчеди. И така, вече виждаме тези предимства. Ние не трябва да се направи нещо като глупаво или може би неинтуитивното както наричаме функция, наречена StrComp ако просто искате да тествате дали една стойност се равнява на низ. Можех просто използвайте равнява равни, като не можех да направя нищо друго. Така че има предимство. Понякога, между другото, може да се виж друго, ако като една дума, ElseIf. И това е ОК в PHP, както добре. Така че понякога може да се види, че. Това не е правописна грешка. PHP всъщност разбира ElseIf. Аз не знам защо те реши да приложи, че, но както сме виждали много пъти цялата ни клипове досега, ние програмисти го обичам, ако можем да направим нещата бързо, така да се отървем от това пространство очевидно е голямо предимство. Така че това е, ако и ElseIf. Ние също имаме третичния оператор, изземване въпросителен знак на дебелото черво, за наистина кратка форма, ако другаде или условно разклоняване. И очевидно, в това, това, което ние се опитваме да направим тук се присвоява на променливата $ писмо било вярно или невярно, в зависимост от това дали $ Var е буква от азбуката. Така че това е доста сходен с isalpha че сме запознати с от C. Това е нещо като еквивалент в PHP. Функцията е очевидно наречено ctype_alpha, но това е как го правим в PHP. Така че всичко това ще бъде е, ако $ Var е писмо, $ писмо е вярно. Ако $ Var не е писмо, $ писмо е фалшиво. Ние също имаме ключ отчети все още. Припомняме, тези от C, както добре. На самия връх има, това е как правим нещо като GET инт или да получите низ. Така че PHP е, че построен инча Ние не се нуждаем от CS50 библиотеката вече. Ние можем просто използвайте функцията Readline. Какво, че ще ходи да направите, е печат от съобщението, "Вашата държава, моля ", и след това да мига бързо чака потребителят трябва да въведе някаква информация. Сега забележи какво друго можем да направим с превключвател. Ако сте го използвали преди, може би си спомняте, че превключвателя се ограничава до голяма степен да числа и герои, но сега можем да използваме струни. И всъщност, отчета за превключване в PHP е съвсем малко по-гъвкав от братовчед си от C. Loops. Точно като условни, всички старите си любими са все още там. Имаме докато вериги, които разчитат от 1 до 100 в този случай. Ние правим докато примки че брои от 1 до 100, и ние имаме за вериги че брои от 1 до 100. Така че не е голям скок там. Синтаксисът е доста много точно същото, освен сега ние използваме долара променлива знак вместо за обявяване на целочислени променливи или нещо подобно на нашите броячи. Тук е мястото, където нещата стават много по-добре, отколкото C, все пак. Масиви. Така спомням, когато бяхме Говорим за C, с цел за нас, за да растат и да се свие комплекти от информация, ние трябваше да сортирате за неизпълнение на задълженията на тази идея на свързан списък, защото C масиви бяха фиксирани по размер. Не успяхме да ги свие. Не успяхме да ги отглеждат. Ние трябваше да се преразпределят памет и да правят всичко това безумие или да използвате свързани списъци, които отнеме доста повече пространство. Но в PHP, масиви са не е фиксирана в размер на повече. Те могат да растат и те могат да се свие. Така че отново, тези 20 години, които са съществували между първото издание на C и първата PHP освобождаване, ние решихме, че, нали знаете, това ще бъде наистина страхотно ако можем да направим това. И така, ние изпълнява това. Така PHP масиви не са фиксирани в размер, и защото PHP всъщност няма има програмист предна понятия от типа, ние можем да се смесват типове данни в нашите редици, също. Така че ние дори не трябва да се използват всички цели числа или всички плаващи точки, ние можем да имаме смесица от всичко различни видове в един масив. Деклариране на масив е доста ясен. Това е точно като всяка друга променлива. $ Nums = масив (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 или 1000. Това няма значение. Тя все още просто ще тя халс точно до края. Така че аз може да расте, и as-- сме Няма да го покрие тук, но мога да снаждане или ленти елементи от масива, както и, и масива ще се свие за настаняване че сега липсва или празно пространство. Има и друг начин да халс нещо върху масив, което е функция, наречена array_push. Така че отново, точно тази идея, че са в състояние да направи неща, които много различни начини. Така че сме виждали три различни начина сега да халс друг елемент върху масив. Така че това добавя още един елемент до края на масива $ Nums. И ние можем да смесваме нашите типове данни. Така че аз може да има набор от не 1, 2, 3, 4, но 1, вярно, 3, 4, където вярно е Булева, и след това ако искам да халс на друг елемент към този масив, може би низ, низа "петица", което можех да направя това. И сега ми масив ще да бъде 1, вярно, 3, 4, пет. Думата пет, а не цялото число 5. Така че голяма гъвкавост там. Гъвкавостта получава още по-добре, все пак, защото PHP има поддръжка за нещо наречено асоциативен масив. И ние някак смътно говорихме за асоциативни масиви в C в контекста на хеш таблици, защото какво асоциативни масиви са наистина всичко около правят ключовата съпоставяния стойност чифт. И в този случай, ако keys-- ние сме запознати с масиви от C, клавишите са числа в индекса. 0, 1, 2, 3. И стойностите са това, което ние откриваме, че масив 0, масив 1, масив 2, и така нататък. Така че ключовете са индекси, и стойностите са това, което е в това населено място масив, посочен от този индекс. Но в PHP, ние не трябва да направите това понятие за масив 0, масив 1, масив 2 вече. Сега можем да използваме действителни думи да картографира ключове за ценности. И така ми се да кажа нещо подобно. Можех да се създаде масив с помощта на квадратни скоби, както следва. $ пици = квадратна скоба "сирене" и след това този вид на двойна стрелка бройна система, 8.99 ", пеперони," стрелка 10.99-- 9.99, и така нататък. И така, какво става тук? Какво съм аз всъщност прави? Аз съм създаване на ключови съпоставяния стойност двойки. Така че вместо да каже, например, пици 0, 1 парчета, пици 2, Сега мога да кажа, пици сирене, пици пеперони, и се отнасят до стойностите свързани с тях. Така че тук са нашите ключове в зелено. Сирене, пеперони, зеленчуци, биволско пиле. Тук е от стрелата, която прави този ключ картографиране стойност чифт. И след това тук са стойностите на това място масив. Така че това е като да кажеш масив 0 равнява 8.99. Ключът е 0. Стойността е 8.99. Сега мога да кажа, масив сирене, или в тази При пици сирене, кашкавал е ключът, и това, което аз намирам в пици сирене е 8.99. Това е стойността, която аз намирам там. Така че мога да кажа неща, които харесваш. $ пица сирене = 7,99. Кажете аз съм като една продажба. Искам dis-- искам да се откажа на цената на пицата на сирене. Или мога да използвам зеленчука пица, като част от състоянието, или мога да добавя нов елемент в моята масив, точно като не можех да направя по-рано. Мога да добавя нов елемент към тази асоциативен масив с ключ "бекон" и стойността 13.49. Но този вид въвежда проблем ако мислите, че за това за секунда. Как бихме обхождане чрез този масив? Нали така? В C, ние просто ще има за линия, обикновено, че ще се проведе от 0 до размер на масива минус 1. Масивът има п елементи при това валидни индекси са 0 до п минус 1. Така че ние може да се използва за да линия стъпка през всеки един елемент. Но това всъщност не е случаят вече, нали? Сега, когато имаме двойка ключове стойност съответствия, където клавишите са думи, как да обхождане всички думи? Е, за щастие, има PHP начин да се справят с този също, и така ние ще скочи обратно да примки за втори да се въведе и четвърти вид линия, която съществува в PHP нарича foreach цикъл. И какво е foreach цикъл прави е това е основно същата идея. Можете да го използвате за всякакъв вид масив. Но това е в общи линии същата идея като за цикъл, освен вместо използване индекси, просто имат този странен синтаксис, където ти се обадя на всеки един елемент име за целите на този цикъл. Така че в този случай, foreach ($ масив, колкото $ ключ). По принцип, като този коментар бележки, вътрешността на тази foreach цикъл, то се случва да разясни всеки един $ елемент на масив, който обикновено е Ще бъде асоциативен масив, но наистина може да бъде всякакъв вид масив който искате в PHP. И всеки път, че в а за цикъл може да се казал $ масив квадратни скоби $ аз, бихте могли просто да кажем $ ключ. Така че $ ключ става псевдоним за всеки индекс на вашия PHP асоциативен масив, и за да можете да го използвате като това. Така например, ние сме Сега имам нашия пици масив. Аз бях един вид го пъхна в ъгъла там за да можем да го използваме, за да направим един бърз пример. Ако кажа, foreach ($ пици като $ пица), добре, какво се случва? Е, аз отивам да превъртите през всеки един елемент от масива $ пици на, и по този начин, аз отивам да се обадя всеки елемент, когато съм вътре на тялото на тази линия за $ пица. Така че това е нещо като стенд-в, изземване, че $ пица е дубльор за казвайки $ пицарии квадратни скоби $ I ако бяхме с помощта на линия за, където ние може да отиде от $ I = 0 да, в този случай, $ I = 3. Ако ние не разполагаме с ключови двойки стойности тук, това ще бъде елемент 0, 1, 2, 3, и ние ще се използва за цикъл да отида $ пици 0, $ пицарии 1, $ 2, пицарии $ 3 пици. Така че сега само за $ пица е заместване за това лице ключ. И така, какво е това щеше да разпечатате? Аз съм отпечатване $ пица. Какво съм аз ще намеря at-- ако разпечатате $ пици, $ аз? Нали така? Ако аз отивам да разпечатате на Ith елемент от пици, това, което съм аз ще печатате? Отивам да разпечатате стойности на това място, нали? Подобно, ако правехме това в контекста на С, ние обикновено не използваме итератор променлива, Int I = 0, и е по-малко от 3, аз ++, за да разпечатате 0, 1, 2, 3. Ние сме отпечатване масив 0, масив 1, масив 2, 3 масив. И така, какво е това отпечатва е това. Това е списъкът на цените. 8.99, 9.99, 10.99, 11.99. Сега един бърз бележка тук. A foreach цикъл не е задължително разпечатате нещата в ред. Това не е гарантирана. Той обикновено се прави. Това обикновено се основава на реда, в елементи, които се добавят към масива, така че просто носят, че в ума. Той може да не е в ред. Но един foreach цикъл ще обхождане през всеки един елемент на масива под въпрос. В този случай, отново, че масив е $ пици. Мога да промените синтаксиса, все пак, ако Искам двамата ключа и стойността. Вместо да кажем $ пици като $ пица, което мога да кажа това. И ако се вгледате в това, което съм подчертава в зелено тук, тя изглежда като ключов картографиране стойност чифт. И така, ако you-- дори и да не са напълно сигурен какво ще прави, Вероятно можете да се досетите че $ топинг се случва за ключа в този случай и $ цена ще е стойността. Така че аз съм се замести сега всеки елемент от $ пици като двойка ключове стойност, и сега може да се отнася до ключ и стойността, която по-удобно, например, както следва. "Цяла" - това е много печат става here-- "Цяла" топинг "пица струва $" цена, а след това I разпечатате период и наклонена черта п. Така че сега, предизвестие отново имам достъп до ключ, $ топинг, и стойност, $ цена. Така че може ли да се досетите какво е това ще се разпечатва? Има много неща, на печатащите отчети, но има само една наклонена черта п, така че ще се отпечата нещо на един entire-- на един ред код. Ако мога да се позова на клавиша и стойността, то сега, вместо просто да е в състояние да разпечатате на цените, Мога да разпечатате нещо подобно. "Цяла сирене пица струва $ 8,99." И сега аз съм с всички от keys-- сирене, пеперони, зеленчуци, биволско chicken-- и ценностите. 8.99, 9.99, 10.99, 11.99 Така това е просто различен начин да се направи foreach цикъл, че вместо Просто ви дава достъп до стойностите, той просто дава you-- го дава достъп до ключовете и стойностите. Така отпечатване информация. Вече съм го правил няколко различни начини, може би сте забелязали. Двете функции с които сме се предимно виждал са печатни и ехо. И за доста много всички намерения и цели, те са абсолютно еднакви. They're-- има много коварен разлика, че дори не е на стойност забъркват, но в общи линии навсякъде можете да използвате за печат, вероятно можете да използвате ехо, както добре. И това не е само две. PHP е много различно начини за печат на нещата, и той също има начини да се интегрират променливи в средата на низ. Така извикайте от C, което правите помня какво функция можем да използваме, за да замени променливи в неща искаме да разпечатате? Вие вероятно използвате този функционира доста. ФОРМАТ, нали? Така че това е, което имахме преди вътре от контекста на нашата foreach цикъл. Имахме тези пет отделни изявления за печат, защото това беше единственото начин аз наистина знаеше в момента как да разпечатате съобщения. Аз не знам как да се интегрират променлива $ топинг в моя PHP код. Е, ако просто взема диво предположение, ФОРМАТ, тя всъщност би работил. ФОРМАТ е функция, която мога да използвам в PHP, точно като мога да го използвам в C. И така, нещо като това, ФОРМАТ, отново, че сме запознати с това. Първата% те се заменя със стойността на $ топинг. Вторият% те се заменя със стойността на $ цена. И така, аз съм interpellating, който е само един луксозен начин да казва аз съм залепване на променливи в това място. Така че аз съм включите $ топинг където червена% ите е и $ цена където синьото% S е, и тогава аз ще получите съобщение, "Цяла сирене пица струва $ 8,99." Не е единственият начин мога да го направя, все пак. Може би щях да искате да използвате този метод. Това е всъщност това, което е най-често нарича променлива Питане. Мога да използвам ехо. Аз може да се използва за печат прекалено, както ще видим. Но какво се случва тук? На първо място, трябва да избягат знака за долар. Защото не забравяйте, когато бяхме в действителност отпечатване на цените на пиците, Аз всъщност ги форматира, защото паричните фигури с знак за долар. Но ние използваме доларови знаци също да представляват имена на променливи в PHP, и по-специално, когато съм използването на този метод на Кърли презрамки променлива Питане метод, имам нужда да избяга ми знак за долар, така че това не е така мисля, че аз говоря за една променлива. Това ще действителност, буквално отпечатате знак за долар. Така че нещо го подобен съм да това, което виждате в края там. Той всъщност не принт наклонена черта п, нали? Той отпечатва нов ред характер. Това is-- това няма да принт наклонена черта знака за долар, то се случва да разпечатате само знак за долар характер. Същата идея. Бягство последователности, това, което тези неща се наричат. Но забележете, че аз не правя каквато и да е% S замествания, Аз съм просто буквално включване в тези променливи. И така в this-- какво ще се случи тук е, че стойността на $ topping-- отново, Просто съответствие с това, което ние сме били говорим за така far-- сирене ще получите включен там. И $ цена ще бъде каквото стойност не е най пици, квадратни скоби, сирене, което е 8.99. И така, това също ще отпечата "Цяла сирене пица струва $ 8,99." И както казах, мога да използвам отпечатате тук вместо ехо, и функционалността бъде доста много точно същото. Това ще отпечата едно и също нещо. Има и друг начин да го направя, и това е още едно предимство на PHP работа с низове. Ние можем да направим съединяване на низове. Бихме могли да направим това в C, също, с помощта на функция, наречена strcat, но отново, ние трябваше да наричаме отделни функции. Това беше цялата тази бъркотия да се направи. Ние трябваше да паунд-включва string.h. Беше производство, нали? Но сега може просто да използвате тази точка оператор да свързвам струни заедно. Така че аз съм слепване "Цяла" и След това, независимо от стойността на $ топинг е, и след това още низ, "разходи пица $" и след това слепване каквото стойността на $ цена е, и след това в самия край съм лепнали за период наклонена черта п. И така, това също така би разпечатате "Цяла" - отново, ако ние не говорим за първия елемент на това пици array-- "Цяла сирене пица струва $ 8,99." Период, наклонена черта N, отново, с на $ топинг и $ цена заместване за това, което бяхме определено в нашия foreach линия като ключ картографиране на стойност чифт. PHP може да се справи функции. Функции бяха нещо като неразделна част C, както видяхме. Подобно на променливи, ние не трябва да се посочете вида замяна на функцията, защото това няма значение. И ние не уточняват типове данни на всички параметри, защото те наистина не материя, като сме виждали в PHP. Всяка функция се въвежда с функция за ключова дума. Ето как можем да се посочи, че PHP това, което ние не говорим за е функция. И ние не трябва да се се справят с основната на всички, защото преводачът, РНР преводач, работи от горе до долу, независимо. Ако счете, можете да направите извикване на функция, тя ще отидем да намерим функцията обаждане, дори ако става въпрос по-късно. Но то се случва да чете отгоре дъното, така че ние не трябва да се уточни, Тук е мястото, където можете да започнете. Започвате на линия 1 на вашия PHP и работи от там. Така че тук е как ние ще създадем функция, наречена hard_square. Той очевидно има една параметър, който се обаждам $ х. Тази функция се усложнява просто да илюстрират различни неща. Все още имаме ценности връщане. Аз съм с помощта на линия за тук. Но това е основно само, какво е това възлиза на е само $ х пъти $ х. Какво съм аз всъщност прави е просто добавяне х 0 х пъти или $ х до нула $ х пъти. Но това е ефективно точно същото като се умножи $ х пъти $ х. Все още мога да върне стойност, в този случай $ резултат, и съм направил функция в PHP. Ето как можете да го използвате в контекст. Така че може би аз съм вътре на някои PHP файл. Забележете, че там в синьо Ползвал съм разделители моите PHP, ъгъл скоба въпросителен знак PHP. Между тях са всички РНР, че искам да пиша. Така че аз съм очевидно ще get-- Отивам да се напомни на потребителя да ми даде номер, магазин, който променлива, се съхранява в тази променлива $ х, каквото и да ми даде. Тогава аз ще повторя hard_square на тази стойност, и очевидно ще да халс на нов ред както и, а след това по-късно аз ще разграничаване на функциите на hard_square така че когато се направи призовавам да hard_square, тя знае за какво говоря. Сега, аз също може да се направи нещо като това. Това е малко по-различен. Това е почти точно същото като това, което видяхме преди, с изключение вместо да каже само $ х там като параметър за hard_square, Казвам $ х = 10. Така че това е пример за Защитата на програмиране, охранително вашите програми от злонамерени потребители. Това е един от начините да се направи някаква грешка проверка, че ние всъщност не има като опция в C. Ние никога не би могъл зададени по подразбиране стойност от нещо. Винаги е трябвало да се провери дали, например, ако се е обадил, за да GetString, че е най-правилното, ако веднага след като Проверих, че ние проверихме дали низ че потребителят ни даде не е равно на нула, защото ние не искаме да започнем работа с нулев низ. Ето, това е начин да вземат мерки срещу това. Ако потребителят не ни предложи нещо някак си, какво ще правим? Е, ние просто ще кажа, каквото и те не ни предостави, ние просто ще включите в 10, вместо. Така че, ако те не ни даде стойност, просто използвайте 10 по подразбиране. И така, тук, забележите, че аз съм на призив към hard_square, но няма промпт за потребителя, нали? Аз съм просто вземане на празен разговор. Но моята функция hard_square очаква параметър. Какво е това, ще се отпечата? Това ще отпечата 100, нали? Тъй като потребителят не е направил дайте ми нещо. И така, аз съм просто ще приемем че 10-- 10 е стойността по подразбиране. И така, това ще отпечата от 100 на отделен ред. PHP файлове не трябва да да бъде само един файл. Можете да комбинирате няколко файла заедно, точно като можете в C. Начинът ние сме го направили в C е типично да се направи #include да получите заглавни файлове извади инча Ние не правим, че в PHP. Ние правим нещо, наречено require_once. И тогава там е цялата тази нещо, какво е това __dir__? Това е просто специален променлива, или специална постоянна, Наистина, в който се посочва каква текущата директория е. И така тя ще изглежда в текущата директория за даден файл, наречен cs50.php в този пример тук, и то се случва да се придържаме този файл в горната част на вашия PHP програма, ако приемем, че сте я изискват веднъж линия в горната част на вашия PHP файл. Така че PHP се използва главно, но не се използва изключително, като език за уеб-базирано програмиране. Това е наистина как е започнал да бъде. Но това е пълна език, както сме виждали. Виждали сме доста много всички неща че да може да се направи, че са подобни на С, и той може да направи един чесало на много повече от това. Но тъй като това е пълен език и ние може да се направи линия програмиране команда в него. Ние можем да стартират програми командния ред. Всичко, което е необходимо, за да стартирате команда Онлайн програма, която е написана в PHP е, че имате PHP интерпретатор. Така че това е нещо, аналогичен на като съставител на вашата система ако искате да компилирате C код да го превърне в изпълними файлове. Трябва да имате PHP интерпретатор който съществува на вашата система така че можете да се тълкува PHP файлове. Ако приемем, че сте се, и обикновено този интерпретатор се нарича PHP, и това е обикновено в комплект с най- сваляне или инсталация на PHP че можете да получите онлайн, и със сигурност Името на PHP интерпретатора имаме в CS50, IDE. Всичко, което правя е тип PHP файл. И това, което вашата програма ще направя, е, че е Ще преминете през преводачът, това е ще игнорира всичко, което е не между въпросните mark-- или, ъгъл скоба въпросителен знак PHP, разделителите на PHP, и да го разпечатате, и това ще се тълкува и изпълнява Код вътрешността на вашите разделители PHP. Така че нека да се появи към CS50 IDE и да разгледаме няколко PHP файлове, използвате няколко PHP файлове, в интерфейса на командния ред на CS50 IDE. Така че тук ние сме в CS50 IDE, и съм волността за отваряне на файл, наречен hello1.php. И очевидно, съдържанието на този файл са само разделителите на PHP там, и между тях, ехо ("Здравей, свят"). Това е доста проста програма, PHP. Аз съм просто ще превъртете надолу да ми терминален прозорец тук, и аз отивам да напишете PHP hello1.php, натиснете въведете. Здравей Свят. Това е може би това, което бяхме Очакваме това да се направи, нали? Нека да отиде и да вземе друга погледнете програма. hello2.php. Доста едно и също нещо, Не много неща се случват тук. Този път, обаче, аз отивам да подтикне потребителят да ми даде имената им. Аз съм с които Readline функция отново. $ име = Readline. Това е ред, "Как се казваш?" Очевидно аз съм печат тя е на отделен ред. И след това, така че линията долу че ще бъде подканата където потребителят може да въведете името си. И тогава аз съм с малко променлива Питане тук на ред 3 да отпечатате "Hello" и независимо от вида на ползвателите. Така че това е аналогично на казвайки: Здравей, запетая,% ите, ако сме използвали ФОРМАТ в C. Така че нека да отиде и да тълкува тази програма. Така че отново, аз ще превъртете надолу да ми терминален прозорец. PHP hello2.php. Как е името ти? Дъг. Здравейте, Дъг. Аз също имам друг файл, наречен hello3.php. Отивам да изчистя екран с Control L, и аз отивам да се изпълни това. Как е името ти? Дъг. Здравейте, Дъг. Така че поведението е идентичен hello2.php, но защо е hello3.php? Е, тук е разликата. В този случай, известие че по линия 1 тук, Имам нещо, което не е между разделителите на PHP. Аз съм просто отпечатване out-- или I просто написа, "Как се казваш?" Когато PHP интерпретатора вижда това, той е никаква представа как да го тълкуват като PHP, и така вместо липса, това е просто няма да го изплюе. Така че забележите по линия 3 сега, моят призив към Readline, няма бърза вече. Аз съм просто всъщност ще to-- когато на PHP интерпретатора вижда това, то се случва да разпечатате "Как е името ти?" След това го вижда, о, OK, here's-- всичко останало ще бъде тълкува като PHP, така че ето защо това работи. Аз не трябва да е задължително да подтикне на to-- потребителското вътре Readline, Мога само да го има извън на разделителите на PHP и да позволи на преводача просто да го отпечатате за мен. Така че всъщност не само да има един набор от разделители PHP във вашата програма. Вие действително може да има няколко от тях, отварянето и затварянето им, както е необходимо. Така че нека да погледнем в няколко програми в CS50 IDE къде сме илюстрира тази идея се налага множество набори разграничена PHP. ОК, така че аз съм отворен файл тук нарича add1.php. И забележи какво се случва тук. Точно както преди, имам единен набор от PHP разделители. Отивам да разпечатате съобщение: "Моля ви, дайте ми някакъв номер." Тогава аз отивам да чета ред и да го съхранява в променливата $ NUM1. Тогава аз отивам да разпечатате отново. Дай ми втори номер. Прочетете линия от употреба, магазина каквото си написа в $ num2. Добавете ги заедно и съхраняване на тази доведе до променлива $ сума, и след това да отпечатате, "The сумата на тези две числа е ", след което правя запитване има променливата $ сумата. Така че нека просто стартирате тази чрез преводача , за да потвърдите, че това е, което ние очакваме. PHP add1.php. Моля, дайте ми номер, 3. Моля, дайте ми втори номер, 4. Сумата от тези две числа е 7. Това е 3 плюс 4. ДОБРЕ? Така че няма нищо страшно харесва там. А сега нека да се отворят add2.php. Ето, аз имам няколко PHP разграничена комплекти там, нали? Линии 1, 3-- линии 1 и 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, както и чрез добавяне на нещо, наречено един вертеп в началото на нашия PHP файл. Знам, че това е вид на една глупава дума. Това е кратък за хеш взрив. Ето първите два знака там. Не забравяйте, ние наричаме удивителен знак често гръм и трясък в компютърните науки. Той също така може да бъде за рязък бум. Има няколко начина да го интерпретират. Но това е в основата на специален сорт на заповядай на PHP интерпретатора разбира като, о, аз искам можете да се изпълни тази програма, което е очевидно / потребител / хамбар / PHP, които всъщност, когато PHP интерпретатора специално живее на нашата система. Така it's-- какво се случва тук, е преводачът разбира, о, Аз очевидно трябваше да използвам в тази програма да се изпълнява този файл. И така, той ви позволява да прескочим етапа се налага да се каже, PHP something.php. Има един друг улов тук, което е, че ако искаме нашите програми за работи както се очаква, ние Трябва да направим нещо, наречено промяна на разрешение файл. И ние ще go-- и говорим малко по- малко повече за файлови промени разрешителни в нашата видео на MVC, но е достатъчно да се се каже, че това е, което трябва да направите, за да направите вашия .php файлове изпълним. Така че нека да погледнем на това като крайния нашия пример в над CS50 IDE. Така че тук, в IDE Имам два файла в тази Директория PHP, че да не се появи наречено .php. Имам функция, наречена add-- Имам файл, наречен ADD3 и файл, наречен dice2. Така че нека да хвърлим един бърз Посетете и да се отворят ADD3. И както можете да видите, в началото на досието ми аз имам този вертеп, нали? Този хеш марка удивителен знак. Сега, вие също така ще може забележите, че по някаква причина, Аз нямам никакъв синтаксис подчертавайки вече, и това е, което аз споменах по-рано, което е, че ако не назове моето досие .php, аз нямам полза на оцветяване на синтаксиса вече. Този файл се нарича просто ADD3. Така че мога да го стартирате по-късно с ./ ADD3 и не ./ add3.php. Така че тя все още е reason-- глоба, тя все още е валиден PHP, но това не е синтаксиса подчерта, защото Този файл не се нарича something.php. Това е единствената реална разлика тук, плюс вертеп. Така че нека да видим какво се случва, когато Опитвам се и стартирате тази програма. ./ ADD3, точно както аз бих с C. Bash. ./ ADD3 разрешение отказан. Това е, което ти започваш да се види дали сте пропуснали да използвате командата коригират, за да промените разрешенията на файла. Както се оказва, редовен PHP файлове не могат просто да бъдат екзекутирани. Те може да се тълкува, но ние сме правене на нещо по-различно тук. Ние сме го изпълнява. И така, аз трябва да добавите разрешението на изпълнение, CHMOD а + х да ADD3. След това мога да кажа ./ ADD3. Моля, дайте ми номер. 5, 6. Сумата от тези две числа е 11. По същия начин, аз вече chmoded dice2, така че можете просто да въведете ./ dice2, можете разточва на 1 и 1, вие валцувани 5 и 4, и така нататък. Така че това е доста много идея за синтаксис PHP, нали? Има много неща, за да се измъкне сам, знам. Но се надяваме, че сте видели сега, че PHP Не е наистина, че е различен от C и наистина ни дава възможност да вземе нещата с една степен или две. Ние наистина не трябва да се притеснявате твърде много about-- ние наистина не трябва да се тревожи твърде много за детайлите на ниско ниво, ние, трябваше да се тревожи за с C, нали? Ние можем да се съсредоточи върху по-високата ниво неща, които PHP ни позволява да се направи и да се вземат за даденост, че той ще работи за нас. Така че това ни дава възможност сега, прехода от C до PHP, да направи програми, които са много по- сложна и може би много по-стабилна. Така че се надявам да се забавляват работен с PHP, и аз съм Дъг Лойд. Това е CS50.