>> [Музика, яка грає]
>> Девід Дж Маланій: Гаразд.
Це 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.
І тому ми залишимо тут сьогодні і підібрати з цим в середу
і ввести баз потім.
>> [Музика, яка грає]