ДАГ Lloyd: Так что мы сделано много работы в C, и С действительно здорово язык, потому что это дает вам способность погружаться на самом деле низкий уровень в ваши программы. Мы получаем, чтобы делать вещи, как действительно минут как манипулирование отдельные байты памяти. Напомним, что указатели на самом деле позволяют нам, что гибкость. Но мы всегда должны иметь что уровень мелкозернистая деталей в наших программах? Наверное, нет, не так ли? И если мы будем иметь компромисс между тем, в состоянии сделать действительно, действительно путевки вещи и действительно, действительно большие вещи, которые мы не должны думать о, мы не должны реализовать эти действительно большие идеи, если они уже построили в нас, как правило, для строительства большой программы или проекты, большие мы, вероятно, будем заблуждаться на стороне в том более язык материал построен в для нас, вместо того, низкоуровневые вещи. И вот, когда PHP на самом деле входит. Теперь, одной из причин что мы учим PHP в CS50 является то, что он в значительной степени вдохновлены С. И в самом деле, на мой взгляд, Есть действительно двух языки предшественники, что очень распространены в наше время. С и LISP. И они языках предшественников потому что каждый другой современного программирования язык, который разработал с тех пор вдохновлены один или другой синтаксически. PHP очень похож синтаксически С, в то время как языков, таких как Scheme, Например, который Вы, возможно, слышали о, в значительной степени вдохновлены языке называется LISP, который является старый язык. Так что причина мы учим PHP в CS50, что, зная C как принципиально как вы делаете в данный момент, поднимая PHP, которая дает Вам способность делать вещи гораздо более высокие уровня чем С делает, не что многое из препятствие, потому что у вас уже есть Основная идея синтаксиса. С была вокруг в течение почти 45 лет в этой точке. PHP был вокруг в течение приблизительно 20 лет. И в том, что 25 лет между программистами, Установлено, что они будут намного а имеют более высокие способности уровня, и ошибки и борьба из 20 лет в между привело к PHP и других современных языков. PHP, большой выбор язык для программного обеспечения что allow-- для Программное обеспечение that-- где вы нужно делать то, что в С фактически сложнее. Так, например, работает со строками в C очень сложна, потому как мы знаем, в C строк действительно просто массивы символов. Это не является встроенным в тип данных. Или, возможно, более важно, то, что мы даже не покрывают в C, что, если вам нужно сделать, некоторые компьютерные сети? Все в порядке? С обладает способностью делать это, но это так тайной и так трудно на самом деле. Не было бы неплохо, если бы Язык был построен в легкий путь, осуществить сетей? И PHP является языком, который делает, что или облегчает, что совсем немного больше. Как я уже сказал, PHP очень сильно вдохновили по С. синтаксис очень похож. И так, будем надеяться, сделать Переход от одного к другому немного мягче, чем некоторые другие языки может быть. Чтобы начать писать PHP, просто откройте файл с расширением .php файлов. Технически это не на самом деле требуется, но если вы хотите что-то вроде синтаксиса выделяя в IDE, так что типа имена, или имена переменных, функции, Вы знаете, ключевые слова языка выделены в определенный цвет, вы, как правило хочу называть свои файлы с конкретный файл с расширением. Так мы назвали наш файл с .php расширение, но затем также с PHP, все PHP код мы пишем, что Файл должен быть заключен в этих PHP разделители, которые мы видим Здесь на экране. Уголок? PHP, чтобы начать. Тогда мы пишем все наши PHP код, который мы хотим между ними. А потом ? скобка, чтобы закрыть. Если мы не сделаем этого, то Что должно случиться? Это не собирается к краху. Это не собирается действительно разрушить нашу программу. Но это не будет иметь эффект, который мы хотим. Что произойдет, действительно, что, когда мы пытаемся запустить эту программу, все, что не между этими разделителями собирается быть распечатаны дословно. Это не собирается на самом деле выполнить код, это будет просто распечатать его дословно. Теперь, почему это происходит? Так С, что известно как скомпилированный языке. Вы, наверное, знакомы с шаг делает ваши программы, превращая .c файлы и файлы .h в один исполняемый файл с маркам, в частности, с помощью Clang в качестве нашего компилятора. PHP, хотя, не есть этот эквивалент. PHP является то, что называется интерпретируемый язык. И что это значит? Ну, это означает, что мы не должны преобразовать наш исходный код нулей и единиц заранее. Скорее всего, есть программа, который также называют PHP, который понимает PHP и можете сортировать сделать это на лету. Это на самом деле не совсем точны, но это довольно хорошая аналогия что происходит. Это те, интерпретации нулей и единиц на лету. И поэтому, если он не знает, как обрабатывать что-то, если он не знает, как Процесс PHP, вы, вероятно, хотел поставить, что текст там, верно? Вы, наверное, хотели поставить код в там, даже если это не между PHP-- PHP-разделители. Но-- так он не собирается чтобы удалить его для вас, это просто будет в основном отбросить его. Так что это в печать это, чтобы на экране. Это кажется, что это плохая вещь, но на самом деле это будет действительно хорошая вещь, как мы будем видеть, когда мы говорим о Веб-разработки PHP, потому что это означает, что мы можем пересыпать PHP и HTML. Мы можем использовать их вместе, чтобы создать более динамичный веб-страницы. Но об этом в видео по веб-разработке PHP. Так что синтаксис PHP? Это то, что это видео является все о. Давайте поговорим об этом. Таким образом, чтобы начать, переменные. Существуют PHP переменные. Есть только два больших отличия от С. Во-первых, есть нет тип спецификатор. Мы не должны говорить Int, символ, поплавок, и все такое. Мы не должны этого делать. PHP это современный язык. Это может выяснить, что вы пытаются делать лучший думаю, чтобы то, что вы пытаетесь сделать. Так что это довольно приятно. Другое дело, что все переменные Имена должны начать со знака доллара. Это просто что-то, чтобы привыкнуть к. Это немного странно, потому что это так, что PHP может понять что переменную, а что нет. Таким образом, каждый имя переменной начинается с знака доллара. Таким образом, в C мы могли бы сказать что-то как это, INT х = 54. Мы не должны этого делать в PHP. Мы можем только сказать, $ х = 54. И мы могли бы сказать, например, в C, если бы мы фунт-включал .h CS50 Файл заголовка, можно сказать, Строка фраза = "Это CS50." Мы не должны делать это в PHP, хотя. Мы можем только сказать, $ фразу = "Это CS50." И в самом деле, строка теперь встроенный тип данных в PHP, или, скорее, PHP понимает то, что строка является. Это отдельный из массива символов, как это в С Все ваши любимые условные заявления C по-прежнему доступны для использования. Так что нет большой переход есть. Мы можем say-- мы можем иметь если заявления, как это. если у $ 43, или $ г = 15. Так что это довольно просто. Мы можем иметь, если и еще. Мы можем иметь, если и еще если. И обратите внимание, что-то очень приятно здесь, и это является своего рода один из тех Преимущества PHP в сравнении с C, уведомления какие функции мы здесь не используете? Мы используем == для сравнения Переменная, имя $, в строку. Мы не могли сделать это в C, верно? Мы должны были использовать функцию с именем StrComp или StrEndComp или любой из связанных с двоюродными братьями. И так, мы уже видим эти преимущества. Мы не должны делать что-то так же глупо, или, возможно, неинтуитивными а вызвать функцию под названием StrComp если я просто хочу, чтобы проверить равняется ли значение строки. Я мог бы просто использовать равен равных, как я мог бы сделать что-нибудь еще. Так что преимущество. Иногда, кстати, вы можете см, если еще в одно слово, ElseIf. И это нормально в PHP, а также. Так что иногда вы можете увидеть, что. Это не опечатка. PHP на самом деле понимает, ElseIf. Я не знаю, почему они решил осуществить это, но, как мы видели много раз на протяжении всей нашей видео до сих пор, мы программисты любят его, если мы можем сделать все быстро, так, чтобы избавиться от этого пространства по-видимому, является большим преимуществом. Так вот, если и ElseIf. У нас также есть тройной оператор, отзыв знак вопроса толстой кишки, для действительно краткой форме, если еще или условное ветвление. И, видимо, в том, то, что мы пытаемся сделать здесь это назначить переменную $ письмо либо истинным, либо ложным, в зависимости от того вар $ алфавитный символ. Так что это очень похоже на IsAlpha что мы знакомы из С. Это своего рода эквивалент в PHP. Функция по-видимому, называется ctype_alpha, но это, как мы делаем это в PHP. Так что все это будет в том, если $ Var это письмо, письмо $ верно. Если $ Var не письмо, $ письмо является ложным. У нас также есть переключатель заявления еще. Напомним, тех, от С, а также. На самом верху там, это, как мы делаем что-то вроде Get INT или получить строку. Итак, PHP имеет, что построенный в. Мы не должны библиотеку CS50 больше. Мы можем просто использовать функцию Readline. То, что это собирается сделать, это распечатать из сообщения, "Ваш государство, пожалуйста ", а затем мигает строку ждет ввода пользователем некоторая информация. Теперь обратите внимание, что еще мы можем сделать с выключателем. Если вы использовали его раньше, Вы можете вспомнить, что переключатель ограничивается довольно много целых чисел и символы, но теперь мы можем использовать строки. И в самом деле, переход себе в PHP совсем немного более гибким чем его двоюродный брат из С Петли. Так же, как условные, все Ваши старые фавориты все еще там. У нас есть в то время как петли, рассчитывать от 1 до 100 в этом случае. Мы в то время как петли делать что считать от 1 до 100, и у нас есть для петель что считать от 1 до 100. Так что нет большой скачок там. Синтаксис довольно много точно так же, только теперь мы используем Переменная знак доллара вместо декларирования целочисленных переменных или что-то подобное для наших прилавках. Вот где все становится намного лучше, чем C, хотя. Массивы. Так помню, когда мы были говорить о С, для того, для нас, чтобы расти и сокращаться наборы информации, нам нужно отсортировать дефолта к этой идее связанного списка, потому что C массивы фиксированного размера. Мы не могли уменьшить их. Мы не могли выращивать их. Нам пришлось перераспределить память и делать все это безумие или использовать связанные списки, которые взять немного больше пространства. Но в PHP, массивы не фиксированный размер больше. Они могут расти, и они могут сокращаться. Итак, еще раз, эти 20 лет, что существует между первым выпуском С и первый выпуск PHP, мы решили, что, знаете, это было бы действительно здорово если бы мы могли сделать это. И так мы реализовали это. Так PHP массивы не фиксируется в размер, и потому, что PHP на самом деле не есть программист переднюю облицовку- Понятия типов, мы можем смешать типы данных в наших массивах, тоже. Таким образом, мы даже не должны использовать все целые или все плавающие точки, мы можем иметь сочетание всех различные виды в одном массиве. Объявление массива довольно проста. Это просто, как и любой другой переменной. $ НУМС = массив (1, 2, 3, 4), массив является функцией что встроенный в PHP, что создаст массив для вас. Это создает массив из четырех значений, Цифры в этом случае, называют $ Nums. И есть более чем один способ сделать это. И мы собираемся увидеть это много в PHP. PHP был разработан много различных люди и растет и растет и растет. Там, как правило, не только два или три способа сделать что-то в PHP, там, как правило, как 10 или 20. Вот только еще один общий способ объявить массив. $ НУМС = квадратных скобок 1, 2, 3, 4. Так что это своего рода похожи на угол С в br-- вьющиеся обозначения скобки, а. $ - или это будет INT НУМС площади Кронштейны равна фигурную скобку 1, 2, 3, 4. В PHP это $ НУМС = квадрат Кронштейны 1, 2, 3, 4. Но и из этих примеров здесь дают мне массив из четырех человек в этом случае целых чисел. Что делать, если я хочу что-то лавировать сейчас? Ну что я могу только сказать, $ НУМС 4, опять же, мы все еще считая от 0 здесь в PHP, будет пятый элемент массива. Я могу только сказать, что. Я не собираюсь страдать SEG вина, потому что мой массив только будет расти, чтобы приспособить это. Это довольно приятно, правда? И в самом деле, я даже не нужно указать, где я хочу, чтобы положить его. Я могу только сказать, это и просто лавировать это право до конца, или я мог даже просто скажем, $ 20 или Nums 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 до N минус 1. Таким образом, мы могли бы использовать цикл для шаг через каждый одного элемента. Но это на самом деле не так больше, не так ли? Теперь, когда у нас есть ключ значение пары отображения, где ключи слова, как мы перебрать все слова? Ну, к счастью, есть PHP способ справиться с этим тоже, и поэтому мы будем прыгать назад чтобы петли на секунду ввести четвертый вид петли, существует в PHP называется цикл по каждому элементу. И то, что цикл по каждому элементу делает это в основном та же идея. Вы можете использовать его для любого вида массива. Но это в основном Та же идея, как цикл, кроме вместо индексные, вы просто есть этот странный синтаксис где Вы называете каждый элемент имя для целей этого цикла. Таким образом, в этом случае, Еогеасп ($ массив, как $ ключ). В принципе, в том, что комментарий нот, внутри этого цикл по каждому элементу, он собирается перейти каждый элемент массива $, который, как правило будет ассоциативным массивом, но действительно может быть любой вид массива что вы хотите в PHP. И каждый раз, что в для цикла вы могли сказал $ массива в квадратных скобках $ я, вы могли бы просто сказать $ ключ. Так что $ ключ становится псевдоним каждый Индекс вашего PHP ассоциативный массив, и поэтому вы можете использовать его как что. Так, например, мы в Теперь получили наш пиццы массив. Я вроде засунул его в углу так что мы можем использовать его, чтобы сделать быстрый пример. Если я говорю, Foreach ($ пиццы как $ пиццы), ну, что же происходит? Ну, я собираюсь перебора каждый один элемент массива $ пиццы, и таким образом, я собираюсь позвонить каждый элемент, когда я внутри тела, что для цикла, $ пиццу. Так вот рода стоять в, напомним, что $ пиццы является заместителем для говоря $ пицца квадратные скобки $ I если бы мы использовали для цикла, где мы может идти от $ = 0, чтобы в этом случае, $ я = 3. Если у нас не было пары ключ-значение Здесь, это было бы элементом 0, 1, 2, 3, и мы хотели бы использовать для цикла, чтобы пойти $ пиццы 0, $ 1 пицца, пицца $ 2, $ пиццы 3. Так что теперь только $ пицца подставляя для этого отдельного ключа. Так что это собирается печатать? Я печатаю $ пиццу. Что я собираюсь найти at-- если я распечатать $ пиццу, $ я? Правильно? Если я собираюсь распечатать й элемент пиццы, что я буду печатать? Я собираюсь распечатать Значения в этом месте, верно? Подобно этому, если мы делали это в контексте C, мы обычно не используют наш итератор Переменная, INT = 0, я меньше, чем 3, я ++, распечатать 0, 1, 2, 3. Мы печатаем из массива 0, Массив 1, Массив 2, 3 массив. И так, что это выводит это. Это список цен. 8.99, 9.99, 10.99, 11.99. Теперь небольшое замечание здесь. Цикл по каждому элементу не обязательно распечатать вещи в порядке. Это не гарантировано. Это обычно делает. Это, как правило, на основании приказа в какие элементы будут добавлены в массив, так что просто имейте это в виду. Это не может быть в порядке. Но цикл по каждому элементу будет повторять по каждой элемента массива в вопросе. В этом случае, опять же, что массив $ пиццы. Я могу изменить синтаксис, хотя, если Хочу ключ и значение. Вместо того чтобы сказать $ пиццы а $ пиццы, я могу сказать, что это. И если вы посмотрите на то, что я выделены зеленым цветом здесь, это выглядит как ключевой отображения значение пар. И поэтому, если you--, даже если вы не совсем уверен, что это будет делать, Вы можете догадаться, что $ долива собирается чтобы стать ключевым в данном случае и $ цена будет значение. Так что я в настоящее время замены каждый элемент из $ пиццы как ключевой пары значений, и теперь я могу обратиться к ключу и значение, которые могли бы пригодиться, например, следующим образом. "Целый" - это много печать происходит here-- "в целом" долива "пицца стоит $" цену, а затем Я распечатать период и обратной косой п. Так что теперь, уведомление снова у меня есть доступ к ключ, $ долива, а значение, $ цена. Так вы можете догадаться, что это будет распечатать? Там очень много печатных заявлений, но есть только один обратный слеш п, так что это напечатать что-нибудь на entire-- на одной строке кода. Если я могу обратиться к ключу и значение, то теперь, а не просто быть в состоянии распечатать цен, Я могу напечатать что-то вроде этого. "Целый пицца сыр стоит $ 8,99." А теперь я использую все keys-- сыр, пепперони, овощи, буйвол chicken-- и значения. 8.99, 9.99, 10.99, 11.99 Так это просто другой способ сделать цикл по каждому элементу, что вместо просто дать вам доступ к значениям, он просто дает you-- это дает вам Доступ к ключам и значениям. Так распечатки информации. Я уже сделал это пару различные способы, вы, возможно, заметили. Эти две функции, прежде всего, мы в видел в печати и эхо. А для почти всех намерений и Цели, они точно так же. They're-- есть очень тонкая Разница, что даже не стоит попасть в, но в основном везде Вы можете использовать печать можно, вероятно, использовать эхо, а также. И это не только два. PHP имеет много разных способа печати вещи, а также имеет возможности интеграции Переменные в середине строки. Так, помните из C, ты помните, что функция мы можем использовать, чтобы заменить переменные в то, что мы хотим, чтобы распечатать? Вы, наверное, использовать это функционировать довольно много. Printf, верно? Так что это то, что мы имели до внутри в контексте нашей цикл по каждому элементу. Мы имели эти пять отдельные высказывания печати, потому что это был единственный как я на самом деле знал в то время как распечатать сообщения. Я не знаю, как интегрировать Переменная $ долива в моей PHP кода. Ну, если я просто взял диких догадаться, Printf, на самом деле работал бы. Printf является функцией что я могу использовать в PHP, как я могу использовать его в С. И так-то, как это, Printf, снова, мы знакомы с этим. Первый% s заменяется со значением $ главе. Второй% s заменяется со значением $ цене. И поэтому я interpellating, которая является просто причудливый способ сказать, что я вставлять переменные в этом месте. Так что я подключения $ долива, где красный% s является и $ цена, где синий% s есть, и тогда я хотел бы получить сообщение, "Целый пицца сыр стоит $ 8,99." Не только так я могу это сделать, хотя. Может быть, я хотел бы использовать этот метод. Это на самом деле то, что наиболее часто называется переменная запрос. Я могу использовать эхо. Я мог бы использовать печать тоже, как мы увидим. Но что здесь происходит? Прежде всего, я должен избежать знак доллара. Потому что помню, когда мы были на самом деле распечатать цены пиццы, Я на самом деле форматирование их денежные показатели со знаком доллара. Но мы используем знаки доллара также представлять имена переменных в PHP, и, в частности, когда я с помощью этого метода в фигурных Переменная скобка Метод запрос, мне нужно чтобы избежать моей знак доллара так что это не думаю, что я говорю о переменной. Это на самом деле происходит, чтобы, буквально напечатать знак доллара. Так вроде аналогию его Вы видите в конце там. Это на самом деле не печать обратный слеш н, верно? Это печатает символ новой строки. Это is-- это не собирается печать знак обратной косой доллар, это будет просто распечатать знак доллара знак. Та же самая идея. Побег последовательности, то, что эти вещи называются. Но заметьте, что я не делаю любой вид% S замен, Я просто буквально затыкать В этих переменных. И так в this-- что случится здесь является то, что стоимость $ topping-- снова, просто соответствует тому, что мы были идет о так far-- сыра бы получить подключен там. И $ цена будет все значение на пиццу, квадратные скобки, сыр, который был 8,99. И так это было также распечатать "Целый пицца сыр стоит $ 8,99." И как я уже сказал, я мог бы использовать распечатать здесь вместо эхо, и функциональность быть в значительной степени то же самое. Было бы распечатать то же самое. Там еще один способ сделать это, и это является еще одним преимуществом РНР работы со строками. Мы можем сделать конкатенацию. Мы могли бы сделать это в C, тоже, используя функцию, называемую strcat, но опять же, мы должны были вызывать отдельные функции. Это был весь этот беспорядок, чтобы сделать. Нам пришлось фунт-включают string.h. Это было производство, верно? Но теперь я могу просто использовать этот оператор точка для объединения строк вместе. Так что я объединением "в целом" и то все значение $ разворотных есть а потом еще Строка, "расходы пиццы $" а затем объединения независимо значение $ цене, а затем в самом конце я лавируя на период обратной косой п. И так это было также распечатать "в целом", - еще раз, если мы говорим о первой элемент этой пиццы array-- "Целый пицца сыр стоит $ 8,99." Период, обратный слеш п, опять же, с $ долива и $ цена заменяющий за то, что мы указано в нашем Еогеасп цикл в качестве ключевой отображения значение пар. PHP может обрабатывать функции. Функции были своего рода неотъемлемой C, как мы видели. Как переменных, мы не должны указать тип возвращаемого функцией, потому что это на самом деле не имеет значения. И мы не указать Типы данных параметров, либо потому что они на самом деле не Дело, как мы видели в PHP. Каждая функция вводится с функцией ключевое слово. Вот как мы указать вызова, которые то, что мы говорим о функции. И мы не должны дело с главным вообще, потому что интерпретатор, PHP переводчик, работает сверху вниз, несмотря на. Если видит, что вы можете сделать вызов функции, то это пойти найти вызов функции, даже если это приходит позже. Но это будет читать сверху снизу, таким образом, мы не должны указать, вот где вы начинаете. Вы начинаете на линии 1 Ваш PHP и работать оттуда вниз. Так вот, как бы мы создать функция называется hard_square. Это, по-видимому занимает одно параметр, который я звоню $ х. Эта функция осложняется только чтобы проиллюстрировать различные вещи. У нас еще есть возвращаемые значения. Я использую для цикла здесь. Но это в основном просто, что это составляет всего $ х раз $ х. То, что я на самом деле делает, просто добавив х до 0 х раз, или $ х $ к нулю х раз. Но это эффективно именно так же, как умножение $ х раз $ х. Я до сих пор может возвращать значение, в этом случае $ результате и я сделал функцию в PHP. Вот как вы можете использовать его в контексте. Так, может быть, я внутри некоторого PHP-файл. Обратите внимание, в синем, что там Я использовал мои PHP разделители, скобка знак вопроса PHP. Между тем, все из РНР, что я хочу писать. Так что я, видимо, собирается get-- Я собираюсь предложить пользователю чтобы дать мне номер, магазин, Переменная, магазин в этом переменной $ х, все, что они мне дали. Тогда я иду к эхо hard_square этого значения, по-видимому, происходит и лавировать на новой линии а также, а потом я тебе Определим функцию hard_square так что, когда я сделать чтобы позвонить в hard_square, это знает, что я говорю. Теперь, я мог бы также сделать что-то вроде этого. Это немного отличается. Это почти точно так же, как то, что мы видели раньше, кроме вместо того чтобы сказать всего $ х там, как параметр hard_square, Я говорю $ х = 10. Таким образом, это является примером защитное программирование, охранные свои программы против злоумышленников. Это один из способов, чтобы сделать некоторые ошибки проверка, что мы действительно не есть в качестве опции в С. Мы никогда не мог задать значение по умолчанию что-то. Мы всегда должны были проверить ли, например, если мы сделали вызов GetString, это было Наиболее правильным, если сразу после проверил, что мы проверили ли строки что пользователь дал нам не равен нулю, потому что мы не хотим, чтобы начать работы с пустой строкой. Здесь это способ чтобы охранять против этого. Если пользователь не обеспечивает нам что-то то, что мы собираемся делать? Ну, мы просто сказать все, что они не дают нам, мы только собираемся подключить 10, а. Так что, если они не дают нам значение, просто использовать по умолчанию 10. И вот, заметить, что я делаю позвоните чтобы hard_square, но нет быстрое для пользователя, не так ли? Я просто сделать пустой вызов. Но моя функция hard_square ожидает параметр. Что это будет распечатать? Это происходит, чтобы распечатать 100, верно? Поскольку пользователь не сделал дать мне что-нибудь. И поэтому я просто хочу, чтобы предположить, что 10-- 10 Значение по умолчанию. И так это было напечатать из 100 на отдельной строке. PHP файлы не должны быть только один файл. Вы можете объединить несколько файлов вместе, просто, как вы можете в C. путь мы сделали это в C был, как правило, чтобы сделать #include, чтобы получить файлы заголовков вытащил в. Мы не делаем, что в PHP. Мы делаем то, что называется require_once. А тут еще вся эта вещь, что это __dir__? Вот только специальная переменной или специальная константа, действительно, что указывает, что Ваш текущий каталог. И так будет выглядеть в текущем каталоге для файловой называется cs50.php в этом примере здесь, и это будет придерживаться этот файл в верхней части вашей программы PHP, при условии, что ставишь требуют когда линии в верхней части вашего PHP файла. Итак, PHP в основном используется, но не исключительно, используется, как язык для веб-программирования. Это действительно, как он пришел, чтобы быть. Но это полный язык, как мы уже видели. Мы видели довольно много все вещи что он может сделать это, аналогичны C, и это может сделать чертовски намного больше, чем это. Но потому, что это полноценный язык, и мы можно сделать командную строку программирования в нем. Мы можем запускать программы командной строки. Все, что требуется, чтобы запустить команду Линия программа, которая написана в 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 линии распечатать "привет" и все типы пользователей. Таким образом, это аналогично говоря, Привет, Запятая,% s, если мы с помощью Printf в С. Так что давайте идти и интерпретировать эту программу. Итак, еще раз, я прокрутите вниз на мой окне терминала. PHP hello2.php. Как вас зовут? Дуг. Привет, Дуг. У меня также есть еще один Файл называется hello3.php. Я собираюсь очистить экран с управлением L, и я собираюсь выполнить это. Как вас зовут? Дуг. Привет, Дуг. Таким образом, поведение идентично hello2.php, но почему это hello3.php? Ну, вот в чем разница. В этом случае уведомление что в строке 1 здесь, У меня есть то, что не в период между PHP разделителей. Я просто печать out-- или я только что ввели, "Как тебя зовут?" Когда интерпретатор PHP видит это, его понятия не имеет, как интерпретировать его как PHP, и поэтому вместо того, неудачу, это просто будет выплюнуть. Так заметить в строке 3 сейчас, мой призыв к Readline, нет быстрое больше. Я просто на самом деле происходит, когда, целью которых РНР видит это, это будет распечатать "Как вас зовут?" Затем он видит, о, хорошо, here's-- все остальное будет интерпретируется как PHP, так Вот почему это работает. Я не обязательно подскажут пользователь, целью которых внутри Readline, Я могу просто его пределами из PHP разделителей и позволяют интерпретатор просто распечатать его для меня. Таким образом, вы на самом деле не только иметь один набор PHP разделителей в вашей программе. Вы на самом деле может иметь несколько из них, открытия и закрытия их по мере необходимости. Итак, давайте взглянем на пару программ в CS50 IDE, где мы проиллюстрировать эту идею проведения несколько комплектов ограниченной PHP. ОК, так что я открыл файл здесь называется add1.php. И заметьте, что здесь происходит. Как и прежде, у меня есть один PHP набор разделителей. Я собираюсь распечатать сообщение, "Пожалуйста, дайте мне номер." Тогда я иду читать строку и хранить его в переменной $ num1. Тогда я иду, чтобы распечатать еще раз. Дайте мне второй номер. Читайте линию от пользователя, магазин что они ввели в в $ num2. Добавьте их вместе и хранить, что привести в переменной $ сумма, а затем распечатать, "О сумма этих двух чисел есть ", а затем интерпеллировать есть переменная $ сумма. Так что давайте просто запустить эту через переводчика чтобы подтвердить, что это то, что мы ожидаем. 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, который на самом деле, где РНР специально живет в нашей системе. Так 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, как я бы с С. Bash. ./ Разрешение add3 отказано. Это то, что вы собираетесь чтобы увидеть, если вы забыли использовать команду CHMOD изменить права доступа к файлу. Как выясняется, регулярные PHP файлы не могут просто быть выполнены. Они могут быть интерпретированы, но мы делать что-то немного различное здесь. Мы его выполнения. И поэтому мне нужно, чтобы добавить разрешение исполнения, CHMOD а + х к add3. Тогда я могу сказать ./ add3. Пожалуйста, дайте мне номер. 5, 6. Сумма этих двух чисел 11. Точно так же, я уже права измененными dice2, так что я могу просто наберите ./ dice2, Вы свернул 1 и 1, вы прокат 5 и 4, и так далее. Так вот в значительной степени Идея синтаксиса PHP, верно? Там очень много, чтобы пройти, я знаю. Но, надеюсь, вы видели, что в настоящее время PHP на самом деле не так уж отличается от C и действительно дает нам возможность принимать вещи на ступеньку выше или два. Мы действительно не придется беспокоиться слишком много about-- мы действительно не должны слишком беспокоиться о детали низкого уровня мы пришлось беспокоиться о с С, верно? Мы можем сосредоточиться на более Уровень вещи, которые PHP позволяет нам делать и принимать для разумеющимся, что он будет работать на нас. Так это дает нам возможность сейчас, переход от С до РНР чтобы программы, которые являются гораздо более Комплекс и, возможно, гораздо более надежными. Так что я надеюсь, что вы весело работать с PHP, и я Дуг Ллойд. Это CS50.