>> Для начала, чтобы преодолеть то, что может быть ваш единственный опыт
с веб-программирования, что я думал, что я сделать, это украсть пару
примеров, которые вы Возможно, вы видели в 50
если вы взяли его прошлое год или два или могут не иметь
если вы взяли его несколько лет назад
что шаги младенца в сторону пиридин знаю, как MBC,
Model View Controller, и что это значит?
Это мы увидим снова, возможно, это просто способ отправной
убирать дизайн некоторых веб-часть программного обеспечения,
или это может быть на стороне клиента основе, а также, но мы будем использовать его
в контексте PHP, так что мы можем начать
сделать более сложным проекты и рода
из отдельных различных типов Код в приложении;
особенно так что, когда мы есть несколько людей, работающих
над проектом это намного легче рисовать линии.
Итак, сначала давайте посмотреть на неоптимальным образом
реализации что-то.
Предположим, что я хотел сделать супер просто Конечно сайт 50
или любой другой класс, и что класс имеет вещи
как лекции и учебного плана.
Я мог бы сделать что-то вроде тег h1 в верхней части моей странице
и неупорядоченный список с элементы списка ли в порядке
просто иметь маркированный список Опции меню, так супер просто.
Так как мы можем это сделать?
Ну, позвольте мне идти в мой окно терминала здесь,
и обратите внимание, что у меня есть для чтения меня, и мы будем ссылаются на данный код
на веб-сайте ходе автора в немного,
и обратите внимание, что у меня есть Индекс точка HTM - индекс точка PHP.
Итак, позвольте мне идти вперед и открыть что, и конечно же это отчасти
глупо, что это даже назвал PHP
потому что все у меня есть является PHP комментарий
а потом все остальное это просто сырой HTML код.
Но опять же это версия нулю,
так это шаг к что-то более интересное,
но обратите внимание, что я жестко CS50 как название, CS50 в h1,
и теперь у меня есть лекции по ссылке,
теперь у меня есть связь программы курса.
Ладно, так что не кажется все, что неразумно
пока вы не выполните ссылку вида лекции, и вы понимаете,
что все в порядке все по-другому содержание, но это отчасти
о том же; это название страницы и неупорядоченный список.
Я нажимаю нулю неделю с в прошлом году, и это отчасти
о том же, h1 теги и неупорядоченный список
и, наконец, я нажимаю это, и я получаю до некоторой лист,
который скользит от что особенно лекция.
Так что-то мне подсказывает, Я собираюсь съежиться.
Если я открываю лекции точка PHP уведомление
что это в значительной степени копией и вставки из предыдущего файла;
Я только что изменил название на h1, и что эти связи.
Что еще хуже, если я иду в неделю нулю точка PHP,
это то же самое копировать вставить работа
с помощью всего лишь немного Содержание оптимальной.
Так, конечно, есть возможность здесь, чтобы улучшить,
и, конечно, это должно быть хорошее правило;
в любое время вы чувствуете, сами копирования
и вставки что-то больше, может быть, один раз,
красные флаги должны надеюсь начать уходить.
Но как же нам идти об улучшении этого?
Ну, есть несколько способов, и методы, которые можно использовать
В PHP развивались в течение Время, но давайте попробуем это.
Отпусти меня в версии одной, так что следующая итерация этого,
и позвольте мне попытаться очистить его немного.
Право, один из РНР Простейшие механизмы
для решения этой задачи является старая школа требует функцию,
которые в значительной степени делает копию и паста содержания
некоторого файла прямо здесь, как с резко включают,
и другие языки имеют очень похожие конструкции.
Так это выглядит немного странно сейчас,
это определенно не завершить выглядящие веб-страницу,
но предположительно, что это внутри заголовка точка PHP.
Все другие вещи, не так ли, HTML тегов, глава тег,
тег заголовка, весь материал это было выше главной сути
страницы, которая, возможно, просто неупорядоченный список,
и в конце страницы, вероятно, как закрытого тега тела,
тег закрытом HTML автора; довольно неинтересно
но дублируют материал.
Ладно, и уверен, достаточно, если я иду
в заголовке точка PHP это просто вид сиротского фрагмента
сверху, а если идти в колонтитула точка PHP,
это сирых фрагмент снизу,
и я использую те же фрагменты в других моих файлов,
как лекции точка PHP.
Ладно, так что лучше об этом бы вы сказали?
Да?
>> Простота.
>> Простота?
Я не знаю, такого рода взглядов много страшнее для меня сейчас, не так ли?
>> Если бы я хотел изменить свой заголовок, вам не придется
изменить его во всех предыдущая как файлы.
Вы просто изменить его в заголовке.
>> Вот именно, так что, возможно, в что чувство это проще,
может быть, я бы сформулировать его, поскольку это просто легче обновлять его.
Это может быть, немного чище
потому что вы обновить это только в одном месте.
Так что это довольно убедительным; что недостаток
этого подхода или что проблема остается
что мы на самом деле не решена?
Да?
[Выкл микрофона комментарий]
Да, точно, я имею в виду, я еще копирования и вставки;
это немного меньше, но только я подъехал два из этих файлов,
и они в значительной степени еще выглядели одинаково.
Был требуют, по крайней сверху, требуют на дне,
и неупорядоченный Список в середине
который сам по себе был еще Конструктивно тот же.
Кроме того, обратите внимание на это, если я на самом деле посмотреть этот пример,
отпустить меня в версии One теперь,
и обратите внимание, у меня есть CS50 Лекция Программа курса.
Ой-ой, CS50 Неделя нулевой Неделя Один и CS50 среда пятница,
Я вроде сократить угол.
Что было - то, что были эти названия ранее?
[Выкл микрофона комментарий]
Они были похожи на лекции в Неделя нулевой, как это было отчасти
из сексуальнее, и это на самом деле было некоторое динамизм к нему,
и это своего рода - Я только отчасти понтировавшего сейчас
и просто предполагая, что весь сайт CS50
и хорошо это работает, но это конечно, не так элегантно,
или как своего рода прямой вперед, как это было раньше,
но это имеет смысл, потому что если вы посмотрите на индекс точка PHP
и лекции точка PHP и неделю нулю точка PHP,
они все включая и тот же файл,
так что мы можем улучшить это?
Какой следующий итерация этот код, вероятно, будем делать?
[Выкл микрофона комментарий]
Да, точно, так что если - и позвольте мне подвести итог
с мы, по существу хотят для параметризации, что заголовок
так что да есть еще жестко тег h1, но материал
между ними, под открытым небом и закрывающий тег,
Предположительно динамичным, и исходя из чего-то другого.
Может быть, "получить строку" или вещь после вопросительный знак
в URL были где-то еще, так что давайте взглянем.
Так что, если я иду в Версия вторая,
Теперь обратите внимание, что у меня есть получил дополнительный файл,
это выглядит как помощники точка PHP.
Я действительно не знаю, где начать, так что я собираюсь начать просто
по индексу вроде как всегда, и теперь заметите, что он немного отличается,
так у меня требуют линию
вверху, требующей помощники точка PHP,
но я могу назвать это все, что захочу,
но теперь заметить линию три есть вызов функции
оказывать заголовок, который является Интересно лишь постольку,
как, что передается в судя по всему, принято название
для этой конкретной страницы.
Между тем есть оказывать подвал на дне,
и я не нужны параметризации есть это просто
подвал, но теперь, похоже,
чтобы быть шагом к лучшим решение, оказывать заголовок берет,
и что делать площади скобки означают для тех,
кто не видел PHP никогда или в то время?
[Выкл микрофона комментарий]
Да, это массив.
Это ассоциативный массив или хэш, который связывает ключи
со значениями; это как Java Сценарии, возражение обозначения,
или другие языки, подобные syntaxs.
Ладно, так что в помощники точка PHP?
В помощники точка PHP это только пару функций,
оказывать заголовок и сделать сноску.
Так пару деталей если менее знакомы,
Итак, прежде всего на то,
что сделать заголовок берет Аргумент данные, что это, по-видимому
назначен пустой Массив есть это означает?
Что значит делать равных открывающая скобка закрывается кронштейн
в качестве параметра в PHP?
Это значение по умолчанию.
Так что, если я не сдал в массиве или любой аргумент бы то ни было
к визуализации заголовка или оказать функцию нижнего колонтитула,
Я могу по крайней мере, доверие как автор этих функций
что данные будут минимально быть пустой массив;
он не будет определено или ложным, или что-то вроде этого,
это будет именно то, что Я дал его по умолчанию.
Теперь это немного своего рода изощренные способ загрузки символов
в вашем пространстве имен так сказать,
но он работает довольно хорошо в этом направлении
реализации нашей собственной рода шаблоны двигатель бедняка.
Ладно, есть много инструментов там для Python Рубин
и PHP, что даст вам Возможности темплатные
и это именно то, чего мы хотим.
Мы хотим, чтобы шаблон, который имеет h1 открыт тег, h1 закрыт тег,
и как бы место Держатель в середине,
и мы хотим, чтобы заполнить те места держатели по пути этой функции,
поэтому эта функция извлечь так уж случилось,
чтобы дать вам следующее возможности.
Если у вас есть ассоциативную из массива с пар ключ-значение
как Foo равна бар, экстракт создаст локальную переменную
называется эффективно знак доллара Foo и дать ему значение баре
так она взрывается свой ассоциативный Массив из пар ключ-значение
в новых переменных с соответствующие значения.
А потом требуют точка заголовок точка PHP такая же, как и раньше,
так что мы, вероятно, будет чтобы увидеть внутри заголовка точка PHP?
Это, вероятно, получил, что тег h1 и закрывающий тег; что происходит
быть внутри него вероятно, в между ним?
[Выкл микрофона комментарий]
Точно, там, наверное, некоторые Упоминание знак доллара названием
и конечно же, если я увеличения на этом есть моя тег заголовка,
вот и мой тег h1, а внутри из это динамическая вставка
из знак доллара титул, но просто для хорошей мерой,
Я делаю этот HTML специальное взимать зверски имени
Функция, но это полезно; для чего это нужно
или что это может защитить?
На самом деле это решение на угрозу вы намекаете;
вы бы привели нас к.
[Выкл микрофона комментарий]
Именно, поэтому если вредоносный пользователь или ничего не подозревающую жертву
фишинговой атаке нажал на ссылку
, что в себе имели вопросительный знак и что-то вроде Foo равно,
и тогда значение обув было на самом деле
как открывающей скобки Сценарий, закрытая скобка,
а затем некоторый код JavaScript;
если вы не называем это долго основная функция,
вы на самом деле быть заражение сырой HTML на веб-страницу,
результатом которого является что вас могут обманом.
Вы можете быть обманывая пользователя в выполнение кода JavaScript
что он или она сделал на самом деле не собирается.
И хотя, как правило, вы только вредит себе,
как только вы знаете, идиот собирается ввести
в открытом сценария кронштейна, закрытая скобка, и сказать предупреждение
или что-то в этом роде и сделать его или себя
в с какой-то загадочный исход, если вы становитесь обманутыми
в нажав на ссылку, которая имеет сырье JavaScript встроенный в него
в качестве значения этого атрибута,
Вы можете среди прочего украсть чьи-то печенье
потому что есть свойство называется документ точка печенья
в JavaScript, что позволяет вам захватить сессионные куки пользователя,
и если вы помните, что перехват сессии атака,
Короче говоря, это одна способ фактически обманывая кого-то
в давая вам, что виртуальная знач руки, а затем с
над их счет Facebook или некоторый другой тип учетной записи.
Ладно, так что это немного долго,
но это только с помощью сырой HTML код.
Это эквивалентно вызова эхо
или распечатать эффективно, и мы существенно вставки
что динамически.
Так что больше остается здесь?
Ну, позвольте мне перейти в Версия Три здесь,
и мы увидим несколько разные -
точно такой же файл макета не заметить
что на этот раз мы собираемся обобщить верхний и нижний колонтитулы
как шаблоны, так что я имею в виду, что?
Что одна вещь, что по-другому здесь?
Что изменилось с последняя версия?
Тонкая, но это возможно, просто лучше чистого дизайна.
Да?
[Выкл микрофона комментарий]
Да, есть только один Стандарт оказать функцию;
Я не особый случай оказать заголовок или сделать сноску,
оба из которых, если вам отзывает помощников точка PHP,
мы в значительной степени идентичны их имена, за исключением
и шаблоны они включены.
Почему бы просто не параметризации функция визуализации
и принять один аргумент, это Название шаблона,
и второй необязательный аргумент что ключевые пары значений
что вы хотите подключить дюйма
Так что если я сейчас смотрю на помощники точка PHP уведомление
что я, будучи немного необычным сейчас.
Я на самом деле проверки делает файл существует, и если да идти вперед
и требуют его; на всякий случай случайно пользователем типы
в некотором фиктивном имени шаблона вы не хочу выдавать ошибку
в программе, чтобы мы могли минимально сделать им это
пользу здесь.
Хорошо, но мы можем принять это шаг вперед?
В этой версии здесь обратите внимание на следующее.
Я только что ввели Ls, а что сразу же переходит
из несколько иная.
Таким образом, есть два каталога, Хорошо,
и так теперь это шаг к что в конечном итоге будет больше
надлежащей базы.
Это своего рода небрежен с моей стороны бросать все
мое содержание внутри доступен публично каталог
что буквально называется общественности.
И хотя, к сожалению, много рамок,
старые особенно, и даже некоторые веб-сообщений,
Мечта хостинга среди них, силы разместить все ваши файлы
в эквиваленте общественного каталог даже
если ваши файлы могут включают пароли баз данных
и имена пользователей или другие такие полномочия,
что вовсе не хороший дизайн.
Намного лучше будет только положить
в общественном каталог что абсолютно имеет
быть доступно пользователю, и все остальное
что вы в том числе как помощники точка PHP,
нет никаких оснований, что, что должны быть доступны через веб-
браузеру с URL.
Это может быть совершенно безобидным если пользователь хочет видеть, может быть,
кто пар, но это просто Принцип этого,
и не дай бог на самом деле делает есть имя пользователя или пароль;
Вы не хотите пользователь случайно
или намеренно быть возможность доступа к нему.
Так что мы не совсем на идеально подход здесь,
но обратите внимание на следующее сейчас.
В индекс точка PHP, заметить, что Я все еще требует помощников,
но я делаю это таким образом, что я своего рода организации всех
файлы, будут включены
в подкаталоге условно включает в себя,
а затем я называю штукатурка для верхний и нижний колонтитулы, как раньше.
Так что единственное, Я сделал это своего рода
из реорганизовать свои каталоги чтобы быть немного более анальный
о файловой структуре.
Но если мы теперь переходим к этот пятый пример,
заметить здесь, что мы сейчас есть трио папок,
и это немного заблуждение на данный момент
потому что для простоты ради класса,
Я только что бросили все
в Джон Гарварда Общественная Справочник просто
так что мы можем перейти его через браузер, но заметьте -
игнорировать эту часть на мгновение,
тот факт, что я там.
Обратите внимание, что у меня есть три подкаталоги: общественные,
шаблоны, и включает в себя.
Идея сейчас является то, что в Правильно настроенный веб-сервер Я
скажет Apache, что это Веб-сайт имеет общедоступным
файлы здесь, и нигде больше.
Так что файл вы думаете Я собираюсь увидеть внутри
общественного если я типа LS?
Что хотя бы один файл это, вероятно, там?
[Выкл микрофона комментарий]
Хорошо индекс точка PHP, и какой файл, очевидно, не
там среди других?
Как помощники точка PHP, заголовок точка PHP, подвал точка PHP;
все фрагменты, все функциональные
что на самом деле не нужно чтобы быть публично доступны,
она должна быть полезной файлами
что являются общедоступными, но сами они,
ни один пользователь не должен видеть или десть URL для помощников точка PHP.
Обратите внимание, что вместо того, чтобы, если я иду
в включает в себя есть помощники точка PHP,
и если я пойду в шаблоны,
есть подвал и заголовок точка PHP.
Честно говоря, я мог бы поставить им в том же каталоге,
но я пытаюсь быть даже более анальный о сохранении файлов
, которые только вид статические шаблоны отличается
от функциональных файлов как помощники точка PHP,
и я просто придерживаясь некоторых довольно распространенных соглашения
называя каталоги включает в себя и шаблоны.
Так что единственное, что изменены, то снова путь.
Если мы идем здесь заметить что я теперь просто
включить относительный каталог,
точка точка слэш включает помощники точка PHP,
или я могу быть немного более собственно и сделать что-то
как это, PHP и много
языков есть эти специальные символы
, которые представляют каталог текущего файла,
так подчеркивают подчеркивания реж подчеркивают подчеркивания представляет
любой каталог это этого файла,
и поэтому, если вы просто объединить с помощью оператора точка, что,
которые позволили бы достичь такой же результат,
и имеет тенденцию быть немного более эффективен потому, что вы можете получить
в ситуации с относительной каталоги были просто говорю точку
или точка точка может на самом деле принесет вам в неправильное место,
таким образом, это имеет тенденцию быть немного более надежной.
Ладно, так что хотя и остается?
Что вы еще не нравится об этом?
Что можно было бы улучшить, и вы прокомментировал это раньше я думаю,
что есть еще некоторые вопросы?
[Выкл микрофона комментарий]
Право, конечно, мы не имеем , чтобы начать писать как сайты
что выглядеть следующим образом, не так ли?
Это не чувствует все, что намного лучше,
есть еще копировать вставить.
Я до сих пор требует прямой в верхней части.
Я до сих пор оказывают Заголовок оказать нижний колонтитулы.
Там очень много дублирования.
Да?
[Выкл микрофона комментарий]
Да, точно, так что мы взяли шаг к рода расщепления
до "с" с "V", так MVC является Model View Controller;
Контроллер является своего рода мозги приложения.
Модель, как правило, данные или некоторые общие функциональные,
и вид имеет тенденцию быть эстетика, шаблон,
таким образом, мы сделали шаг в сторону отделяя "с" с "V"
, потому что мы сейчас по крайней мере, Каталог этот шаблон, в
но даже там мы по существу есть один контроллер на один файл.
Это не выглядит как есть гораздо логика здесь происходит,
но индекс точка PHP является эффективно контроллер.
Когда вы заходите на URL и заканчивая в рубрикаторе точка PHP,
всю логику, которая реализует, что страницы правильно
в индекс точка PHP, и то же самое для лекций точка PHP.
То же самое для неделю нулевой точка PHP.
Так мы вроде Strone наш Логика повсеместно,
и он чувствует, как это не собирается
масштабировать очень хорошо, как только мы есть не четыре, но сорок страниц
если каждая страница начинается с мне копирования старую версию
файла и просто настройки некоторых
содержания внутри него.
Таким образом, мы только приняты шаг к этому,
и один из инструментов давайте познакомимся
в среду является фреймер называется "Laravel"
и это очень популярная база PHP,
Другие включают "Fuelphp."
Там в старший называется "Codeigniter."
Там одна называется "Торт".
Там одна называется "Симфония".
Я имею в виду, если вы Google фреймворков,
есть зверское количество как рамок
что люди, которые реализованы.
Laravel является одним из более и желающих;
это один из пылесоса те, и вы найдете
что в конечном итоге это помогает сохранить вас совсем немного
времени, хотя есть немного кривой обучения,
но, что мы будем направлять Вы более в среду.
Кроме того, мы будем вводить то, что называется "ОРМ".
В этом случае, мы будем использовать то, что приходит
с этой структурой называется Laravel.
Она называется "Красноречивый" и это всего лишь слой кода
что позволяет среди прочего вещи говорить с базами данных.
И здесь тоже, позвольте мне украсть Пример, который является либо недавнее
или возврат для некоторые из вас с 50.
Если вы действительно брали 50, и Вы сделали "CS50 Финансы,"
Вы, возможно, помните файлы, Вы пишете или переписал, которые выглядят
как это, это было Войти точка PHP, и в то время,
тем более, что мы не тратить много времени
на PHP основы на ранней стадии,
это может само по себе есть был довольно сложным,
что мы и сделали, по сути, попытаться упростить конструкцию.
Мы действительно не отделить "M" от "V" с "C" все, что многое
проблем, которые "Семь CS50 Финансы,"
но обратите внимание на одну вещь который, будем надеяться начать
в ближайшее время тереть вас неправильный образом, что-то вроде этого.
Я имею в виду, не только был этот войти точка PHP контроллер.
Было также говорить непосредственно
к базе данных специально используя сиквел, который не собирается
масштабировать очень хорошо, когда чем приступить к работе с одним
или два или три партнера.
Например, если один из партнеры отвечает
для создания ваших таблицы базы данных и приходить
с вашими индексов и выяснить
, что должно стать ключевым, первичные ключи, внешние ключи,
и все, что, решив на имена таблиц и все, что.
Теперь вы другой человек в группа должна знать все
проектных решений он или она сделала, и теперь нужно
на жесткий кода эти решения в файл, так что теперь он
или она довольно много сдерживает
больше никогда не изменить эти имена таблиц.
Никогда больше изменить те, поданные имена
без предупреждения.
Более того, вы не можете действительно легко работать с той же файл
не сталкиваясь друг с другом, если он
или она постоянно изменение названия,
и у вас есть старый версии и так далее,
так что это просто приглашая много-много головной боли.
Более того, как мы будем см. в скором времени,
хотя вам не нужно
сделать особенно сложные запросы здесь,
как только вы начинаете Наличие нескольких столы, два стола, три, пять,
десять таблицы в MySql или как правило, реляционная база данных,
вы должны присоединиться те таблицы часто, если знакомы, и у вас есть
объединять данные из одна с другой,
и, честно говоря ваши запросы сиквел начать, чтобы получить больше, и больше,
и дольше, и более комплекс, и он просто начинает
получить намного проще делать ошибки
и намного сложнее сделать все правильно.
И так инструменты, такие как Красноречивый и ОРМ собирается
чтобы помочь нам смоделировать наши данные и это также эффективно собирается
чтобы генерировать код, который мы нужно, чтобы начать запросов к базам данных
в более сложных отношениях.
Так что если у вас есть первичный ключ сюда и внешний ключ
здесь, все что вам нужно сделать, это научить, что ORM,
Объектного отношения Mapper, что эти отношения
и он будет выяснить, что запросы для выполнения, для вас.
И только в редких случаи вам нужно
чтобы обязательно напишу Продолжение код самостоятельно.
Если вы действительно хотите, чтобы тонкой настройки что-то,
но по большей части, вы можете просто начать лечение лиц
в базах данных, как верно объекты, а не эти плоские ряды
что вы каким-то образом нужно реконструировать и де нормализации.