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