[Powered by Google Translate] [Тиждень 8]
[David J Малан] [Harvard University]
[Це CS50.] [CS50.TV]
>> Ласкаво просимо назад.
Це CS50, і це є початком 8-му тижні.
Пару можливості на цьому тижні,
серед них ця розмова тут, в яку їжу будуть обслуговуватися.
Для отримання додаткової інформації перевірити слайди, які знаходяться в мережі.
А також ще одна подія цього тижня наші власні Томас Carriero.
Він один із колишній глава CS50 в навчанні хлопців, які зараз перебуває на Dropbox,
Він хлопець, який з'єднав нас з вами знаємо, що,
так що якщо ви хочете більше, що голова їхню розмову цим днем ​​для Dropbox і багато іншого.
CS50 обід в цю п'ятницю.
У приєднатися до нас, якщо ви зможете, 1:15, як звичайно, Вогонь і лід.
>> І тепер ми зануритися в те, що називається семінари.
Наші CS50 семінари, нагадаємо, ці факультативні заняття на чолі з вченням стипендіатів
і звичайно помічники і друзі, звичайно,
Люди з групи в кампусі називають ABCD, яка являє собою групу
технофіли на території кампусу, а також група під назвою ЖКГ,
Товариство Гарвардського комп'ютер, студентів, які аналогічним зацікавлені в обчисленнях.
Реєстр в цьому році семінарів включає в себе семінари з Android і IOS і JavaScript
і PHP, Unix, Vim, і більше, так розумію, що ці семінари йдуть вгору.
Якщо ви хочете, щоб RSVP для будь-якого з них відправитися в URL, що там.
Ми будемо потім розмістити на веб-сайті курсу часи і місця, як тільки вони будуть завершені.
Але знаю, чи варто їсти 5 році до семінари доступні в Інтернеті,
багато з яких все ще дуже багато поточної точки зору технології ви могли б
хочу грати з для остаточного проекту, так що голова там протягом деякого доступні відео їх.
>> CSS, ті з вас, хто знайомий з CSS вже,
що це таке в двох словах?
Що таке CSS?
Це каскадні таблиці стилів, і що це значить?
Що це зробить для нас, CSS?
Гаразд, давайте зігрітися простіше один, HTML, мова розмітки гіпертексту.
Що це для нас зробити?
Будь взагалі?
Це стає дуже незручно ставити ці запитання.
HTML, мова розмітки гіпертексту.
Так? Ні?
[Нерозбірливо відповідь студента]
Добре, добре, це дозволяє розмічати текст для відображення у веб-браузері.
Це не мова програмування.
Це справді є мова розмітки, який означає, що вона наказує браузеру, як відображати
Інформація, таким чином, найпростіші втілення цього, як ми бачили
це те, супер просто, як boldfacing, відкриває дужка б замкнутий кронштейн говорить
зробити цей текст жирним, і це насправді лише один з багатьох способів
, В якому ми можемо зробити це, і дійсно, в ці дні краще підхід
для стилізації ваших веб-сторінок, роблячи речі, жирним шрифтом і курсивом
і по центру і обгрунтованим і тому подібне, не зроблено за допомогою HTML-тегів тільки
а з технікою називають CSS, каскадні таблиці стилів.
Це мова сам по собі.
Це теж не є мовою програмування, але-
всім, це Ден, який тримає приєдналися до нас сьогодні.
Деякі технічні труднощі. Не проблема.
>> CSS дозволяє стилізувати сторінку
, Встановивши, що називається властивостями, так що давайте подивимося на цю
шляхом деякі основні приклади.
Відпустіть мене в прилад сьогодні.
У мене є джерело 8 понеділка каталог тут,
і я збираюся йти в каталог CSS, де ми маємо цілий букет
файлів чекає нас прямо тут,
і в цій папці у нас є, наприклад, search0.html в минулий раз.
Тепер згадую з search0 ми вийшли на цю замітку
від роду здійсненні Google або дійсно тільки передній кінець для нього тиждень тому,
і зауважив, що у нас було кілька нових тегів немає.
У нас був h1 для великої, жирний заголовок,
форми, які дозволили нам насправді є HTML форма для введення даних користувачем.
Дії, який був сенс дій атрибутом
на HTML тега форми?
У чому був сенс цієї дії?
Я просто зроблю це сьогодні.
Дія є місцем, де форма буде представлена.
Справа в тому, що говорить, дія = "google.com / пошук"
означає, що коли користувач натисне кнопку або еквівалент
всі поля форми заповнені вони будуть відправлені не на нашому сервері
або наш прилад, а до цього конкретного URL в Google.
І метод, який він збирається використовувати називають отримати,
і отримати, на даний момент, це просто техніка для передачі інформації по веб-серверу
шляхом URL, так що давайте кинемо швидкий погляд назад, як це працює.
>> Зверніть увагу, що є вхід, чиє ім'я д
, Тип якого є текст, а потім другий вхід типу являють
, Значення якого CS50 пошук, і дійсно, якщо ми відкриємо цей файл тут,
search0.html, це супер простій формі,
і якщо я шукаю щось подібне комп'ютерної науки
а потім натисніть Enter або натисніть на CS50 пошук
зауважити, що те, що відбувається за межами дістатися до Google
Я спеціально закінчили в цьому URL у верхній частині,
google.com / пошук? Q = комп'ютер + наука,
та інформатики, очевидно, що я набрав дюйма
+ Просто означає, що там прогалину було,
і це зроблено в браузері, просто щоб переконатися, що немає ніяких
плутанина і прогалини у фактичних URL.
І тоді д, звичайно, ім'я параметра.
Ми не бачили, як ми, програміст, може насправді доступ Q поки немає.
Можна припустити, що Google знає, що робити з цим тут,
але ми повернемося туди свого часу сьогодні.
>> Але дозвольте мені глянути, а не на search1.html,
, Яка виглядає трохи по-іншому, тому що я вирішив, що ця форма тут було трохи шкутильгає.
Я маю на увазі, це в лівому верхньому кутку.
Там насправді ніякої естетики, і тому я хочу, щоб стилізувати цю
трохи більше, як Google, чия домашня сторінка, нагадаємо,
Навіть якщо ви не можете відвідати його, що часто, схоже, про це сьогодні на Хеллоуїн.
Якщо ми замість цього відкривають версії 1 цього файлу, пошук 1.html, я його центру.
Тим не менш досить потворні, але принаймні тепер я почав контролювати естетику цій сторінці,
не тільки розмітка їх.
Давайте поглянемо на пошук 1, і там дійсно тільки одна різниця тут,
, Які можуть вискочити на тебе, а може і ні,
але те, що один рядок або уривок різниця?
>> Там у цей атрибут стилю, так що виходить, що в HTML
більшість елементів, більшість тегів може мати атрибут стилю на них,
і всередині цього стилю атрибута в лапках,
і що рядок у лапках є CSS.
Ви можете поставити каскадних таблиць стилів там
, Вказавши його в якості імені властивості
двокрапки слід значення.
Це свого роду нещасних дизайнерське рішення кілька років тому
, Що CSS це мова сам по собі,
але синтаксично це дуже відрізняється від HTML.
У цьому випадку, ми бачимо, що всередині мого веб-сторінки, які написані на HTML,
У мене є CSS всередині цих лапок, і Конвенції про CSS
є те, що у вас є те, що називається властивість випливає, знову ж таки, товстої кишки,
після чого значення цієї властивості, так що немає знаку рівності.
Там немає додаткових лапки.
Це просто, це розділених двокрапкою пару ключів значення,
і текстовий рядок робить саме те, що він говорить.
Це вирівнює текст в тіло сторінки, які дійсно кишки сторінки,
в центрі.
>> Добре, кінцевим результатом те, щоб бути ясно, полягає в наступному.
Не все, що сексуальніше, але принаймні це по центру і трохи більше схоже на реальну Google.
Але що, якщо я замість цього відкривають версія 2 цієї
і вказати тут новий тег взагалі?
Тепер у голові моїй сторінці, яка раніше була тільки який тег
У всіх попередніх прикладах?
Це просто було це, назву.
Хвилину тому глава теги виглядала наступним чином.
Тепер замість нього є стиль всередині тега це,
і це теж, я прошу вибачення, синтаксично виглядає дуже відрізняється від HTML,
але ви звикнете до нього, в результаті чого всередині стилю тега
Тепер я можу винести за дужки те, що було хвилину тому
атрибутів, атрибут стилю, і я можу поставити його на самий верх моїй сторінці.
>> Чому?
Ну, це крок до очищення речей, так само, як у письмовій формі C код
ми будемо іноді писати функції для виключення загальної функціональності.
Це просто трохи чистішим, щоб почати факторингу з таких речах, як естетика
в одному місці замість того, щоб все це пересипати всієї вашої HTML.
Це теж робить те, що він говорить, хоча є трохи нового синтаксису.
Це ось селектор, і тіло просто означає, виберіть елемент тіла
і застосувати наступні властивості до нього.
Ну, власність точно так само.
На всяк випадок я додав крапку з комою в кінці кінців,
яка має тенденцію бути конвенцією, і я обгорнутий всю цю власність
у фігурні дужки, тому що я дійсно може мати різні речі.
Я міг би насправді сказати щось подібне кольори: синій;
>> Тепер це теж не збирається бути на крок в сторону все, що завгодно гарніше,
але якби я зараз повернутися до версії 2 я принаймні зараз зробили тіло моє
сторінки тексту всі сині.
Кнопка залишається тим же, тому що це вхід. Це не чистий текст.
Але все інше, що текст, як CS50 пошук нагорі, насправді сині.
Знову ж таки, все, що ми зробили зараз, це видалити з організму тегів, зауважте,
атрибут стилю, і ми враховуватися це тут.
Це не величезний крок вперед, але якщо ми візьмемо це ще один крок вперед
зауважити, що ми можемо зробити в цій третій версії тут.
>> У search3.html веб-сторінки майже ідентичні
крім того, що новий тег зараз?
Link, так що ця не дуже влучно назвав
тому що ви не пов'язуючи в сенсі гіперпосилання.
Швидше за все, ви робите щось на зразок еквівалента # включити в C
причому посилання тега з атрибутом HREF
і отн атрибуту говорить, йти вперед
і копіювати вставити вміст файлу з ім'ям search3.css прямо тут, по суті.
Це не зовсім те, що, але це дух його.
Він каже, що йти з відкритим файлом, search3.css,
і ставитися до нього, як ніби користувач набрав його прямо тут, в главі сторінку
так само, як я зробив в попередньому прикладі.
Search3.css, між тим, досить простий.
Це дійсно просто містить саме те, що було хвилину тому
в стилі тега, але я враховані це тут в свій власний файл.
>> Навіть якщо ми не витратили багато часу на все це в HTML або веб-програмуванню
просто інтуїтивно те, що мотивація, мабуть, виносячи
це невеликий фрагмент навіть CSS в окремий файл
, А потім включити його з цим посиланням тега тут?
[Нерозбірливо відповідь студента]
Гаразд, це легше читати в тому сенсі, що у вас є CSS у файлі CSS.
У вас є HTML в HTML файл, так що це більш читабельним в цьому сенсі.
Що ще може бути переконливим? Так.
[Нерозбірливо відповідь студента]
Так, так що ви можете включити його багато разів, так що зараз ми робимо це
Основні приклади з окремими файлами, але припустимо, що ви насправді робить
реальний сайт, як ви будете на PSET 7 або ваш остаточний проект, можливо,
і ви хочете мати кілька веб-сторінок, як, безумовно, зустрічається на
фактичні World Wide Web, і було б вид кульгавого
мати, щоб скопіювати і вставити той же синій колір
і той же текст вирівняний центром в кожній з цих сторінок.
Швидше, це має сенс винести за дужки, так само, як ми зробили в C
с. файл год, поклав його в одному місці,
У цьому випадку search3.css, а потім дозволити будь-якого файлу
У ваш сайт насправді включити цей файл через цей тег тут, у рядку 16.
Як це зазвичай і буває, ми почали з версії 0, що вид робіт
але не обов'язково кращі, і з кожним кроком,
Пошук 1, пошук 2, і тепер пошук 3 ми взяли ці кроки дитини
на проекти, які є трохи більш чистим і більш підготовчих
Для більш складних сторінок, які ми могли б зробити в майбутньому.
>> Дозвольте мені відкрити один останній приклад тут, щоб показати
ще більш стилізованим сторінки, але спочатку давайте подивимося на HTML.
Це search4.html, і зауважив, що структурно це майже те ж саме
за винятком введення нового тега Div.
Div тег, який вводить поділ на цій сторінці.
Ви можете думати про це як про невидимий прямокутнику.
Це свого роду створює смугу область на веб-сторінці
, Який можна стилізувати всі відразу.
Що я зробив тут полягає в наступному.
Усередині мого тіла тега, який був там весь час,
Я кажу, що створює підрозділ сторінці тут по лініях 45 до 47,
і це означає, по суті, дайте мені невидимий прямокутник у верхній частині сторінки.
Тоді дайте мені другий прямокутник, хоча і невидимим, нижче,
і ідентифікувати його по імені вміст, а потім, нарешті,
дай мені третій розділ сторінки в нижній частині
називається ID.
Ми побачимо, чому я зробив це через хвилину,
але концептуально у мене є заголовок дивізії.
У мене є утримання підрозділу, і у мене є підвал поділ сторінки
хоча це тільки в розмітці.
Користувач не побачить 3 прямокутника,
але начебто структурно там, за лаштунками
вони насправді.
>> Тепер, хто піклується? Чому насправді це зробити?
Все інше на сторінці так само, як ми бачили раніше.
Ось моя форма. Ось мій внесок, мій вхід, рядки і так далі.
Ось зображення, хоча, таким чином, ми будемо бачити, куди це прийшло від всього декілька хвилин.
Ось підвал, який є новою, тільки тому, що я хотів би представити
кілька змістом тут.
Якщо ми прокручування вгору зауважити, що ID цій справ є заголовок.
ID цій справ є зміст, і ідентифікатор це один колонтитул.
І, як випливає з назви, коли у вас є ID атрібута
в HTML, за визначенням, воно повинно однозначно ідентифікувати
один з елементів, один з тегів на сторінці.
Тягар повністю на вас пам'ятати, що у вас є заголовок ID вже.
У вас є підвал. У Вас є зміст ID вже.
Комп'ютер не збираюся з'ясувати, що доступно ID для вас,
так що ви можете випадково дати 2 ID тегів заголовків,
і це було б просто неправильно.
>> Ви повинні мати на увазі, що ви створили,
але як тільки ви це зробили, зверніть увагу, що ми можемо зробити тут.
Тепер я можу вказати в моєму стилі тегів у верхньому
або, що еквівалентно, в моєму файлі CSS, якби я до сих пір використовують цю версію,
Я можу сказати # заголовка, і що це означає, що все, що тег
У цьому веб-сторінка має ідентифікатор заголовка
і #, просто людські конвенції, являє ID.
Різке знак або знак фунта являє ID.
Заголовок це ім'я, яке я дав йому.
Це означає, що застосовувати цю властивість CSS
на будь-який тег на цій сторінці, носить ідентифікатор заголовка.
Те ж тут справа.
Застосувати цю власність, яка буває те ж саме, будь-який елемент
з ідентифікатором вмісту, а потім тут
помітите, що я став трохи любитель з колонтитул.
Будь-який елемент з ідентифікатором підвал, з якого не може бути тільки один, за визначенням,
піти далі і зробити свій шрифт меншого розміру,
її вага шрифту сміливий, його маржа 20 пікселів.
>> Що це значить?
Це просто маржа по верхній, нижній і лівій і правій.
Це означає, дайте мені 20-піксель невидимим краєм навколо нього
просто натиснути все інше від нього небагато, як ви могли б зробити в Word,
Microsoft Word або сторінки або тому подібне.
І тоді текст по центру.
Давайте подивимося на кінцевий результат, а потім ми повернемося до одного залишився фрагмента CSS там.
Це 4-й версії, наш останній для пошуку прикладів, і це набагато, набагато сексуальніше.
Зараз, чесно кажучи, я просто в пошуковій системі Google "Google шрифту логотипу генератор".
І це дозволило мені створити GIF, формат зображення, яке виглядає як, що там.
У самому справі, ви можете зробити це занадто.
У нас є "Google шрифти, логотип генератор".
>> Давайте подивимося, якщо ми можемо це зробити.
Добре, я думаю, що це сайт який я використовував.
Ми можемо сказати, EC 10, наприклад, і зробити їх самостійно.
Ви можете грати з цим протягом усього дня, а потім натисніть правою кнопкою миші
, А потім завантажити фактичного GIF, який це все, що я зробив.
І дійсно, ось чому в моєму HTML, нагадаємо, сюди
У мене був образ тег, який ми бачили минулого тижня коротко
джерелом яких є logo.gif.
І те, що знову була мотивація за те, що це альт атрибут,
це альтернативний атрибут?
Так.
[Нерозбірливо відповідь студента]
Добре, таким чином, 2 причинам дійсно, якщо браузер не може потягнути зображення
тому що у вас повільне підключення до мережі або зображень пошкоджений
або щось подібне, принаймні, людина може бачити "CS50 пошук"
, А потім і доступності причин.
Якщо у вас є користувач, який є сліпим і використовується для читання з екрану
і тому, очевидно, не може бачити образи, які вони можуть принаймні
почути текст, якщо їх комп'ютер говорить їм.
>> Загалом, це найкраща практика, коли мова заходить про доступність сторінок
так що навіть користувачі в цій ситуації може почути чи побачити, так би мовити,
що це таке, що це на вашій сторінці.
Там ще одна річ, яку я зробив тут
який трохи цікавої, і ми будемо бачити більше про це в задачу встановлено 7
через один з шорт на чолі з одним з вчення товаришів.
Але # змістом відноситься до тегу
ID якого є зміст, але тоді є прогалина, і потім є слово вхід.
Ну, що цікавого CSS є те, що ви можете
см. тегів в сторінку роду ієрархічно,
і те, що цей фрагмент засобами CSS, це знайти тег
ID якого є зміст, а потім застосувати наступні властивості
для всіх вхідних тегів, які є нащадками змісту,
, Що в тому, що з відступом усередині нього.
Відступи, знову ж таки, важливо тільки до комп'ютера, а не до людини,
але за угодою ми відступ речі, як ми заглибитися в сторінки,
таким чином, це означає, застосовуються край на 5 пікселів будь-якого елемента вводу
що десь усередині або вкладені в
елемент з ідентифікатором вмісту.
>> Хто що звернутися?
Ну, там насправді саме ці 2 хлопця тут.
Зверніть увагу, що всередині виду є 2 входи,
як там було на всі ці приклади.
Але зверніть увагу, що ці 2 входи трапиться бути вкладені,
хоча і трохи глибоко, пару шарів відступи,
всередині тега з ідентифікатором вмісту.
Що це значить?
Якщо ми йдемо в браузер тут можна побачити дуже небагато-
Дозвольте мені збільшити, тобто трохи відступів між кнопкою
і між текстовим полем.
>> Дозвольте мені тимчасово відключити цю функцію.
Відпусти мене до мого CSS, і дозвольте мені йти вперед і тільки
змінити цю маржу від 5 до 0 пікселів пікселів.
Дозвольте мені йти вперед, то і збережіть файл, повернутися до пошукової системи
і перезавантажити, і дивитися на середині сторінки.
Все, що було стислі разом, і, коли я вперше збитими цьому прикладі до
Я думав, що виглядало безглуздо з текстового поля, а потім кнопку безпосередньо під ним.
Я хотів, щоб доповнити його небагато, так що я представив поля.
Те, що ми не будемо робити в лекції проходять через кілька десятків
CSS властивості, які існують, тому що, знову ж, є такі речі, як розмір шрифту,
шрифту, край, вирівнювання тексту, і кілька десятків інших,
і ми будемо називати вас проблеми встановлено 7 різних підручники онлайн
і посилання, які дозволяють підібрати ці речі.
Але те, що дійсно важливо в кінці дня
>> , Щоб зрозуміти, як ці речі не застосовуються.
Знову ж таки, якщо ми маємо в стилі теги якої
може піти селектори, начебто ідентифікаторів, які визначають
до якого ви хочете застосувати ці властивості,
а потім ви кладете властивості як ключові пари значень
розділених двокрапкою, а потім закінчив з комою,
або ви можете копіювати все це, і покласти його в окремий файл CSS
сама по собі.
Гаразд, будь-які питання по концепції
або велику картину CSS?
Ви будете знову бачити більше його в PSET 7,
але ми будемо тримати це взагалі досить просто.
Ні? Добре.
Це час для реального мови програмування,
і ми повернемося до трохи CSS у вигляді прикладу.
PHP насправді дивно доступною мовою
в тому, що це синтаксично майже еквівалентно C.
Іншими словами, якщо ви знаєте C, ви знаєте, по більшій частині PHP,
принаймні, синтаксично, хоча є деякі нові функції
і деякі нові поняття, які ми повинні будемо подивитися.
>> Але по більшій частині, тепер, коли ми переходимо від С до PHP
Більшість нових речей дійсно за великим рахунком,
як ви використовуєте мову для програм на веб-на відміну від
в командному рядку або у рядку блимає, як ми робили досі.
Для порівняння, особливо з PSET 7 і остаточний проект вперед,
у скористатись цим URL тут, якщо ви хочете, щоб читати на формальності PHP.
Це насправді хотів безкоштовний онлайн підручник ефективно,
і ви також виявите, що те, що дійсно добре про PHP
є те, що існують сотні функцій, які приходять з нею,
, Тоді як в C ви не обов'язково мати доступ до
більше функцій, ніж було в математичну бібліотеку, CS50 бібліотеки.
У PHP і багато сучасних мов, Python і Ruby, серед них,
Ви отримуєте доступ до так багато більше функцій, а значить, ви отримаєте писати
набагато менше коду, тому що ви можете стояти на плечі інших людей
, Які вже написані деякі речі для вас.
>> Давайте короткий огляд синтаксису PHP, а потім написати кілька прикладів.
Що приємно про PHP в першу чергу
Є немає головної функції.
Якщо ви хочете написати програму в PHP ви тільки починаєте писати код,
і вам не доведеться турбуватися про головне.
Там немає Int. Там немає повернення.
Там немає ARGV, агдс, що потрібно, коли ви пишете програму.
Замість цього ви можете просто почати писати код, і це частково
тому що PHP є те, що називається інтерпретована мова.
C був складений, і він був складений в тому сенсі, що ви починаєте
з вихідним кодом, запустити його через Clang, який є компілятором,
і в кінцевому підсумку через деяку кількість кроків, які ви отримаєте код об'єкта, 0 і 1.
PHP і Python і Ruby, і Перл та ін
різні типи мов у тому, що ви не компілювати їх.
Ви не йдете з вихідним кодом 0 і 1.
Ви просто запустити вихідний код, і ви запустите вихідний код
пишіть в звичайний текстовий файл, що закінчується на. PHP в даному випадку
замість. с, що робить програма на комп'ютері
воно буквально інтерпретує код рядок за рядком за рядком.
>> Іншими словами, замість того, щоб писати програму і запустити програму
безпосередньо вам, а написати програму з файлом закінчуються на. PHP.
Потім ви запускаєте програму під назвою фактичної php.exe, якщо ви на Windows,
або просто PHP, якщо ви на Mac OS або Linux,
і Ви надаєте в якості внеску в програмі PHP власного вихідного коду,
і його мета в житті, щоб читати ваш код зверху вниз, зліва направо,
і робити все, що ви сказали це робити.
>> Давайте подивимося, що це буде означати, синтаксично.
У PHP у нас є умови.
На цьому слайді ідентичний тому, що ви бачили на тиждень 1
тому що синтаксично умовах, IFS і IFS ще і ще в PHP
виглядати точно так, як це.
Коли справа доходить до логічні вирази, що вони збираються виглядати точно так, як це.
Коли справа доходить до логічного множення речі разом, як булевских це буде виглядати саме так.
Перемикачі виглядають однаково, і ви отримаєте додаткове перевагу в PHP
, Що перемикачі в C можна було тільки ввімкнути символ або Int.
Ви не могли б перейти на рядок.
У PHP ви можете мати вираз
, Що є змінною, вміст якого рядок,
і ви реально можете зробити порівняння рядків в реальному інтуїтивно зрозумілим способом,
Чи не покажчика порівняння, для того, щоб вирішити, чи варто робити випадку я або J або щось ще.
Ми побачимо, що потенційно незабаром.
>> Петлі занадто чудесно те ж саме.
Для петлі мають ініціалізація, умова, і деяка кількість оновлень.
У той час як петлі, також існують в PHP.
Зробіть той час як петлі, також існують в PHP,
і масивами існує в PHP, але ось де синтаксис починає ставати трохи по-іншому,
але принципи ті ж, і поняття дійсно одні й ті ж
як вони були в тиждень 0 з нуля.
Перш за все, це знак $.
Це було дизайнерське рішення в PHP яким будь змінної
У PHP дизайн починається з $ знака.
Там немає більше X, Y, Z. Це тепер $ X, $ Y, $ Z просто так.
Це щось тримати в голові, і тепер на правій стороні
це схоже на масив,
але ми використовуємо квадратні дужки тут.
У PHP і JavaScript в, як ми бачимо в остаточному підсумку,
оголосити масив ви відкриті квадратні дужки і закрив квадратні дужки,
і тоді у вас є список розділених комами значень, будь то цілі
або рядки символів або, що ви хочете, всередині цього виразу немає.
>> Тепер, як ми робили щось подібне в C?
Що було синтаксис для статично оголошенні масиву відомого числа?
Це було фігурні дужки, так що невелика різниця тут, але і в PHP
і в кінцевому підсумку наявність він просто використовує квадратні дужки, так насправді
Тільки цікава деталь тут є знаком $ на ім'я змінної
, А також у квадратних дужках, і є одна цікава річ
, Який був опущений, а на лівій стороні знак =.
Чого не вистачає, що ми були вимагає вже кілька тижнів? Так.
[Нерозбірливо відповідь студента]
Розмір, так що немає ніякої згадки про розмір масиву.
Чесно кажучи, немає жодної згадки в квадратних дужках у лівій частині
знака =, і, що ще відсутня в рядку?
Так. >> [Нерозбірливо відповідь студента]
Типу, так що цікаво, зокрема, про PHP
є те, що вона не є строго типізованих мов, як С,
і це сильно набрав в тому сенсі, що ви повинні сказати символів,
Ви повинні сказати INT, ви повинні говорити поплавка.
>> У будь-який час ви хочете, щоб змінна ви повинні сказати Clang, що його тип.
PHP трохи ледачі.
Він вільно набрані в тому сенсі, що
Ви можете мати поплавці й символів і рядків
і Інтс і так далі, але сама мова
насправді не хвилює, що ви покладете всередину змінної.
Ви не повинні інформувати його заздалегідь, який тип даних
збирається в змінну.
Це повністю залежить від вас, так що це гарна
в тому, що вам не доведеться турбуватися, як багато про типізації даних
і турбуватися, що ваші аргументи і так далі.
Це також означає, в кінцевому рахунку функцій в PHP збираєтеся бути в змозі повернутися
або Int більшу частину часу, і, можливо, саме в той час
вони будуть повертати логічне значення, логічне значення FALSE, наприклад, щоб показати, що щось пішло не так.
Це дає нам деякий потенціал зростання, але і зробить нас начебто дизайну
трохи повільнішою, коли справа доходить до введення даних.
>> Що ще мати на увазі тут?
Змінні виглядають цілком влаштовує, так що $ S = "привіт, світ".
Це, можливо, виведеної з попереднього прикладу,
і у нас є інший тип циклу.
Це одне ми насправді бачимо саме в той час, так як це дуже зручно,
Еогеасп побудувати.
У цьому випадку цикл по кожному елементу відбувається всередині його дужками 3 слова як правило,
$ Те перше, що й масив ви хочете перебрати членів,
Потім буквально ключове слово, а потім, нарешті,
іншої змінної ім'я, яке ви отримуєте на вибір.
Це може бути Foo, Bar, або елемент,
і те, що ця конструкція робить
, Якщо масив $ містить 10 елементів
на кожній ітерації цього масиву, вибачте, на кожній ітерації цього циклу
змінну елемент буде оновлюватися
першим елементом масиву, то другий елемент масиву,
то третій елемент масиву, тим самим усуваючи необхідність
зробити трохи дратує квадратних позначення кронштейна і
$ Я для того, щоб індекс в масиві.
PHP робить все це за вас і на кожній ітерації
просто вручає вам наступний елемент з масиву
без необхідності знати або піклуватися про його числове розташуванню індексу.
>> І тоді, нарешті, на даний момент, є ще одна особливість PHP
що це буде дуже корисно, особливо коли ми починаємо програмування в Інтернеті,
і це відомо як асоціативний масив.
Масивів, що ми знаємо до сих пір, як 20 секунд тому
і протягом останніх 8 тижнів масиви з числовими індексами,
роду традиційних масивів, де індекси цілих чисел,
0, 1, 2, на всьому шляху вгору.
Асоціативні масиви є набагато більш потужним.
Вони дозволяють мати довільні клавіші,
довільних індексів і довільні значення.
У той час як в традиційних масивів це 0, 1, 2,
в асоціативний масив, ви можете мати індекс
або ключ Foo, значенням якого є бар.
Ви можете мати ще один ключ, ім'я якого Баз і значення якого qux.
>> Знову ж, дурні комп'ютерні науки загальні імена змінних тут,
але справа в тому, що цей масив не має кронштейн 0 або кронштейн 1.
Це замість того, доведеться Foo кронштейн і кронштейн Баз.
Це набагато більш універсальні в тому, що ми збираємося, щоб мати можливість зіставити
слова з іншими словами, ключі зі значеннями абсолютно довільно,
і ми збираємося, щоб мати можливість отримати ці значення назад в фіксований час
тому що під капотом, що асоціативний масив
дійсно являє собою хеш-таблицю.
Нагадаємо, що хеш-таблиця дозволяє розмістити в деяких вхідних
хотіли покласти в слова Давида, якщо ви хочете, щоб вставити Давида в якийсь словник,
і тоді ви отримаєте назад деяке значення зазвичай.
У разі правопису, істинним або хибним.
Девід або що слово чи ні в словнику.
Асоціативний масив, насправді просто хеш-таблиці,
але це набагато більш зручним втіленням його.
Як ми побачимо, це буде, щоб дозволити нам зробити деякі речі
Дуже, дуже легко.
>> Давайте поглянемо на деякі основні PHP
приклади і подивимося, що ми можемо зробити з цією мовою.
Дозвольте мені йти вперед і відкривати в нашій вихідний каталог сьогодні
файл з ім'ям hello1.php.
Цей файл більше коментарів, ніж реальний код,
так що дозвольте мені насправді видалити всі коментарі з файлу
і представити Вам можливо, самий простий PHP програму прямо тут.
5 ліній, а деякі з них є прогалини,
так що помітити деякі ключові відмінності тут.
Файл називається hello1.php.
Найперша рядок, хоча, <? PHP.
Схожі за духом до HTML,
, Що послідовність символів, повідомляє комп'ютера
"Гей, комп'ютер, ось програма, яку ми знаходимося в в PHP."
Він упевнений, що це не збентежило, що це якась інша мова.
Лінія 2 є цікавою пробіл.
3-я лінія наш старий друг Printf,
на цей раз в контексті PHP.
PHP має свою власну версію Printf, який веде себе точно так само,
Так що це тільки збирається друкувати "Hello, World".
І тоді цей тег протилежної тут,>, означає, що саме для мого PHP коду.
>> Давайте подивимося, як управляти цим.
Я збираюся повернутися в свою вікні терміналу тут.
Я збираюся піти в мою PHP директорію.
Зверніть увагу, що у нас є ціла купа файлів, перший з яких є hello.php.
Дозвольте мені йти вперед і виконати це, hello1.php, введіть.
Доступ заборонено. Добре.
Як ми зафіксовані такі речі, як це в минулому?
Що це? >> [Нерозбірливо відповідь студента]
Нам потрібна читати і писати, але дозвольте мені зробити LS-л.
Пам'ятайте про це дещо загадково вихід якого hello1
здається, для читання і запису мною
але читається всіма іншими.
Виявляється, це насправді не є кроком у правильному напрямку.
Різниця, знову ж таки, з інтерпретована мова
це ви не запустите програму безпосередньо.
Ви, а не працювати перекладачем і передати його код
що ви написали так що він може інтерпретувати це рядок за рядком.
У цьому випадку перекладач або програму, яку я насправді хочуть працювати
буквально називається PHP.
>> Десь на цьому жорсткому диску апарата є програма
написав хтось інший називається PHP, або на ОС Windows php.exe.
Що я буду робити тут, я буду реально працювати PHP
але дати йому в якості аргументу командного рядка коду, який я написав,
і тоді я буду масштаб і натисніть Enter.
Вона працює моя програма для мене, зверху вниз, зліва направо.
Дозвольте мені йти вперед і відкривати невеликі відхилення від цього.
У hello2.php зауважити, що це занадто
в основному коментарі, тому дозвольте мені позбавитися від тих, як відволікання,
і те, що явно відрізняється зараз про цей файл?
Там ця нова лінія, кілька загадковим на самому верху.
У рядку 1 це #! / Бен / PHP.
Бен є Конвенція про Linux і Mac OS для двійкових файлів,
так / бен означає, що це папка, що містить купу файли
, Який запрограмований, одним з яких є PHP.
#! по прізвиську притон,
, Яка є швидким способом сказати це, і що це означає
є те, що, коли ви запустите цю програму тепер є натяк на початок файлу
, Яка говорить комп'ютера, що перекладач у використанні.
>> Це стає трохи дратує, якщо ви повинні були розповісти своїм користувачам і клієнтам
"Гей, ми написали цю програму під назвою hello1.php".
Все, що вам потрібно зробити, це назавжди запуску PHP, а потім ім'я цієї програми.
Чесно кажучи, було б просто приємніше працювати hello1.php,
І дійсно, ми можемо, якщо ми робимо наступне.
Дозвольте мені йти вперед і робити LS-л, а повідомлення в hello2 це ще тільки читання і запису
, А потім читати читати, так що я поки не можу це зробити, hello2.php.
Але ми ввели це дуже коротко останнім часом, команда CHMOD.
Якщо я CHMOD + х, який означає, що всі плюс исполнимости,
, А потім hello2.php, а потім зробити LS-л знову помічаємо, що змінилося.
Один з них, Linux показує мені ім'я файлу в зелену, щоб передати ідею
що це виконуваний файл, але що ще більш важливо, на лівій стороні
зауважити, що біт, що представляє х виконуваних в даний час встановлена.
Що це означає тепер це я можу запустити ./hello2.php як зазвичай,
натисніть Enter, і через притон на самому початку файлу
це натяк, знову ж таки, Linux, яка говорить
використовувати цей перекладач, щоб запустити цей файл.
Не турбуйтеся про змушуючи користувача вводити його насправді.
>> І що приємно зараз це начебто не має відношення до моїм клієнтам або друзям
яка мова я написав цю програму, тому я можу йти вперед з мв
і перейменувати цю річ hello2, наприклад.
І тепер, якщо я ./hello2
і зменшення моя програма продовжує працювати.
Ці файлові розширення людських конвенції, що це необхідно
щось на зразок Clang і зробити, хто дивиться на них.
Але для PHP, я міг би назвати це нічого розширення файлу я хочу.
Я міг би обдурити світ, думаючи, що я дійсно добре Ruby,
і я міг би написати hello2.rb, а потім запустити це,
і вуаля, тепер у мене є версія Ruby, яка є повною брехнею.
Але розширень файлів, не мають сенсу
якщо файл є виконуваним і має спеціальну цьому натяк на початок файлу.
>> Тепер, як і в сторону, дозвольте мені показати вам швидко версії 3,
яка є свого роду корисний трюк знати.
У hello3 я зробив щось трохи неправильно
що я буду оновлювати онлайн вихідним кодом.
У версії 3 і виходить, що на більшості комп'ютерів Linux
є програма під назвою окр для навколишнього середовища,
і що ви можете робити тут, якщо ви не знаєте, де PHP
встановлений на локальний жорсткий диск, тому що це дійсно може змінюватися в залежності від комп'ютера
що хтось використовує, ENV просто говорить працювати ENV,
, Який знаходиться на більшості систем, і з'ясувати, де PHP є.
Просто звичайний прийом, тому вам не доведеться турбуватися про з'ясувати, де програма.
Але якщо ви дбаєте, щоб з'ясувати, де програма і ви не дбав досі
Ви можете використовувати яку команда.
>> Дозвольте мені масштаб і тип яких PHP,
і зверніть увагу, він каже мені, що це насправді в USR / бен / PHP.
Це свого роду брехня. Це знаходиться також у відро для сміття.
Це просто показує мені перший удар.
Якщо ви коли-небудь задавалися питанням, де Clang є, що Clang, який в USR / бен / брязкіт,
, Які роблять, USR / бен / зробити, і що це значить, весь цей час
Ви могли вводити USR / бен / брязкіт ввести для запуску Clang,
але це начебто стомлюючої, щоб зробити це, тому деякі папки
як USR / бен і бен передбачаються за замовчуванням
так що комп'ютер знає, шукати в них для вас.
Будь-які питання з написання супер, супер просто Hello програми Всесвітнього
У PHP, а потім запустити його?
Тому що зараз ми почнемо впроваджувати більш переконливим синтаксису.
Гаразд, тут ми йдемо.
Ці програми, які ми бачили насправді всі з них раніше.
>> Якщо я відкриваю, наприклад, давайте зробимо beer1.php,
Ми не пройде через декілька версій, але те, що я зробив
був я сів і вилив її або перетворені
мій C код, код PHP тут.
Більшість з верхньої частини файлу коментарі тут.
Виявляється, є ще одна нова функція, ми повинні називати Readline.
GetString, нагадаємо, від тижня 0 вперед було CS50 річ.
PHP поставляється зі своєю власною зручною функцією називається Readline
, Що займає 1 аргумент, який визначає рядки
що ви хочете показати користувачеві, і те, що робить Readline
воно повертає все, що користувач набирає дюйма
У цьому випадку, я оголошенні змінної $ п.
Я зберіганні в ньому значення, що повертається Readline
Після запиту користувача з цим рядком.
Просто для резервного копіювання, щоб фактично виконати цю річ, відпусти мене попереду
і запустити PHP beer1.php.
Скільки пляшок буде? Давайте просто зробити 2 в цей раз.
Enter. Ось і все.
>> Програма є функціонально ідентичні версії C від тижні тому.
Але синтаксично давайте подивимося, що по-іншому.
Після того як я отримую Int від користувача помітили, що я роблю кілька помилок,
а якщо п складає менше 1 я пішов, і я роздрукувати
вибачте повідомлення користувачеві і вихід з 1.
Це теж трохи відрізняється.
У C Що ж нам робити? У C ми повернулися 1.
У PHP ви вийдете з 1, який відверто, я думаю, трохи більш інтуїтивним
тому що ви буквально виході з програми.
Гаразд, а потім сюди дратує пісні ідентичні синтаксично
за винятком змінної, так що тут, у рядку 24 вперед
помітить мого циклу майже те ж саме,
але в мене є $ в передній частині я і п,
і що також відсутній рядок 26, які ми мали в минулому
при оголошенні змінної я?
Там немає тип.
Це невірно в PHP сказати Int.
Ви просто не потрібно цього робити.
Комп'ютер, РНР досить розумний, щоб розуміти,
що якщо ви покладете номер в $ I він буде ставитися до нього
як номер для вас.
А потім тут ми вилку в $ я, $ I $ - 1.
Все, що те ж саме, а потім тут ми робимо "Нічого собі, це дратує" Printf
, А потім вийти (0).
>> Знову ж таки, винос в тому, що навіть якщо ми збираємося провести щодо
мало часу на PHP, звичайно, проти того, що ми зробили на C,
це майже те ж саме, і так, що ми будемо робити сьогодні і на наступному тижні
і за це дійсно зосередитися на деяких з нових ідей.
Просто щоб подивитися, що ще одна річ робить переклад більш з C,
це було супер просто програма, яку ми зробили на тиждень 1
або 2, що в кубі значення.
Але що цікаво, в той час про цю програму є те, що
введено поняття користувальницького написав функції, які ми самі писали.
Синтаксис в PHP майже те ж саме.
Ось моя програма нагорі.
Зверніть увагу, знову відсутня будь-яке поняття основного.
Я починаю писати код, і це те, що збирається отримати виконаний інтерпретатором.
Я роздрукуйте х тепер 2, мабуть.
Тоді я стверджую, кубатури ...
Тоді я називаю куб функції і передати в $ х
і привласнити повернене значення $ х.
Тоді я стверджую, що це кубі, і тоді я говорю про це, яке, ми сподіваємося,
скажу х зараз 8.
Синтаксис функції в PHP є дуже небагато інша.
Знову вистачає возвращаемого типу.
Знову ж зниклих безвісти возвращаемого типу, а також відсутня, так це те, що інший тип?
[Нерозбірливо відповідь студента]
Ну, гаразд, це добре. Давайте повернемося до цього в секунду.
>> У нас немає, наприклад, INT тут.
Ми не, наприклад, були Int тут, тому що, знову ж таки, в PHP
Ви просто не повинні і не повинні робити,
а там це нове ключове слово називається функцією.
У PHP це майже трохи зрозуміліше, тому що, коли ви хочете функція
Ви буквально говорять функцію, ви даєте йому ім'я, а потім через кому
якщо будь-яка з її аргументів.
Немає необхідності говорити, недійсним або щось в цьому роді, а потім повернутися і те ж,
$ * $ * $.
Що ж не вистачає? Семмі вказав на це тут.
У верхній частині файлу повністю відсутня в PHP також є прототипом.
Це теж по дизайну.
Мови та перекладачі, як PHP розумніші, ніж коли-небудь C
У компілятори, як Clang.
>> Нагадаємо, що Clang, якщо ви не повідомите йому, що куб існує,
якщо ви не повідомите йому, що Printf існує у вигляді прототипу з
або з # включити, ну, він збирався кричати на вас і навіть не компіляції коду.
PHP і більш сучасні мови набагато розумніші, коли справа доходить до цього.
Вони візьмуть на себе прочитати весь код
, А потім кричати на вас, тільки якщо він знаходить куб нікуди.
Це не має значення, якщо куба перебуває на нижній або верхній або навіть в деяких окремому файлі.
PHP і подібних мов в даний час достатньо розумні, щоб дивитися в майбутнє
на все, перш ніж вважаючи вас, як допустивши помилку.
Де це залишає нас?
>> Давайте зробимо один приклад тут, в умовах,
і якщо я відкриваю conditions2.php повідомлення теж
Синтаксис тут майже те ж саме.
Я використовую Readline замість GetString, але цю лінію так само, як і раніше,
"Я хотів би ціле, будь ласка".
Я тоді, якщо умова, інакше, якщо, а потім інше,
але функціонально ця програма також ідентичне тому, що ми зробили тижнів тому
так що якщо я запускаю цю річ, PHP з conditions2,
і я даю йому номер, як 23 -
Я вибрав позитивне число. Якщо я даю йому -1 Я вибрав негативне число.
Якщо я даю добре 0 дійсно взяв 0.
Так хто ж дбає про все це?
Ну, один з забавних роду вправи тут
Для мене принаймні, повинен був повернутися і подивитися, як швидко я міг би здійснювати PSET 5,
опечатки PSET.
Нагадаємо, що там був цей файл під назвою speller.c,
і там був файл з ім'ям dictionary.c.
Те, що я зробив, я як би витратив кілька хвилин, і я перетворив код C
в коді PHP, і ми не будемо витрачати багато часу на спеллер
тому як в PSET 5 ви дійсно не потрібно, щоб
витрачати багато часу на спеллер себе, тому що ваша увага була прикута до словника.
>> Досить сказати, що якщо ви прочитали правопису,
Цей файл тут, це в значній мірі еквівалентно код C
ми дали вам для PSET 5.
Я тільки що додали близько $ на місцях.
Я змінив деякі імена функцій, якщо вони не існують в PHP.
Там одна додаткова річ тут, preg_match,
який трохи любитель спосіб робити щось, але ми повернемося до цього в кінці кінців.
Але в загальному, правопису майже ідентичні, і якщо ви подивитеся на саме дно
те, що він в кінцевому підсумку випльовує це тут,
слова з помилками, слова в словник, слова в тексті.
Гаразд, так що цікаво зараз полягає в наступному.
У верхній частині мого файлу Я вимагають dictionary.php.
Так само, як C # був включають PHP є спеціальна функція, звана вимагають
що в значній мірі робить те ж саме, вимагає файл з ім'ям dictionary.php.
Як я можу йти про реалізацію PSET 5?
Дозвольте мені йти вперед і відкривати файл тут.
Дозвольте мені трохи посиланням тут.
І дозвольте мені створити новий файл і почати називати це dictionary.php.
Дозвольте мені сказати це в іншій папці, так що ми можемо зробити це жити.
А тепер я змінити масштаб зображення
Я збираюся почати своє PHP файлів з відкритим кронштейн PHP закрито кронштейн.
І тоді тут було кілька функцій Мені потрібно реалізувати для PSET 5,
так що дозвольте мені розпочати реалізацію деяких з тих,
так що функція перевірки, які повинні були взяти слово у якості аргументу.
Ми будемо робити це і повернутися до нього в даний момент.
>> Існував функції навантаження, яка відбулася в тому, що в якості аргументу?
Словник, тому файл, що я насправді хотів, щоб завантажити.
Існував функції розмірі, який не приймає аргументів
і там була функція-то, що було іншим?
Unload, який не приймає аргументів або.
Ці 4 функції, що я повинен був би зараз реалізувати в PHP,
і те, що я збираюся зробити, це йти вперед і робити це.
Багато хто з вас використовувати хеш-таблицю в PSET 5,
так що дозвольте мені піти далі і створити хеш-таблиці в PHP.
Готово.
Це дає мені хеш-таблиці. Ну, чому?
Один з них, змінна називається $ таблиці, просто щоб викликати в уяві ідею хеш-таблиці.
Квадратні дужки, хоча, нагадаємо, являють собою що?
Масиві, але в масивах PHP не повинні бути числовими індексами.
Вони також можуть бути асоціативними масивами,
яка означає, що ви можете мати довільну ключів і значень.
>> Багато чого, як в PSET 5, ті з вас, хто це зробив хеш-таблиці реалізацій
Ви, ймовірно, вставив слово, а потім вставити його в ланцюжок пов'язаних списків,
або ви зберегли значення істина десь або щось в цьому роді.
Ви чомусь згадав той факт, що слово не було.
На даний момент, це буде мій хеш-таблиці,
І ось тепер йти про реалізацію функції контролю
Мені просто потрібно, щоб заглянути всередину цього хеш-таблиці
і подивитися, якщо слово є.
Те, що я збираюся зробити, це я збираюся говорити, якщо-
скажімо, Ісеть, яка є PHP функція, яка буквально означає, набір ключів,
так Ісеть ($ таблицю [$ словом],
і якщо так, повернути істинний.
Ось і все. Ось PSET 5 в PHP.
Ну, заради справедливості, все в порядку.
Решта повернутися помилковим, так що це не було.
Що насправді відбувається?
Ну, якщо таблиці або хеш-таблиці тут в більш загальному-
являє собою асоціативний масив, що означає, що ви можете індексувати в нього
словом, як «слово», і ви повинні повернути деяке значення.
>> Ми начебто отримую один крок попереду нас.
Було б почасти добре, якби ми насправді завантажується файл першим,
так що навантаження не так просто, але дозвольте мені йти вперед і на швидку руку
дуже швидко здійснення навантаження.
Дозвольте мені йти вперед і сказати словами отримує файл словника.
Файл функцію в PHP відкриває файл
і повертається до вас масив всі слова в цьому файлі,
просто передає їх вам.
Це була велика біль теж, чи не так?
Тепер по кожному елементу, це наша нова конструкція, Еогеасп ($ слова $ словом).
Цей цикл буде починатися ітерації по масиву слів
і привласнити змінної $ словом кожне слово у файлі
від першої до другої до третьої на четверту всі шляхи
так що я не повинен робити дратівливі [I] позначення тощо.
І те, що я просто буду робити для кожного з цих слів
буде зберігати його в моїй таблиці індексації в таблиці
, А потім робити так, тому що згадати
, Що слово в моєму словнику все, що мені дійсно потрібно зробити,
це свого роду перевернути небагато, і кажуть, що це слово в моїй хеш-таблиця є, правда.
І якщо його там немає, я не потрібно явно покласти помилковими,
в іншому випадку я б поклав ложно для всіх можливих слів у Всесвіті.
>> Досить для мене просто встановити значення індексу
істинно, якщо слово насправді в моїй хеш-таблиці.
Тепер, я резка пару кутів тут, що я буду махати руками на даний момент,
але тепер функція завантаження зроблено.
Я завантажую всі слова з файлу в масив.
Я перебору масиву, і для кожного слова в масиві
Я підключити його до моєї хеш-таблиця з 1 рядком коду.
Це весело. Ви знаєте, як ми можемо реалізувати розміру зараз?
Ну, розмір завжди досить легко, в справедливість.
Тут ми можемо просто повернути кол-во столом.
Це досить легко занадто, підрахувати кількість речей в таблиці.
Це насправді вид не найефективніший.
Я, ймовірно, слід мати змінну розміру таким чином, ми можемо зробити це
У постійному часу, але це досить легко.
Ох, і потім вивантажити, якщо ми дійсно хочемо бути анальний тут
ми можемо сказати, що це, як ви вивантажити щось.
Ви просто встановити величину, рівну порожній масив,
і він позбувається всього, що було там.
Не потрібно дзвонити безкоштовно.
>> Знову ж таки, я скоротити деякі кути, і я прошу вибачення за присвоєння проблема безлічі 5
можливо, в C, але якщо ми зараз іти вперед і виконати це,
Я збираюся насправді запустити версію, яку я написав заздалегідь
просто так, що я не робив ніяких синтаксичних помилок взагалі.
Дозвольте мені йти вперед і працювати правопису. Використання те ж саме.
Ось файл словника, який тільки містить слово Foo.
Ось це текстовий файл, який містить тільки Foo Bar.
Давайте перевірки орфографії це, так правопису, використовуючи цей файл словника на цьому текстовому файлі.
Там один слово з помилкою, бар, і вуаля.
Вчинено з PSET 5.
Давайте 5-хвилинну перерву тут, і ми повернемося і більше на PHP.
Гаразд, ми повернулися.
Давайте робити-ненавидите мене на деякий час.
Давайте тепер насправді побачити, якщо це не було позитивного
насправді реалізації цієї речі в PHP.
Звичайно, це зайняло 45 секунд, щоб реалізувати.
>> Але давайте йти вперед тепер і запустити речі.
Дозвольте мені йти вперед і запустити версію C
з правопису, і ми будемо запускати його на одному з найбільших файлів,
яка є Біблії короля Джеймса.
І ось в давайте увійдемо в нашу папку C,
спеллер на короля Джеймса 5-го.
Багато слів з помилками.
Добре, так ось висновок, який ви, ймовірно, отримали навіть якщо раз трохи по-іншому,
Якщо ви отримали все працює правильно, і так раз в загальній складності для перевірки правопису
Біблії короля Джеймса був 0,38 секунди, так що дуже добре за допомогою цієї реалізації.
Тепер дозвольте мені перейти у версії PHP, яку ми тільки що написали.
Дозвольте мені виконати правопису на короля Джеймса.
Ой, ігнорувати цю помилку. Я в ту директорію.
Speller на короля Джеймса 5-го.
Майже готове.
>> Добре, проникливий спостерігач зрозуміє, що був більш ніж на 3 секунди там.
Це і є справжнє час роботи.
Виявляється, що це займає час, щоб плюнути багато тексту з
через буферизації питання, але коротше кажучи,
, Яка була 3,15 секунди машинного часу, процесорний час,
проти того, що було хвилину тому?
Як .3.
Я маю на увазі, це на порядок повільніше, так де це
Смішно уповільнення приходить?
Ну, як це було у випадку з більшістю будь-якого дизайнерського рішення ми зробили
в класі за останні 9 тижнів там майже завжди це компроміс.
Іноді тільки між простором, іноді між простором і часом,
простору, часу і зусиль в області розвитку, та й тут, хоча
Ми зберегли величезну кількість часу, може бути, потенційно 10-20-30 годин
час розробки здійсненні перевірки орфографії
батогами його всього за 45 секунд з цією мовою
Ціна, яку ми заплатили те, що це на порядок повільніше, як наслідок,
і це, як правило, у випадку з більшістю будь інтерпретована мова,
PHP, Python, Ruby, Pearl або інші якої
якщо ви збираєтеся запустити його через перекладача, а він читав код
рядок за рядком, зверху вниз, зліва направо,
, Що посередник збирається зайняти деякий час своє,
і що ви відчували себе тут в 3 секунди, а не 0,3 секунди
є той факт, що це посередник, який має в буквальному сенсі інтерпретувати наш код
рядок за рядком, і не дай бог, якщо ви перебуваєте всередині циклу
з величезним файл, що містить сотні тисяч слів.
>> Це накладні збирається додати і скласти і додати й скласти.
Для такий інструмент, як це, що це, ймовірно, не найкращий мову, щоб використовувати для реалізації
перевірка орфографії, якщо безпосередність представляє інтерес для користувачів, і для вас.
Але розкіш, яку ми маємо в даний момент є, якщо Ви
використовувати мову, як PHP або багато різних мов
в контексті Web, якщо на те пішло, у вас є вигода
, Що Інтернет є набагато повільніше, ніж більшість комп'ютерів.
У вас є GHz CPU в комп'ютері, 2 ГГц, може бути, навіть більше в ці дні.
Але реальність така, в інтернеті існує велика кількість затримкою
якої для браузера, щоб поговорити з сервером, хоча ми бачили минулого тижня
, Що досить швидко, половину мілісекунди або так,
, Що теж додає, і якщо ви завантажуєте речі, як зображення
або фотографію Facebook або отримання миттєвих повідомлень через балаканину Facebook,
Gchat і т.п., все це туди-назад раз
між браузером і сервером початку складати,
що робить ваш конкретний вибір мови у багатьох випадках
Не все, що необхідно, так що ви відмінно з допомогою трохи повільніше мовою
як PHP або Python або Ruby,
але для яких є величезні розквитатися з вами і вашими колегами
і ваші друзі, тому що ви можете реалізувати всі так, так набагато швидше.
І більш того, у вас набагато менше ризик певних недоліків в безпеці.
Там немає покажчиків в PHP.
Там немає сегментам несправностей, які можна легко викликати
таким же чином, ви могли б у C.
З C ти супер близько до устаткуванню.
За допомогою PHP і аналогічних мов ти начебто високому рівні, так би мовити,
з великою кількістю оборону між вами і те, що відбувається насправді
усередині машини, і це всього лише компроміс.
>> Ми дійшли до точки, що мають ці більш сучасні, мови високого рівня
як PHP, тому що з уроків, витягнутих у мовах, як PHP на C.
Але якщо ви не розумієте, що відбувалося на під капотом все це час
Ви, звичайно, не може приймати правильні рішення, дизайн,
і, звичайно, коли справа доходить до роботи на місці, як Facebook або Google
або будь-яке з цих місць, які все частіше грають з великими наборами даних
навіть якщо ви повернутися назад і зробити СБУЕОБ і працюють з деякими MD
на деяких великих наборів даних за участю пацієнтів і лікарів
і як за допомогою правильних інструментів є надзвичайно переконливим
тому що в противному випадку ваш аналіз деяких наборів даних може зайняти секунд,
або він може буквально кілька годин.
Це тільки один приклад, щоб не понищити вас з тим, як докласти набагато більше зусиль
це було в C, але, щоб допомогти вам зрозуміти, що коли ви реалізувати щось в C
Ви дійсно розумієте, ні в теорії, насправді розуміють
як усі, або повинен працювати, і у вас майже повний контроль
за те, що відбувається під капотом, і з цих мовах більш високого рівня
Ви повинні відмовитися від більшого контролю до людей, які їх придумали
і можуть бути більше за проектними рішеннями, ніж ваш.
Але якщо ми вважаємо само собою зрозумілим, що продуктивність
не настільки важливо на веб-за цих інших питань,
тільки швидкість мережі трохи повільніше, ніж швидкість процесорів в будь-якому випадку,
так що ми можемо сортувати дозволити собі використовувати трохи повільніше мовою
якщо розквитатися ми може розвиватися речі в 10 разів швидше або навіть більше.
>> Давайте подивимося, як ми можемо почати використовувати це.
Відпустіть мене в папці
Серед прикладів сьогодні називається frosh.ims,
і це було насправді особисто мотивовані тим, що найперше, що
Я написав для веб років тому після того, CS50 і CS51
був сайт програми Frosh миттєві повідомлення, першокурсник очного спорту,
який в той час це було досить років тому, що в той час,
не було ніяких сайті програми, незважаючи на те що Web,
і замість цього був супроводжуючий в Wigglesworth згідно з яким, якщо ви хочете
зареєструватися для гри у волейбол або футбол, або як ви б заповнити аркуш паперу.
Потім ви повинні йти через двір.
Ви б тоді постукати у їхні двері і слайд у їхні двері або руку супроводжуючий
аркуш паперу з вашим ім'ям на ній, чи дійсно ви хочете бути капітаном команди,
яким видом спорту ви хотіли б зробити, і що гуртожитку ви були дюйма
Це був свого роду старої школи робити речі, і це було просте
можливість автоматизації багатьох цей процес.
Ви просто зайдіть на веб-сайт. Ви набираєте щось дюйма
Ви отримаєте підтвердження електронною поштою, і стріли, ви зробили.
>> Це було саме перше, що я зробив, хоча і в мові під назвою Pearl,
але це відносно легко зробити в PHP, і це є свого роду представником
проблем ви можете приступити до вирішення, коли ви можете виразити себе
програмно і не повинні покладатися на такі речі, як сайти Google
або Excel або інструменти, які передали вам.
Ви, хлопці, тепер є можливість зробити щось на зразок цього.
Це супер потворні версію формі,
Але давайте просто використовувати його для початку розмови яким це
приблизно те, що форма виглядала років тому для нас
щоб люди в інтернеті, щоб підписатися на Frosh Чат.
Ми попросили ім'я, прапорець чи вони або не хотів бути капітаном,
чоловіки чи жінки, і що тоді гуртожитку вони були,
і тоді вони будуть представляти цю форму.
Давайте спочатку подивимося під капотом на HTML, який представляє цю веб-сторінку.
Відпустіть мене в froshims0,
і як в стороні, для PSET 7 Я приймаючи як належне
каталоги і теки, які я кладу речі дюйма
Ми будемо йти Ви через саме там, де матеріал повинен піти в прилад,
який мод команди ви повинні працювати, так що не хвилюйтеся про всі
дурні подробиці синхронізації З самого початку йти тут.
>> Гаразд, ось froshims0.php.
Дозвольте мені прокрутити вниз, і, що цікаво тут,
це PHP файл, але те, що всередині нього, ясно?
Це ціла багато HTML, і, дійсно, PHP, походження
дійсно були за те, Web-орієнтована мова.
Хвилину тому ми використовували його для реалізації пива, наприклад,
умовах, наприклад, привіт приклад, і це нормально.
Ви можете використовувати PHP в якості скриптової мови
де сценарій насправді просто номенклатурі приділяється швидкої та брудної програми
або те, що ви пишете в сценарії або в більш загальному інтерпретована мова.
PHP це супер корисний для цього, тому що ви бачили, як швидко
Щодо ми можемо нагнітати програм в PHP.
Але це був дійсно призначений для використання в мережі Інтернет,
і призначена для веб-в тому сенсі, що помітив тут у верхній частині файлу
Я починаються з <? PHP.
Тоді у мене є купа непотрібних коментарів, правда, але тоді я закриваю PHP режимі.
Але потім я зайти в HTML режимі.
>> Що цікаво PHP є, навіть якщо файл має розширення. PHP
це взагалі повинно бути змішані з HTML,
код PHP, деякі HTML.
І ми побачимо, врешті-решт, що ми можемо почати дражнити один від одного тим,
і зберегти наш HTML окремий від наших PHP в цілому,
але походження PHP дійсно були, щоб дати вам цю гнучкість,
що, якщо ви хочете, щоб деякі HTML просто написати, і що буде
виплюнути однаково в браузері.
Але якщо вам потрібна технологія програмування,
деякі програмний код, ви також можете помістити його в точно такий же файл, як ми скоро побачимо.
Ось мій HTML.
У мене є назва цього для Frosh Чат.
У мене є тіло тега який отримав деякі CSS на нього в центрі все в середині,
, А потім тут у мене є форма, мабуть, буде представлений
в новий файл з ім'ям register0.php, тому ми бачимо, що в момент.
Вона використовує метод, званий пост, який ми ще повернемося, а також.
Тоді у мене є форма входу, один званої ім'я, тип якого є текст,
той, чиє ім'я капітана, чий тип прапорець,
і це, ми не бачили його раніше, але це саме те, що він говорить.
Ви отримаєте прапорець замість текстового поля.
Тут, внизу у вас є перемикач, який є одним з тих кругової кнопки
що ви можете вибрати цей або той.
>> Зверніть увагу, що це навмисне, що я дав як перемикачі ім'я підлогу.
Це, як ви отримаєте взаємне виключення, в якому ви повинні натиснути
або це один або, що одне і натиснувши на одного
це невстановленими інші, так що ви повинні дати їм тим же ім'ям
Якщо ви хочете, щоб вони взаємно виключають одне одного, як це.
І тоді для гуртожитку, я не думаю, що ми бачили це, але це вибір меню, що випадає меню.
Тег для цього є вибір.
Потім дати спадному меню ім'я,
і тоді у вас є ціла купа цих варіантів.
Перший з них, просто для естетики, є порожнім рядком.
Я просто хотів випадного бути порожнім за замовчуванням,
а там Apley, Canaday, сірі, і так далі.
І зверніть увагу, дихотомія тут.
Варіант в спадному має значення,
але тоді воно має зрозумілі людині назви, яка в даному прикладі
ідентичні, але якщо ми дійсно хотіли бути анальним ми могли б
Значення цього випадного бути просто коротка версія,
Сірі, але ми могли б дійсно сказати, сірий зал, що людина насправді бачить,
Але це не все, що цікаво, тому я просто продовжував він простий і зробити їх однаковими.
Тоді на дні у нас є кнопка відправки
що ми бачили і раніше, але зауважили, що я просто дав йому інше слово.
Замість того, щоб CS50 пошуку Я дав ярлик "Реєстрація".
>> У підсумку цій сторінці тут, і знову,
де ця отримаєте представлені?
Він отримує представлено декілька файлів, значення атрибута дії,
який був register0.php.
Давайте подивимося, що насправді тут відбувається.
Дозвольте мені йти вперед і заповнити цю форму, скажімо, Давида,
чоловіки, Matthews, і тоді я буду говорити зареєструйтеся.
Дозвольте мені масштаб і натисніть зареєструйтеся.
Отже, вид марно, але давайте подивимося, що відбувається насправді.
Зверніть увагу, що URL змінився, щоб бути register0.php.
Що цікаво відсутня в URL, хоча, навіть якщо ми просто представили форму?
[Нерозбірливо відповідь студента]
Добре, ось тільки Chrome бути зручним в ці дні.
Це насправді там. Вони просто заховати його, щоб заощадити місце.
Але гарна думка, гарна думка.
До іншого кінця URL, хоча, чого не вистачає? Так.
[Студент] рядок запиту.
Рядок запиту, так що пам'ятаєте з наших простих прикладах пошуку Google.
Як тільки я натискаю на кнопку відправки URL
взяв мене до Google, але потім було? Q = комп'ютерних наук або те, що я була ввели дюйма
Це тому, що ми використовували метод GET з пошуком приклад.
>> На цей раз ми використовуємо те, що замість методу?
Повідомлення, і одним з безпосередніх відмінностей
між отримати і опублікувати в тому, що повідомлення не ставить вході користувача в URL-адресі.
Він приховує це. Він як і раніше відправляє його.
У самому справі, що ми бачимо в браузері тут, як ми розкриємо в момент
дивлячись на register0, це я просто бачити вміст
масиву, які були представлені від браузера до сервера.
Але URL ні?, Не має ключових слів
або значень в ньому, і чому це?
Ну, пост дозволяє ще представити дані з форми на сервер,
але він не поклав його в URL, тому, якого роду інформація є пост
Особливо підходить для, можливо, коли ви запитуєте користувача
ввести вхідні дані для форми?
Щось на зразок пароля, щось подібне, що ще?
Номери кредитних карт.
Все це м'яко чутливі ви, ймовірно, не хочете потрапити в URL
якщо тільки тому, що це означає, що ваш сусід або член родини може просто троль через
ваші історії Інтернету, а потім буквально бачити ваші паролі,
буквально бачити ваші номери кредитних карт, оскільки більшість браузерів
Пам'ятається, в історії будь URL, ви були на,
так що якщо тільки тому, що це було б поганою ідеєю.
Використання повідомленням приховує, що подробиці від користувача.
>> Крім того, як ви завантажите фотографію в Facebook?
Ну, тільки 2 механізму ви можете дійсно використовувати,
хоча є кілька інших, більш таємними них, це отримати і опублікувати.
Як ви, можливо, завантажте фотографію за допомогою URL-адреси?
Ви дійсно можете це зробити.
Ви можете взяти JPEG або растрових або GIF, і ви можете уявити його в шістнадцяткову
або те, що називається базою 64.
Замість того, підстава 16 ви використовуєте базу 64, яка по суті виглядає
ASCII символи, і ви можете завантажити фото через URL
після знака питання, але, як правило, обмеження на розмір.
Більшість браузерів змусити URL-адрес, щоб бути не більше 1000 символів,
Може бути, 2000 символів і т.п., так що ви не можете завантажити
10 MB Facebook фото.
Для цього вам використовувати пост, так що на даний момент отримати ставить параметрів в URL,
що приємно і корисно іноді, але ні за що чутливі або великий
Повідомлення є шлях.
Що register0 насправді тут робиш?
Ну, якщо я відкриваю register0 зауважити, що це супер просто сторінка,
але це демонструє той факт, що я можу спільно змішуються, до кращого або до гіршого,
HTML з PHP.
Цей файл цілком, за винятком коментарів на вершині, є HTML
крім цього хлопця тут.
>> Зверніть увагу, в середині мого коду PHP,
У середині моєї HTML, у мене начебто тимчасово
вступив PHP режимі.
Я дзвоню спеціальна функція, звана друк р.
Це означає, друк рекурсивної, і що він робить це рекурсивно друкує
все, що змінну передати його, крапка з комою, з виходом PHP режимі.
І попередньо тег дає вам попередньо відформатований текст,
моно просторі текст так, щоб кожне місце, ви насправді побачити.
Вона не зникає. Що таке піст?
Ну, те, що цікаво і переконливу про PHP
є те, що всякий раз, коли ви відправляєте форму за допомогою отримати або відправити
нічого, що представляється Вам в браузері
PHP сам розбереться, що ці пари ключ-значення є,
цифри, якщо є знак рівності, цифри, якщо є знак питання.
Це робить всю важку роботу за вас, а потім він передає вам асоціативний масив
містить все, що користувач ввів у форму.
Ну, що ж поля цієї форми є?
>> Це було 4 поля.
Один з них був текстове поле з ім'ям ім'я.
Один з них був прапорець називають капітана.
Один з них був перемикач називається стать,
і один був у спадному меню називається гуртожитку,
так що помітити, коли я друкую рекурсивно
Зміст цього спеціальну змінну.
Це особлива глобальна змінна $ _POST буквально у всіх ковпачків.
Це особлива глобальна змінна, яка PHP просто створює для вас
і руки, щоб вас так, що ви можете отримати доступ до всього
, Який був представлений через форму користувачем.
І по телефону друку г-на ньому ви б не зробити це в звичайний додаток.
Ми робимо це, щоб бачити в цій змінній,
і що всередині нього, ну, 4 клавіші,
4 HTTP параметрів, так би мовити,
ім'я, капітан, стать, гуртожиток, а потім значення, які користувач
набрав у з одним винятком.
Я зробив типу D - V-I-D.
Я перевірив коробку, хоча, для чоловіків, мабуть представлені значення
м за все, щоб бути коротким.
>> Коли я вибрав Matthews це значення, був обраний,
і це одна трохи безглуздо, але це конвенцію.
Коли я перевірив коробку, значення на "ON", отримав представлені на прапорець.
Якби я не перевірив його величина не був би посланий б то не було.
Це просто дає нам розуміння того, що знаходиться всередині цієї спеціальної глобальної змінної,
і це настільки особливим, що це називається супер глобальної змінної.
Вона існує скрізь тебе в коді, так що ви можете отримати до нього доступ.
Це не так переконливо, так що давайте насправді використовувати супер глобальним
а насправді намагаються зареєструвати когось.
У froshims1 я збираюся зробити одна зміна.
Я міняю дії, щоб бути register1.php,
і я роблю ще одну річ.
Я був трохи збентежений якість моїй сторінці там.
Це досить огидний, чесно кажучи, так виходить
, Який можна використовувати дуже легко в Інтернеті
інших людей JavaScript коду, CSS інших людей
що вони написані і з відкритим вихідним кодом і розповсюджується у вигляді бібліотеки,
так би мовити, і, наприклад, тут я використовую у вільному доступі бібліотеки,
купу коду, який написав хтось інший.
>> Twitter трапилося писати цей код, і це називається початкового завантаження бібліотеки,
і це просто купа CSS стилів, купу. CSS файлів
що хтось написав і придумав, як отримати все добре і досить
так що люди, як ми можемо турбуватися трохи менше про естетику і зосередити набагато більше
на логіку і фактичні програмування.
Пов'язавши його з даним тегом, який є тим же тегом я запам'ятав styles3.css раніше,
Тепер у мене є доступ до файлу називається bootstrap.min.css.
Мінімальна просто означає, що вони зменшена це, і вони позбавилися від всіх прогалин і т. д.
просто щоб переконатися, що вони не посилати мені більше байт, ніж я насправді потрібно.
Але є ціла купа CSS, так що якщо я зараз відкриваються версія 1 Frosh чати
помітив, що мій файл, безумовно, красивіше.
Тепер це ще тільки чорне і біле, але зауважив, що тільки за допомогою своїх стилів
і з використанням певних особливостей його на моїй формі це не дивно,
але це безумовно чистіше, ніж це було раніше, а проектор не роблять цього правосуддя.
Там мало сірі лінії навколо кнопок і навколо текстового поля прямо тут,
але це безумовно чистіше, ніж це було раніше.
>> Тепер, справедливості заради, я повинен змінити свою розмітку трохи.
Це версія 1, і помітили, що я використав кілька нових тегів,
і, чесно кажучи, я поняття не мав, як це зробити, поки я не прочитав документацію
для завантаження бібліотеки Twitter, і вони сказали мені, якщо ви хочете використовувати нашу бібліотеку
використовувати FIELDSET елемент всередині форми,
поставити слово, яке ви хочете показати поряд з полем усередині етикетки теги,
Потім дайте ввести ім'я, як і колись,
, А потім на прапорець, ви не тільки обернути його в мітці елемента,
Ви використовуєте те, що називається клас, тому ми не бачили цього раніше,
але ви побачите це в одному з шорт PSET 7 в.
Клас в CSS дозволяє вам робити щось дуже схоже на ID,
але раніше, коли ми були ID з символу #
це було для одного і тільки одного елемента.
Що приємно про класі є те, що кілька елементів можуть мати той же клас
або той же самий матеріал CSS застосовується до нього.
>> Але, знову ж таки, більше на тих, хто в короткостроковій, і решта це просто скопіюйте та вставте
з їхньою документацією, де я додав мітку тут і там.
І в кінці, тому що я включив посилання тега у верхній частині,
все виглядає красивіше автоматично
просто відзначивши мою сторінку таким чином, щоб
Twitter очікувалося, і є дуже багато різних способів
зробити це, і це дійсно дуже доречно.
На даний момент в семестр, як ви побачите в специфікації PSET 7 с,
Пошук в Google з усього, читав на бібліотеки, використовуючи CSS інших людей
і наявність вирішити проблеми допоміжних
до проблеми саме безліч, безумовно, заохочується і є способом
Web побудовано в ці дні, стоячи на плечах інших людей
так що ви можете зосередитися на дійсно нових і цікавих завдань.
Але давайте зосередимося на, знову ж таки, логіка.
>> Це був швидкий об'їзд по естетиці, щоб показати вам напрямок, в якому ви можете йти.
Я збираюся повернутися до потворним один для тепер тільки тому, що
немає ніяких відволікаючих речей з Twitter, і дозвольте мені йти вперед і відкривати
froshims2, який, знову ж таки, відрізняється тільки в акції, register2.php,
і давайте поглянемо на те, що відбувається тут.
Дозвольте мені піти далі і ввести Давида.
Я не буду капітаном на цей раз.
Я скажу чоловік, Matthews, реєстр.
Чорт візьми. Гаразд, це гвинт на моїй частині.
Режим очікування.
Register2, рядок 22, якщо порожній або, вибачте.
Давайте перезавантажити.
Гаразд, на цю форму, що тільки що відбулося?
Я набрав у Давида, перевірив чоловіки, натиснув Matthews, реєстр.
Ви зареєстровані. (Ну, не зовсім.)
Це, безумовно, крок за рамки просто роздрукувати вміст деяких змінних,
але те, що цей файл насправді робити?
У register2.php
помітив, що у мене є новий код.
Усередині мого тіла тега в мене є по суті, якщо ще побудувати,
але тому, що я спільно змішання це з деякими HTML
Я повинен увійти і вийти з режиму PHP і назад, так що давайте подивимося, що я роблю.
>> У першому рядку тут я кажу, якщо це має місце
що пост супер глобального пусто ключ ім'я,
Отже, іншими словами, якщо користувач не давав мені значення для ім'я в форму,
Потім порожні збирається повернутися вірно, тому що порожнє значення.
Або, зауважив вертикальні смуги, якщо підлога порожній
Усередині цього спеціального супер глобальний, який, знову ж таки, представляє собою вміст форми,
або в гуртожитку пусто, то я буду йти вперед і кричати на користувача.
Як? Ну, помітили, що я збираюся сказати, що ви повинні вказати своє ім'я, стать і гуртожитки.
Давайте насправді викликає цю помилку.
Дозвольте мені повернутися до моєї формі. Дозвольте мені перезавантажити, щоб очистити його.
І я просто хочу, щоб дати їм Давида, і вони не повинні знати, де я живу.
Зареєструйтесь. Мабуть, я дійсно повинні сказати їм, де я живу.
Ви повинні вказати своє ім'я, стать і гуртожитки. Повернутися назад.
>> І я міг натисніть, щоб повернутися до цієї форми, але навіщо це?
Ну, в такому випадку ім'я не було порожнім, але підлога була, і гуртожиток було,
так що це все вираз оцінюється в істинній, і, хоча синтаксис трохи нового,
Знову заходимо PHP режимі, знайомим, якщо заяву
але нова частина тут є саме ця товстої кишки, і я облажався, опускаючи дужки
випадково, але зверніть увагу на товстій кишці, і це означає, що
хоча ми виходом PHP режимі всі
що слід слід виплюнути дослівно в браузері
поки Ви не бачите іншого блоку, як це робимо ми тут,
У цьому випадку замість нього ви повинні плювати на це
поки ви не побачите ENDIF, тому деякі трохи нового синтаксису
, Що дозволяє мені перемикатися між HTML і PHP.
Ми можемо очистити це врешті-решт, але зараз,
це ніби переконливим способом перевірки помилок форми.
>> Тепер, я сказав, що ви насправді не зареєстрований, тому що очевидно, що ми не зробили нічого, але дані,
так що давайте насправді намагаються зробити щось прохолодне.
У froshims3 тією лише різницею, що я збираюся представити register3,
тому HTML відбувається те ж саме.
У register3 помітити цього.
Це один вид сексуально.
На вершині я використовую требо заяву, так це як # включити.
На цей раз це не stdio.h або що-небудь подібне.
Це бібліотеки PHP, і це одна називається PHPMailer.
Як я знаю, щоб включити саме цей рядок у лапках?
Я прочитав це в документації, тому, коли вони сказали мені, поклав це у верхній частині файлу
якщо ви хочете використовувати спеціальну бібліотеку під назвою PHPMailer, що робить те, що він говорить.
Вона дозволяє відправляти пошту через PHP.
Тепер прокрутіть вниз далі.
>> Зверніть увагу, щоб почати я перебуваю в режимі PHP весь цей час,
так що тепер зауважити тут, що після імпорту бібліотеки,
так сказати, я роблю деякі перевірки.
Якщо це так, що ім'я не порожній
і стать не з порожніми помітити знаком оклику-
і гуртожитки не порожній, то користувач логічно заповнив форму, принаймні достатньо.
Мене не хвилює, якщо вони капітана чи ні. Мені просто потрібно їх ім'я, стать і гуртожитки.
Якщо вони заповнили ті, так, що жодна з цих порожніх полів
це трохи нового синтаксису.
PHP, як в стороні, є об'єктно-орієнтованою мовою програмування
який деякі з вас, хлопці можете згадати з АСУ ТП і т.п..
Зараз, якщо незнайомий, просто знаю, що використовувати цю бібліотеку
Ви повинні написати рядок коду, як це за допомогою нових ключових слів,
буквально нове ключове слово називається нова.
Але крім цього, у нас є знайомий синтаксис.
Це стрілка оператора, який схожий на те, що ми використовували для структур в контексті покажчиків.
На сьогоднішній день PHP не має покажчиків,
але знаю тепер, що всередині поштою змінну
істотно роду покажчиком на спеціальну бібліотеку
що хтось написав, і якщо я хочу отримати доступ до функціональності
Усередині цієї бібліотеці я, як і в C, використовуйте стрілки оператора,
навіть якщо вони не є насправді покажчики.
Це свого роду власну версію PHP для них.
Це означає, піти в бібліотеку і викликати IsSMTP функції.
SMTP, нагадаємо, від наших воїнів Чистий відноситься до електронної пошти,
і це просто означає використання поштового сервера для цього Frosh чати реєстрації.
>> Що господар я хочу використовувати?
Ну, Гарвард, якщо ви Google з усього, має поштовий сервер називається smtp.fas.harvard.edu.
Якщо ви граєте разом у будинку або ви живете на Comcast мережі
це може бути щось на зразок smtp.comcast.net.
Це повністю залежить від того, де ви живете і хто ваш провайдер.
Після цього я збираюся встановити мою адресу від довільно, щоб бути jharvard@cs50.net.
Я тоді збирався встановити на адресу, яку буде jharvard@cs50.net.
Єдиний шлях, я знав, що ці функції були викликані SetFrom і AddAddress
, Знову ж таки, я читав документацію.
Це не вид чарівним відомо всім програмістам.
Тоді я поставив питання на "реєстрацію".
І тепер ця лінія трохи потворні, тому що те, що робить оператор точка означає в PHP?
Хто знає?
З'єднати.
У C це біль в шиї, щоб об'єднати 2 рядки разом.
Ви повинні мати справу з Танос або перерозподілити або все, що матеріал
тільки збільшити довжину рядка.
У PHP, JavaScript і в інших мовах
Ви можете зазвичай зробити це за допомогою одного символу.
У цьому випадку точка означає прийняти цей рядок тут
і додати до неї цей рядок.
>> Так, і до речі, додати до нього цей рядок,
який буває змінної всередині цього супер глобальним.
Потім додати до нього нові лінії, так що всі ці точки просто означати,
продовжувати робити все більше і більше і більше рядків,
і вам не доведеться піклуватися взагалі про Танос або, як у мові, як це,
і є інші способи зробити це, але це один з найшвидших
способи закласти його.
Що це робиш?
Це створює електронний орган, який збирається сказати назва: Captain: Стать: Гуртожиток:
Все на окремих рядках, а потім, нарешті,
одного рядка коду, і я буду ігнорувати це зараз.
Якщо == помилкове просто означає, що якщо щось пішло не так,
але магія тут відбувається.
Пошта Надіслати означає, відправити цей лист.
Давайте подивимося, що чистий результат.
У нижній частині файлу, помітите, що він збирається сказати ви зареєструвалися насправді
якщо я отримую так далеко.
Якщо, проте, користувач гвинти вгору, зверніть увагу, що ми почали цю
якщо умова тут, якщо це не порожні і не порожні
і не з порожніми ми відправляємо поштою.
В іншому випадку ми збираємося написати цей рядок коду,
який матиме ефекту, як ви побачите в PSET 7, перенаправлення користувачів
туди, звідки вони прийшли, froshims3.php.
>> Пальці перетнулися, в іншому випадку це буде самим розчаровує демо сьогодні.
Тут ми йдемо.
Дозвольте мені відкрити свою електронну поштову скриньку для jharvard в Gmail.
Ні електронну пошту прямо зараз. Добре.
Тепер дозвольте мені відкрити froshims3, який є третім і останнім прикладом ми розглянемо тут.
Добре, тут ми йдемо.
Nate, він буде капітаном, чоловіки, від, скажімо, Apley.
Зареєструйтесь. Отже, ви реєструвалися насправді.
Тепер, якщо я прокрутки на мою електронну пошту, о, мій Бог.
Я тільки динамічно направив лист в Інтернеті.
>> Давайте залишимо на цій ноті.
Відео для майбутньої лекції ми пропустили. Побачимося наступного тижня.
[CS50.TV]