[Powered by Google Translate] [Тиждень 8, продовження]
[David J. Малан] [Harvard University]
[Це CS50.] [CS50.TV]
>> Це CS50, так це до кінця тижня 8 тут.
Ми, звичайно, було трохи урагану раніше на цьому тижні,
тому зараз це дійсно тільки ти і я в цьому лекційний зал,
Але сьогодні ми продовжуємо нашу розмову про PHP
і про веб-програмуванні в цілому, і ми також ввести поняття
бази даних, зокрема, одна називається MySQL, яка є досить популярним в ці дні,
Значною мірою завдяки її масштабованості, а також тому, що його бути вільним і відкритим вихідним кодом.
>> Але спочатку подивимося на якому ми зупинилися минулого разу.
Нагадаємо, що ми шукали в декількох Frosh приклади миттєві повідомлення,
і це була огидна форма, яка мені прийшла в голову ще 15 років тому +
для того, щоб мати студентів на території кампусу регістр для першокурсників очної спортивних
, Фактично не маючи до походу більше через двір до Wigglesworth
ковзати фізичної папір під двері деяких Проктора.
Замість цього ми переїхали всі в Інтернеті, але для цього ми повинні використовувати
кілька технологій, так що, нам потрібно HTML, мова гіпертекстової розмітки,
що знову ж таки це мова розмітки, з якою ви робите веб-сторінок структурно.
>> Використовуючи трохи CSS в ці дні, каскадні таблиці стилів,
яким ми користуємося стилізації веб-сторінки, використовуючи дещо інший синтаксис,
в той час як HTML було все, про структуру їх.
Нам також необхідно ввести мови веб-програмування.
У цьому випадку, ми будемо використовувати PHP, і PHP буде дозволити нам
для динамічного виведення контента, а також робити програмні речі, як
відправка електронної пошти, як це було на ноті ми виїхали на минулому тижні.
>> Нагадаємо, що код цього була в 2-х частинах.
Один з них, ми повинні були froshims3.php,
і це було в значній мірі розмітки HTML з формою всередині нього,
трохи CSS тут, в атрибути стилю
так що сама форма буде по центру сторінки, але крім цього
у нас були деякі представником входу формі, в текстове поле, прапорець,
деякі радіо-кнопки, виберіть меню, і кнопка відправки.
І через цю форму, ми представили в файл, який був очевидно називали register3.php,
що саме по собі виглядало трохи щось на зразок цього.
Тепер, велика частина коду в register3.php, нагадаємо, було все про електронну пошту.
Він зробив трохи перевірку вигляді, який був представлений, щоб переконатися,
, Що поля були насправді за умови, що очікувалося.
Тоді ми називали деякі функції з використанням PHP трохи нового синтаксису,
навіть якщо він запозичений з C.
>> Ця стрілка оператора дозволяє нам використовувати те, що називається об'єктно-орієнтованого програмування.
Ми не будемо вдаватися в те, що в будь-якій деталі, але знаю тепер
це спосіб мати функції, пов'язані з об'єктами,
які являють собою особливий тип будови, як ми бачили в C.
Але зараз, просто прийняти на віру, що це правильний синтаксис для використання
При використанні бібліотеки як ця бібліотека PHPMailer.
І тоді до кінця цього файлу ми динамічно генеруються електронній пошті
, Що послали на мій рахунок jharvard@cs50.net
від мого jharvard@cs50.net рахунки,
і ми проінформували користувачів відповідно, що вони були зареєстровані для цього виду спорту.
Це в значній мірі те, що сайт Frosh чати зробив багато років тому
Коли я реалізував її, щоправда, на іншій мові,
але він показує вам, можливо, влада, яка у вас є
Тепер, коли ви можете виразити себе не тільки програмними
на низькому рівні в мові, як C, але на набагато вищому рівні
з цим дуже реальний світ додатків, як електронна пошта насправді вирішити
деякі реальні проблеми світу.
>> Зараз, звичайно, хоча я використовую цей скрипт для створення деяких
повідомлення електронної пошти динамічно з jharvard@cs50.net, яка дійсно рахунку
що у мене є доступ до, не бути достатньо обережним, щоб відправити
пошти тільки з рахунків, що насправді свій власний,
щоб речі вам у невеликій кількості гарячої води в житті.
З урахуванням сказаного, давайте тепер перехід до вирішення іншої проблеми в цілому,
що збереження держави.
Отже, що ж це насправді означає?
HTTP, цей протокол передачі гіпертексту,
насправді без протоколу, і що це означає, що
коли ви тягнете щось подібне Google.com а потім натисніть Enter
Зазвичай ваш браузер має якийсь обертовий значок, який потім
Результати в деяких веб-сторінки завантажуються,
а потім, що маленький значок припиняє обертатися, і що насправді пропонує
, Що HTTP завершив якийсь з'єднання з сервером, ось і все.
HTTP є особою без громадянства, в тому сенсі, що воно не підтримують
постійне підключення до сервера в тому ж Skype разі не
або Gchat робить, тому що з HTTP
Передбачається, що, як тільки ви взяли веб-сторінку, ось і все.
>> Зараз, насправді в ці дні на таких сайтах, як Facebook і Google Maps
і Twitter, і як там багато більший динамізм якої
навіть після цього значка зупиняє обертання, може насправді отримати більше оновлень
від сервера, більше твітів, більше оновлень статусів на Facebook тощо.
Але навіть це, використовуючи техніку, що ми будемо говорити в тиждень або два
відомий як Ajax з використанням мови JavaScript називається,
але в кінці дня, HTTP і раніше без громадянства.
І все ж, якщо ви хочете, щоб якось пам'ятаю речі про користувача
навіть після того як вони відключені від сервера
PHP робить дозволити вам засіб цьому
оскільки, як ми бачили в останній раз, PHP має ряд суперглобальних,
і суперглобальні, знову ж таки, спеціальні глобальні змінні
який передав вам веб-сервером і PHP себе.
>> Ви не повинні нічого робити, щоб покласти значення в ньому,
і серед суперглобальних ми бачили дотепер, одержувати і відправляти,
який є, де поля форми ставляться автоматично для вас,
, А також кілька інших, які ми ще не бачили.
Усередині $ _SERVER деякі спеціальні змінні, пов'язані з самим сервером.
Що таке IP-адресу, що протокол, HTTP або HTTPS ви використовуєте,
що метод запиту ви використовуєте і т.п., так що деякі цікаві,
пікантні подробиці про сервер, а насправді, користувач в там же.
Там в $ _COOKIE, який є, де ці речі називаються куки зберігаються.
Ми не будемо витрачати час на печиво себе сьогодні,
але знаю тепер, що печиво є лише невеликий фрагмент інформації
, Що веб-сервер можуть посадити на веб-браузері
і в свою чергу її пам'ять або жорсткий диск свого комп'ютера
для зберігання інформації про користувача, наприклад, своє ім'я користувача
так, щоб вони не доведеться вводити його кожного разу, коли вони увійти в систему або деяких
Унікальний номер або ідентифікатор для цього користувача
так що вам не доведеться приставати до них з тим же види питань про
переваги в майбутньому, але більшість з інтересу
Прямо зараз становить $ _SESSION.
>> Це суперглобальні, який, як і інші, передають вам автоматично PHP
коли ви пишете PHP-сайтів на основі
можна зберігати все, що завгодно, рядки, числа,
плаваючою точкою, значення, масиви, об'єкти,
насправді все, що ви хочете, і це дозволяє зберегти його таким чином,
що навіть якщо користувач відвідує вас то й справа
повертається хвилинах від тепер і в 5 хвилинах від тепер, тому що
вони приймають їх час, перш ніж натиснути деякі інші посилання
PHP буде гарантувати, що все, що ви покладете в цій сесії суперглобальні
хвилини або 5 хвилин тому все ще буде там, коли повертається користувачеві.
А під капотом цього суперглобальні здійснюється шляхом
ті речі, звані куки, але зараз це просто абстракція
яким це свого роду програмний еквівалент кошику.
Що б ви, програміст, покласти в тому, що
суперглобальні асоціативний масив буде там деяку кількість хвилин пізніше
до тих пір поки ви його не видалите або поки користувач не вийде свого браузера в цілому.
>> Давайте подивимося на прикладі, як ця річ дійсно використовуються.
У counter.php серед частини сьогоднішнього код
ми маємо наступний рядок.
На початку цього файлу в нас є купа синіх коментарі, які нецікаві зараз.
Але в рядку 13 у нас є нова лінія,
session_start, і що насправді робить саме те, що він говорить.
Вона починається сесій.
Це дозволяє використовувати це велика суперглобальні $ _SESSION, і це так просто.
Тепер, якщо ми виходимо, щоб подивитися на лінію 16, давайте спробуємо з'ясувати, що ця веб-сторінка буде робити.
Якщо (Ісеть ($ _SESSION ["лічильник"]), а потім піти далі
і зберігати в змінної лічильника, рядкові лічильника,
$ _SESSION ["Лічильник"].
Це, здається, оголошення локальних змінних називається лічильником
всередині яких він надягає копію того, що знаходиться всередині суперглобальні
називається сесії в положення "лічильник".
В іншому випадку, очевидно, ця маленька локальна змінна лічильника, встановлюється на 0.
>> Але потім через декілька рядків в 26 Зверніть увагу, що копія сесії лічильника,
її ключем, має новий присвоєно значення, який є його поточне значення плюс 1.
Коротше кажучи, цей файл виглядає як оновлення
Лічильник, який зберігається всередині сесії суперглобальні
, Збільшуючи його на 1, але він спочатку зберігає копію попереднього значення
, Зберігаючи його в локальній змінній з ім'ям $ лічильника,
, А потім сюди давайте подивимося, що залишилося.
Виявляється, це в значній мірі тільки HTML.
У нижній частині цієї сторінки ми бачимо в рядку 37, які я відвідав цей сайт
Лічильник кількість разів, так що є кілька цікавих особливостей тут.
Один з них, це явно змінної, але це не досить просто покласти
$ Лічильника в тілі вашого HTML, тому що, звичайно,
якщо це тільки там, серед ваших PHP HTML буде вважати, що це просто HTML.
Ви буквально хочуть $ лічильників, які будуть надруковані на екрані.
>> Але замість цього падіння в режимі PHP
з цією частиною синтаксису ми можемо динамічно вставити значення тут
Дуже близькі за духом до того, що ми зробили минулого разу з
вставка значення в рядки.
Насправді, це просто скорочене позначення для сказавши щось на зразок цього буквально,
Друк ($ лічильника) або навіть щось подібне Е (% S, лічильник),
або навіть, як ви, можливо, бачили в Інтернеті або в підручниках,
є функція в PHP називається луна
яка робить те ж саме, і все це тільки більше намотується способами
сказати <? =.
У цьому випадку вам не потрібно ставити
Слово PHP після знака питання.
Це скорочене позначення для, знову ж таки, те, що ми тільки що бачили хвилину тому
який луною деяке значення.
>> Давайте подивимося, що кінцевим результатом цього насправді.
Дозвольте мені перейти в наш файл counter.php,
і ми побачимо, що Девід просто помилився, граючи з код.
Давайте виправлення те, що він облажався,
і помилка начебто є, немає, в рядку 37.
За початок сторінки я відвідав цей сайт 0 раз.
Ну, давайте йти вперед зараз, і в верхній частині вікна браузера натисніть на
перезавантажити значок, і я натискаю кнопку перезавантаження,
і тепер я відвідав сайт 1 раз, 2, 3, 4, 5, 6, 7, 8.
І дійсно, якщо ми подивимося на вихідний код цієї сторінки реальний вихідний код змінюється,
і зверніть увагу на повну відсутність яких-небудь PHP, і це тому, що
PHP код оцінюються або інтерпретувати стороні сервера,
і так, що означає, що вихід із сценаріїв PHP є те, що в остаточному підсумку прямує в браузер,
який в даному випадку є деяким сировини HTML і деяких сирий текст.
Що тут відбувається?
>> Ну, з відносно невеликою кількістю рядків коду, я можу зберігати
постійно протягом декількох секунд, або якщо ми достатньо довго чекали,
хвилин, навіть годин, деякі значення таким чином, що робить HTTP
здається станом, як якщо б ми зберегли
це з'єднання з сервером, і це просто пам'ятаю, що я говорив минулого разу,
але насправді є ціла купа складності відбувається під капотом
за участю печиво яка дозволяє PHP, щоб дати мені цю ілюзію
цьому кошику подібні функції.
На даний момент тривіальний приклад, де ми просто зберігати ціле число,
але ця функція повернеться до мати велике значення
Коли ми починаємо говорити про більш складних проектів,
Серед них завдання, поставлене 7.
Це ваш самий останній питання, поставлене в CS50.
Я знаю, це так сумно, але те, що ви знайдете те, що ми збираємося укласти
ця частина семестру насправді перехід
З контексту C, звичайно, в контексті PHP
але при використанні деяких з тієї ж основи
Ми говорили протягом деякого часу.
>> Мета з PSET 7 є здійснення CS50 фінансів,
який є вашою власною версією Yahoo Finance і Google Finance
або навіть Etrade.com, в якому ви маєте можливість
подивитися ціни на акції для даного символу, але навіть більш того
у вас є можливість "купити" і "продати" акції
, Які торгуються на різних біржах, тому як це головна сторінка
Тут пропозиції, які дійсно, в якій мірі ми почали
Проблема набору для вас, ви повинні увійти форми, яка запитує ім'я користувача та пароль.
Вона має кнопку відправки, але після того, як ми в кінцевому рахунку бачити,
нічого не відбувається насправді під капотом ще й тому, що
залишається для вас, щоб реалізувати можливість реєструвати нових користувачів,
Можливість купити акції, продати акції,
насправді подивитися поточні ціни на акції.
>> І дійсно, це буде як реальний світ, як можливо тому, що ми зробили
є шматок коду, який дозволить вам з однією функцією
для запитів Yahoo Finance, яка чудово робить доступним безкоштовне даних
для пошуку цін на акції на основі символу акції або тікер,
і ви отримаєте назад поточні ціни на акції в день.
Дані насправді ви бачите в даному PSET буде
О, як реальний світ, як він може отримати, так що ви насправді взаємодія
з реальними запасами світ, реальні світові ціни,
і ми будемо бачити, скільки грошей ви можете зробити, можливо,
протягом наступних кількох днів, граючи з вашим власним набором проблем.
>> Але давайте спочатку підготувати грунт для, як проектувати те, що, звичайно, більш складна
ніж counter.php, це складніше, ніж будь-який з Frosh приклади чати досі,
і давайте спробуємо ввести декілька парадигм тут, які дозволяють нам
як для PSET 7 і, може бути, для вашого проекту, якщо ви робите щось веб-основі
щоб зберегти ваш код добре організовані, щоб тримати себе в здоровому розумі,
і зробити крок у бік співпраці, будь то в остаточному проекті CS50 в
або за її межами, якщо ви будете продовжувати програмувати щось в майбутньому.
Там в цю загальну парадигму дизайну
в галузі інформатики та в розробці програмного забезпечення в цілому
відомий як MVC, Model View Controller,
і це нерозумно акронім, який описує дуже гарна ідея,
яка є поділ різних аспектів програми,
спеціально ведення окремих логіки або бізнес-логіку сайту
так що все, що включає в себе такі речі, як
Виклик функцій і запитів до баз даних і т.п.
відбувається не серед ваших HTML
а в окремих файлах, і, дійсно, є такий один файл
Зазвичай, що ви назвали контролер
що насправді мізки за операцію, і ми побачимо, наприклад,
це в один момент.
>> Там є модель, яка програмного коду
, Що робить розмовляв з базами даних, який розмовляє з Yahoo Finance і т.п.,
а там V в MVC, види,
Всі речі, які пов'язані з естетикою, файли, які насправді містять
ваші HTML, CSS, може бути, ваше тощо.
Ідея тут у тому, як ця картина припускає, що контролер
це файл, як ми скоро побачимо, і як ви будете особливо бачити в PSET 7,
що світ говорить за допомогою своїх веб-браузерів.
Це файл, який буде побував на інтернет-громадськості,
але контролер спілкується з потенційно моделі,
яка є одним чи кількома іншими файлами, які містять код, пов'язаний з даними,
Код, пов'язаних з базами даних і т.п., а потім розмовляє з
Контролер один або кілька інших файлів, відомих як погляди,
які є естетика веб-сторінки, шаблони в дусі,
, Що може зайняти деякий даних в якості вхідних даних, але в кінці дня
Тільки логіка всередині метою повинно бути надання цих даних,
ітерації циклу і насправді плювати на деякі
HTML на основі їх виконанням або навіть щось подібне до PDF.
>> Що приємно про MVC є те, що ви можете мати різні погляди
в залежності від типу пристрою, в залежності від типу файлу формату, який ви насправді
хочете показати користувачеві.
Давайте подивимося на кілька більш і більш складні і добре продумані приклади
, Починаючи з першої версії 0 тут.
Дозвольте мені йти вперед і відкривати в нашому каталозі MVC сьогодні
файл з ім'ям index.php в каталозі: 0.
Зверніть увагу, це супер простий і дуже захват сайту
це свого роду версія 0 з домашньої сторінки для CS50,
і помітив, як у нас є посилання на лекції, у нас є посилання на навчальний план,
і якщо я перейдіть за посиланням на повідомлення лекції про те, що URL
нагорі буде змінюватися в lectures.php.
Якби я тоді слідуйте по посиланню тиждень 1 Зверніть увагу, що URL змін до week1.php.
Там, здається, досить простий ієрархічної структури тут.
>> Давайте кинемо швидкий погляд під капотом, як це виклав,
І дійсно, якщо подивитися на index.php це досить просто.
У самому справі, хоча я і назвав цю файлі PHP немає ніяких фактичних програмний код.
Там в коментарі, що я написав тут, в PHP просто, так що користувачеві не до кінця бачачи його.
Звичайно, як і раніше, нічого, що між PHP теги
інтерпретується, навіть якщо це коментарі, і інтерпретувати коментар
означає просто викинути його в кінці дня, і насправді не
відправити його в браузер, так що все тут просто естетика.
Якщо я відкриваю аналогічним lectures.php це теж просто жорстко кодованих файлів.
Це відбувається називати щось. PHP,
але це дійсно просто. HTML, і week1.php, week2.php
Точно так само тільки розмітка, так що купа недоліків цієї конструкції.
Один з них, це величезна кількість копіювати / вставити.
Навіть незважаючи на те єдине, що змінюється Серед цих файлів у випадку маркірованого списку,
Чи теги, я, тим не менш є док типу, HTML, голови,
назви, близькі тіла, близькі HTML і багато іншого
У кожен файл, який означає, що якщо я коли-небудь хочете реструктуризацію
ця веб-сторінка або restylize це я повинен піти і змінити
Всі ці файли вручну або з деяким масивним знайти і замінити.
>> Давайте зробимо крок у бік розумнішим, більше думати дизайну у версії 1 тут
яким відповідно читати мені, що ми включили, так що ви можете грати разом з
ці більш спокійні будинку, зверніть увагу, що ми маємо тут
Резюме файли у версії 1 цього сайту,
і здається, що я взяв на себе сміливість винести за дужки
загальний код, header.php і footer.php.
Ну, давайте поглянемо на те, що всередині першої з них.
Header.php виглядає знайомо,
але зверніть увагу, де це відрізати?
Відразу після рядка 19, так що це все, що було загальним
з файлу index.php, lectures.php,
Неделя1 і week2.php з попереднього прикладу.
Що я зробив копію і вирізати все, що було загальним для всіх цих файлів,
покласти його в окремий файл заголовка, а так само в footer.php
я застосувати той же принцип, згідно з яким тільки цікаві лінії
У footer.php ці два, недалеко тіла і близьких HTML.
>> Але що це означає тепер, що в новій версії
з index.php зверніть увагу, як багато простіше він може отримати.
Звичайно, трохи більш загадковим виглядає, трохи менше, інтуїтивно
слідувати зверху вниз, але боже мій, все, що надмірність у даний час немає.
Ми вимагаємо використанням PHP функція називається буквально вимагають нагорі,
яка дуже нагадує, нагадаємо, С # включити в механізм.
Ми вимагаємо header.php на самому верху.
Ми вимагаємо footer.php на дні, і єдине, що різні
або особливого в цьому файлі зміст, який повинен бути унікальним для цього.
Якби я тоді йдуть, скажімо, lectures.php, той же принцип застосовується.
Знову ж таки, деякі коментарі нагорі, але потім вимагають заголовку, вимагають нижній колонтитули,
і між ними, це тільки зміст, що насправді змінилося.
І якби ми дивилися на тиждень 1 і 2-й тиждень ми будемо бачити
що цей же принцип був застосований там.
Ну, ми не зовсім зроблено там.
>> Давайте поглянемо на версії 2, який має аналогічну структуру,
не помітити, що тепер я ввів щось інше.
У рядку 10 я представив helpers.php,
який очевидно містить допоміжні функції.
Допоміжні функції, як правило, відносно короткими функції
що ви пишете, щоб допомогти вам в різних місцях,
і давайте подивимося, що всередині helpers.php.
У цьому випадку, схоже, що вона має 2 функції.
Нагадаємо, з іншого дня з кубом приклад
Ви можете визначити свої власні функції в PHP, і те, що я зробив, тепер у мене
функцій називається надають підвал і зробити заголовок,
перший з яких приймає параметр називається даними,
якого за умовчанням є порожній масив, як це було запропоновано там,
і ми дійсно можемо написати це ще більш коротко в останній версії PHP
, Сказавши, відкриті квадратні дужки, закриті квадратні дужки.
Це означає, що порожній масив розміром 0, але, тим не менш масиву.
>> Цей екстракт функція трохи специфічний тим, що
що він робить це як аргумент асоціативний масив
, Який має 0 або більше пар ключ-значення, і якщо у вас є ключ Foo
а значення бару екстракт функції
створює ситуацію, в якій зараз, як лінії 11,
у вас є локальна змінна $ FOO, значенням якого є бар.
І якщо б у вас було більше ключів і значень у масиві даних,
Аналогічним б вони витягуються в локальну область
або простору імен, так що і footer.php
та ж ідея тут, щоб header.php
мають доступ до цих змінним.
У самому справі, дозвольте мені відкрити знову header.php
і звернути увагу на те, що тепер він виглядає в цій версії.
>> Замість жорсткого кодування CS50 в якості назви для кожної сторінки
помітить динамізм, що це можливо зараз.
У рядку 5 я луною назву змінної,
але спочатку я передаю, що назва змінної функцію під назвою HTMLSpecialChars.
Дурне ім'я для функції, якщо вона є, але вона дійсно робить те, що він говорить.
Це гарантує, що будь-які спеціальні символи
в рядку, який був прийнятий в правильно біг HTML.
Насправді це спосіб уникнути так званих Cross Site Scripting атаки
якій хтось може зловмисно або випадково
вводити свої власні HTML на свій сайт
шляхом вставки в тій чи іншій формі, наприклад,
те, що ви були не зовсім очікував, зокрема, наявність коду,
як ми будемо говорити в тиждень або два часу.
>> Це зараз header.php, це вид
У тому сенсі, що воно дозволяє переглядати естетичний зміст деяких наборів даних.
Але більш конкретно, це шаблон.
Це свого роду план тепер, що ми хочемо заголовку кожної сторінки, щоб виглядати,
але є деяка динаміка у тому, що ми хочемо, щоб назва буде динамічно вставляються
Судячи з назви змінної
, Яке було витягнуто, коли ми дзвонили, знову ж таки,
Функція візуалізації заголовка.
Тепер, якщо ми подивилися на рендер підвал, там насправді не так багато використання, що прямо зараз
тому що в footer.php немає динамізму б то не було.
Там можуть бути, але на даний момент це жорстко запрограмований список з 2 тегами,
але та ж ідея застосовна, так що фактично пропонує чому
Чи ми витрачати час має заголовок візуалізації і рендеринга колонтитул функцію?
Відпусти мене, а тепер у версії 3,
і в версії 3 в помічники я вирішив спростити її ще більше.
>> Дозвольте мені один візуалізації функцій.
Дайте мені його взяти ще один аргумент, на цей раз називається шаблоном,
, Який призначений, щоб бути ім'я шаблону,
і тоді я буду об'єднання зухвало. PHP, щоб значення цієї змінної,
, А потім, якщо він існує foo.php, bar.php або header.php і footer.php,
Потім я збираюся йти вперед і витягнути змінних даних
, А потім вимагають, щоб шлях.
Іншими словами, використання цього зараз, якщо я відкриваю index.php
зауважити, що я не називаю візуалізації заголовка більше.
Я просто називаю зробити, але я пройти в лапках значення заголовка
ясно дати зрозуміти, який шаблон я насправді хочу, щоб завантажити.
>> Тоді тут помітити, що я роблю.
Я передаю в динамічно ключ назву,
Значення CS50, і це теж, як ми бачили раніше,
міг би бути більш короткими в останній версії PHP
де я можу замінити функцію масиву в квадратних дужках,
який я пропоную ще більш читабельним і, звичайно,
трохи легше набирати.
І, звичайно, з винести колонтитул виклику в нижній частині,
Ми не турбують проходять у другий аргумент взагалі, не асоціативний масив,
тому що немає нічого динамічного всередині цього колонтитула.
Це всього лише деякі близькі тегів для HTML.
Добре, ми робимо кроки по очищенню речі дійсно тут,
але дозвольте мені відкрити 2 фіналу прикладів.
Це один, номер 4, зверніть увагу, що я прийняв свідоме рішення зараз
щоб поліпшити попередній приклад, нарешті, використовуючи деякі ієрархії мої файли.
>> Зверніть увагу, що в даному резюме, в цьому читав мені, я представив
включає в себе каталог і каталог шаблонів
, Вміст яких буде те, що я хочу, щоб включити
і шаблони, які я хочу зробити, відповідно.
Це дійсно я, будучи анальний і намагається тримати речі охайними,
зберегти файли, пов'язані разом, але кінцевий результат
є те, що у нас тепер є трохи охайніше установки, але ми повинні пам'ятати, тепер
в, наприклад, index.php
коли ми вимагаємо файл helpers.php
ми повинні тепер вимагають його через включає / helpers.php
, А не просто говорити helpers.php, тому що тепер це насправді в підкаталог.
Тепер, як і в сторону, ви побачите в цих прикладах і деякі інші
функції, як потрібно, потрібно один раз.
Там насправді сама функція називається включати, і всі вони мають дещо інше поведінку.
Тут я говорю потрібно один раз, щоб зробити супер ясно, що я тільки хочу, щоб ці
Помічники, включених в моєму проекті рази.
Але якщо я обережно, і якщо я насправді думаю через мою логіку правильно
цього має вистачити занадто просто сказати, вимагають нагорі
Поки я сам не випадково вимагає, щоб і той же файл в іншому місці.
Насправді, це трохи більш ефективний спосіб робити речі, потім за допомогою
потрібно один раз, так що я буду урізати його до просто вимагають.
>> Давайте візьмемо ще один крок вперед.
Цей останній приклад зараз, версії 5, має ще чистіше ієрархії папок.
Зверніть увагу на те, що я зробив тут за читала мені в цій останній версії
Тепер у мене є HTML каталог, який у мене був весь цей час,
але всередині там зараз тільки index.php, lectures.php,
week1.php і week2.php.
Каталог включає в себе в даний час живе поруч з HTML каталогу,
так на тому ж рівні, як рідний брат, так би мовити.
Так само як і шаблони папки.
Ключовим винос тут я представив трохи більше структури,
але ключовою особливістю є те, що тепер тільки файли
, Які повинні бути доступні веб публічно адресуються
по URL на інтернет-громадськості в моєму HTML каталогу.
>> Тим часом, інші файли, helpers.php, footer.php,
header.php, які, можливо, є, можливо, більш чутливі,
Може бути, помічники насправді має деякі імена користувачів і паролі або деякі інтелектуальні
властивість моє, функції, я дійсно не хочу, щоб світ бачив, навіть якщо випадково.
Це гарна практика, щоб триматися подалі від громадських каталогу HTML
будь-які файли, які не потрібно себе публіці.
Все, що потрібно зробити в цьому випадку, коли дивлюся, наприклад,
index.php каталогу в HTML файл,
Зауважте, що ми просто повинні бути трохи більш обережні, коли потрібно
або потрібно тільки файл.
Мені потрібно спочатку зробити .. для переходу в батьківський каталог,
то ж / входить / helpers.php
пірнати вниз, щоб отримати файл, який мене хвилює.
>> Будь-які питання, то на MVC
або це відносно просте втілення його?
І дозвольте мені пояснити, що ми зосередилися зовсім небагато на
V тут, думки і факторингові з цих шаблонів.
Ми насправді не відрізняється від M C тільки поки.
Насправді, там дійсно немає M тут, і навіть наш C,
контролера, насправді не роблять все, що багато, але ви отримаєте набагато більше
знайомий з обома цими 2 листа від MVC,
або, вірніше, ви отримаєте значно більше знайомі з C
У MVC для завдання набору 7, тому є більше, що на горизонті.
Питання?
Там насправді нікого немає.
>> Добре, давайте тепер перейдемо до другий і останній тема на сьогоднішній день.
Тобто введення бази даних.
До цього моменту ми мали кілька способів зберігання даних.
Ми використовували змінні.
Повернутися в нашому файлі C, I / O обговорення ми почали використовувати текстові файли
і використання файлів, таких як Fprintf, і тоді ми навіть почали
говорити про CSV-файлів небагато, значення, розділені комами,
так що все це дозволило нам мати дані, що зберігаються
або не постійно, або наполегливо.
Але навіть CSVs насправді не сприяє пошуку
і вставки і видалення.
Це дійсно просто нерозумно текстових файлів, розділених комами
рядок за рядком шляхом рядок за рядком, тому якщо ви хочете, щоб
пошук файлів, що краще, що ви можете зробити дійсно лінійний пошук.
Ви повинні почати у верхній частині файлу, читати все це в,
і шукати деяке значення інтересу.
Якщо Ви хочете вставити в неї ви повинні зробити те ж саме,
ітерації він і вставки в певному місці,
і в тому, що Ви повинні зробити все пошуки логіки собі.
>> Ви не можете зробити розумне шаблоном на файл CSV, якщо ви самі написати код.
Ви не можете зробити фільтрацію файлів CSV
якщо ви самі написати код.
Хіба не було б здорово, якщо б хтось інший поклав у всіх зусиль
насправді зробити пошук простим і легким вставки
і видалення та оновлення і так далі?
Це саме те, що база даних.
SQL, мова структурованих запитів, є ще однією мовою
що ми представляємо тут сьогодні, але це теж досить доступною,
і те, що ми дійсно збираємося зробити, це просто вирвати з нього деякі з найбільш характерних
характеристик, так що для PSET 7, і якщо ви робите щось веб-основі,
ваш остаточний проект, у вас є можливість виразити себе
за даними запитам.
У Вас є можливість зберігати мало чи багато даних
в більш структурованому вигляді, що буде в кінці дня
зробити ваше життя простіше, тому що з SQL ви можете виразити себе
набагато точніше, набагато більш методично, з тим щоб
повернути деякі підмножини даних з великого корпусу даних.
>> Ви можете думати про базу даних, в цьому випадку база даних SQL, дійсно, як Excel
або чисел, де це електронна таблиця,
або, може бути, декількох електронних таблиць і таблиць, звичайно,
є рядки і стовпці, і це тому, що
SQL бази даних реляційну, реляційну в тому сенсі,
що вони зберігають дані в термінах цих таблицях,
рядків і стовпців.
Вони більш високою продуктивністю, ніж щось подібне таблиці,
і таблиця призначена для використання людиною.
База даних призначена для використання програмістом
написання коду проти цього, тому втілення бази даних
буде або командного рядка.
>> Один з найпопулярніших реляційних баз даних там, знову ж таки, MySQL,
яка чудесно безкоштовно, дуже високопродуктивні, і це те, що
Facebook використовувати дуже рано і до деякої міри ще й сьогодні
зберігати багато своїх даних, і ми побачимо в момент
що за допомогою відносно простих команд
ми можемо вибрати дані, вставки даних, оновлення даних,
видалення даних і тому подібне, але, на щастя, є більш зручний інтерфейс
ніж просто ввівши в чорно-білій рядки тут.
Ми будемо використовувати для PSET 7 і за безкоштовний інструмент під назвою PHPMyAdmin.
Назва є випадковим.
Інструмент трапляється бути реалізовані в PHP,
але це принципово не має значення.
Що корисного про PHPMyAdmin тому, що це веб-утиліти.
Ми попередньо встановили його в прилад для вас,
і з його допомогою ви можете створювати таблиці в базі даних,
Ви можете вставити дані, видаляти дані, і взагалі см.
Ваші дані в досить зручним середовищем.
Ваші користувачі не збирається використовувати PHPMyAdmin.
>> Це дійсно тільки адміністративні або розробник інструментів
, З якої, щоб побачити і копатися ваші дані і з'ясувати, як структурувати її,
так само, як ви самі можете використовувати Excel або Numbers,
але це буде відмінний спосіб візуалізації, що відбувається під капотом
так що ви можете зосередитися на вирішенні проблем цікавим і не стільки
на таємні команди.
Давайте подивимося на приклад даних, які можуть зберігатися таблично
У реляційній базі даних.
Ось один з таких прикладів.
Зараз, на жаль, PHPMyAdmin помилку на стороні кидати занадто багато слів
і графіки на вас, але якщо ви відточують тільки на
ID колонки, колонки ім'я користувача і хеш-стовпця
це ефективно таблиці, але це трапляється, фрагмент
таблиці всередині приладу
використання файлів, ми надаємо вам в проблемі набір 7.
>> Зокрема, ми даємо вам файл, який представляє
користувачем таблиці, тому таблицю, що містить користувачів з 3 колонками,
одним з яких є унікальний ідентифікатор, починаючи з 1 і збільшується час після цього.
У другому стовпці ім'я користувача, і ті з вас, хто зробив хакер,
Хакер видання для PSET 2, могли б визнати деякі з цих імен користувачів по крайней мере.
На правій стороні знаходяться паролі, але вони не буквальне паролі.
Вони хеши їх, так виходить
, Що зберігати паролі в базі даних, це дійсно погана ідея.
Ви всі, напевно, читали в якийсь момент деякі веб-сайт
або бази даних, деякі компанії компрометації, а потім ви повинні
змінити пароль, вам потрібно отримати повернення на речі
тому що деякі поганий хлопець насправді увірвалися у своєму акаунті в якості результату.
>> Зберігання паролів в незашифрованому вигляді, у відкритому вигляді в базі даних
абсолютно дурний, і все ж це дуже забавно
Потім, щоб прочитати про деякі дуже відомих компаній
Іноді у пресі, бази даних яких опиняються під загрозою,
і ця частина не смішно, але факт, що бази даних містять незашифровані
Паролі смішно, тому що буквально з одного рядка коду
Ви можете захиститися від цієї конкретної загрози, і це те, що ми зробили тут.
Навіть для наших підроблених трохи CS50 фінансів версії
Ми шифрування паролів тільки для хорошої заходом, і той факт, що
Всі ці паролі починаються з $ 1 $ це просто конвенції.
Це просто означає, що вони зашифровані або дійсно хешіруется
яка, як одностороння функція шифрування
яких ви не можете ліквідувати її наслідки з так званої MD5.
>> Той факт, що 50 це після того, що означає, що значення солі
з 50 були використані для перемішування всі ці паролі, за винятком одного.
Шахта, звичайно, як ви бачите, є, HA,
було використання різних солей, так що ті з вас, хто отримав злегка спіткнувся
Може бути, у Hacker 2, що, можливо, було результатом нашої використавши
різних хеш, ніж інші, тому що мій пароль фактично те ж саме
як і деякі інші Користувач там.
У самому справі, якщо ви чекали всі ці тижні, щоб дізнатися
що ці паролі були тут були паролі, які ви були оскаржені
зламати в Hacker видання проблемою набору 2, так що не дуже складно.
У самому справі, Малан був таким же, як jharvard,
Але якщо ми повернемося вони виглядали по-іншому.
>> Зосередьтеся на jharvard в малиновий, тому що вони були солоні по-різному.
Алгоритм був обурений таким чином, що
хеш-значення, зашифроване значення виглядає трохи інакше
тому що входи були трохи іншими, але пароль під капотом
як і раніше в кінцевому рахунку, малиновий.
Тепер, хто піклується про це?
Ну, ми надаємо вам із зразками користувачів, імена зразків користувачів
і хеши паролів, так що у вас справді є деякий
клієнти для CS50 фінансів, коли ви вперше відірватися від землі з вашим кодом.
Вам доведеться виконувати кілька таблиць всередині MySQL, всередині бази даних.
Ви будете мати, щоб створити більш таблиць, ефективно, але ми вирішили дати вам цю
, Щоб ви почали, і ви побачите, що проблема набору специфікацій
проведе вас через процес імпорту цієї таблиці
а також пояснити, що деякі з характеристик,
і ви також побачите, що ми пропонуємо Вам код
для обробки хешування або шифрування даних паролів,
так що вам не потрібно занадто турбуватися про те, що MD5 або як насправді все.
>> Таким чином, SQL, мова структурованих запитів.
Це, просто кажучи, мова, яку ми збираємося почати використовувати в PSET 7
і, можливо, за межами запросити дані з деяких баз даних.
Дані, знову ж таки, зберігається таблично в цих реляційних таблиць, стовпців і рядків,
але з використанням деяких відносно простий синтаксис, як видалення,
вставки, оновлення та вибору ми можемо зробити саме це.
Ми можемо видалити з бази даних, вставки,
поновлення даних, а також вибрати, тобто отримання даних з бази даних.
Як ми можемо йти про це?
Дозвольте мені йти вперед у пристрій.
Дозвольте мені підтягти http://localhost,
який, знову ж таки, місцеві сам прилад.
Це за замовчуванням прізвисько.
І дозвольте мені перейти до / PHPMyAdmin.
Це трапляється, спеціальний URL, що прилад попередньо зрозуміти,
, Що одразу підказує мені ім'я користувача і пароль.
>> Як звичайно, я збираюся ввести jharvard і малиновий,
але розумію, що це обліковий запис адміністратора на комп'ютері.
Це просто збіг, що є також jharvard зареєстровані для CS50 фінансів.
Jharvard, малиновий, введіть дає мені користувальницький інтерфейс, який ми бачили
проблиск хвилину тому, і це трохи переважною спочатку,
але будьте впевнені, ви ніколи не будете мати, щоб натисніть більшість посилань в цьому інструменті.
Ви будете в кінцевому підсумку за допомогою невеликої групи, які є супер корисно,
перший з яких баз даних тут.
Якщо я підходжу до баз даних, помітили, що я запропоновано створити базу даних.
Це як створення нового файлу Excel, ефективно.
Я збираюся піти далі і називають цю лекцію, і я просто не звертати уваги на поле там, сортування.
Це пов'язано з поданням даних у ньому,
і я збираюся натиснути кнопку створити, а зараз помітила, як я відпустив створити
на лівій стороні, де він говорить, що немає бази даних
Я скоро див. лекцію бази даних.
>> Якщо я тепер натисніть на ліву сторону, лекції базі даних,
помітить мої вкладки зміниться трохи.
У мене є структури, SQL, експорт, імпорт і деякі інші речі.
Структура є в значній мірі порожнім.
Ніяких таблиць у базі даних, як сказано тут,
тому давайте створимо таблицю, і давайте йти вперед і створювати таблиці
як студенти, і скільки колон ми хочемо?
Давайте тримати це простий, і давайте записи для кожного студента
ID номер, ім'я та адресу електронної пошти.
>> Ми будемо тримати це простим, як, що, таким чином, 3 колонки, йди.
Форма, яку ви тут бачите, зараз трохи брудний і переважною,
але ми просто повинні пройти через це рядок за рядком, тому дуже швидко давай
Перший стовпець у цій базі даних ім'я ID для унікального ідентифікатора.
Це буде ціле число. Я можу фактично ігнорують довжини і значення.
Int буде 32 біт незалежно від того, що ви друкуєте там, так що давайте залишимо це поле порожнім.
Значення за умовчанням, я міг би зробити його нульовим, як вони визначені.
Я збираюся залишити це в спокої. Давайте не будемо турбуватися про значеннях за замовчуванням.
Давайте прокрутки тут направо, атрибути.
Це цікаво.
Давайте йти вперед і трохи умовно сказати, що ідентифікатори повинні бути підписані.
Давайте не будемо втрачати ні негативних чисел.
>> Підемо від 0 до 4 млрд, плюс-мінус,
і давайте не будемо торкатися будь-якого з цих полів просто ще там,
але тоді дозвольте мені ввести ім'я тут,
, А потім інша електронної пошти, тому улов електронній пошті
і ім'я, очевидно, не цілі числа, так що давайте міняти їх на інше поле.
Виявляється, VARCHAR, змінної довжини символів,
, Як рядок в базі даних SQL
але змінної довжини, і ви насправді потрібно сказати, що це заздалегідь
Максимальна довжина рядка, так що я збираюся дещо умовно
за угодою типу 255 символів.
Я можу сказати абсолютно 32. Я міг би сказати 1.000.
Ви начебто необхідності вирішити для себе, на основі ваших демографічних що
найдовший студента ім'я і йти з цим номером або трохи більше,
але те, що добре про VARCHAR він не збирається витрачати
255 байт на ім'я кожного студента.
Якщо це DAVID він не збирається використовувати всі 255 байт,
але це верхня межа, так що я піду з 255 тільки за угодою,
але ми могли б обговорити, що буде трохи нижче вартості, так і для електронної пошти
просто бути послідовним 255, але знову ж таки, ми могли б мати таку ж дискусію.
Але я збираюся зробити ще одну річ тут на правій стороні.
>> Що потужних про базу даних є те, що вона може робити багато важкої роботи
або складна робота для вас.
Зокрема, я дійсно не хвилює, що ID мого студента числа.
Це просто повинно бути унікальним ідентифікатором в базі даних
так що у мене є 32-розрядні коротким представленням, що студент
так що у мене є якийсь спосіб унікальної ідентифікації їх
щоб не бути 2 Давідс, наприклад, в класі.
Насправді, я збираюся цей прапорець А.І., автоматичне прирощення,
так що база даних, MySQL, з'ясовує,
що ID кожного знову вставленої студента буде.
Я навіть не доведеться піклуватися про те, що в моєму коді,
і я також буду вибирати щось під індексом меню.
Індекс випадають тут первинні, унікальні,
індекс і повний текст.
Можна здогадатися, що, може бути, пару таких речей,
але виявляється, що в реляційних базах даних
Ви програміст або адміністратор бази даних, щоб отримати превентивно
давати підказки до бази даних як до того, що поля
У таблиці небагато особливим.
>> Наприклад, в даному випадку я хочу сказати, що ID
буде первинний індекс, інакше відомий як первинний ключ.
Що це означає, за визначенням, є те, що відтепер ID
однозначно ідентифікувати студентів у цій таблиці.
Жоден студент не буде мати той же ID, тому що я введення цього обмеження або цей індекс.
Крім того, що це збирається зробити для мене це розповість
MySQL, що ID є спеціальним.
Я дбаю особливо про ID, так що йти вперед і робити магію вашої фантазії структура даних, в
створити свого роду дерево.
Зазвичай це те, що називається B-дерева, які ми не дивимося на тижні тому,
але це інша така структура даних, близького за духом до бінарні дерева
і намагається, що ми дивилися, але вона скаже
в базі даних цього поля є настільки важливим, що я, ймовірно,
хочу бути в змозі шукати на це, йти вперед і будувати деякі фантазії
Структура даних у пам'яті, щоб прискорити пошуки, так що ідеально
вони постійні часу або, принаймні близько до того, як можливо
так, що вона не перетвориться в лінійний пошук, який не буде
Самий високопродуктивний підхід.
На відміну від цього, адресу електронної пошти, можливо, був первинним ключем.
>> У теорії, адресу електронної пошти кожної людини унікальним, якщо ви не розділяючи деякі рахунки,
але це як правило не добре використовувати щось подібне рядки
в якості первинного ключа, тому що, якщо його мета в житті, щоб однозначно ідентифікувати
рядків у таблиці немає ніяких причин використовувати 255 байт максимально
однозначно ідентифікувати когось, якщо ви можете обійтися тільки 4 байти
або 32-розрядний Int.
Загалом, первинний ключ повинен бути коротким і короткі
а в ідеалі щось подібне ціле або великий INT, який буває 64 біт.
Але адресу електронної пошти повинен бути унікальним, і одна з особливостей бази даних занадто
, Щоб забезпечити унікальність для мене.
При виборі унікальних тут поруч з електронною поштою, хоча саме по електронній пошті
прокручується з екрану, я говорю в базу даних
мені не довіряєш.
Не дай мені вставляти в базу даних
ж адресу електронної пошти два рази, навіть якщо я ідіот, і я не
дуже добре з моєю IFS і IFS ще й фактичний код PHP
і я випадково дозволити користувачеві зареєструватися в існуючу адресу електронної пошти
База даних є ще одним рівнем захисту для коректності
для забезпечення того, щоб дублюються адреси електронної пошти не до кінця в таблиці.
>> Тепер, навпаки, для назви ви, ймовірно, не хочуть, щоб це унікальне
тому що тоді ніколи не може бути 2 або 2 Davids Майк Сміт, наприклад,
в базі даних, так що ми просто залишити в спокої.
Я збираюся йти вперед і натисніть кнопку Зберегти в правому нижньому кутку,
і все виглядає добре, але помітив тут
це частина, яка на даний момент ми не будемо витрачати надто багато часу на
тому що синтаксис трохи складним, і ми не повинні створювати таблиці
Все, що часто, але SQL сам по собі є мовою,
синтаксису, для яких це прямо тут, що я виділив.
Що PHPMyAdmin дійсно це створює веб-інтерфейс для вас
, З якої ви можете заощадити час і не доведеться вручну вводити з
досить довгий SQL запитів зразок цього.
>> Іншими словами, якщо ви хочете, щоб вручну створити цю таблицю,
або на цій чорно-білій рядки або навіть в PHPMyAdmin
За допомогою цієї вкладки інший, на цій вкладці SQL, де ви можете набрати в будь-якому запитів SQL
Ви хочете, чесно кажучи, це зайняло б мені хвилину
насправді пам'ятає весь синтаксис, і навіть тоді я б, напевно,
зроблені деякі помилки, тому цей інструмент є корисною речі, як, що, і це теж повчально.
Ви можете почати робити висновок, що синтаксис
просто гарне колірне кодування, що PHPMyAdmin додає
для нашого візуального зручності.
А тепер давайте зробимо це замість цього.
Дозвольте мені перейти на вкладку Вставлення на вершині, і дозвольте мені йти вперед і вставити, наприклад,
Ідентифікатор скажімо, насправді мене не хвилює.
Це буде автоматичне збільшення. Я хочу, щоб база даних впоратися з цим.
Але я буду Давид, і моя електронна пошта повинна бути malan@harvard.edu.
>> Давайте підемо далі тут і покласти в Майк Сміт інший.
Я дам собі прізвище, а також,
і ми повинні бути йому smith@example.com,
і тоді, де я можу йти далі?
Ну, це виглядає як піти, кнопку натиснути, і вуаля.
Зверніть увагу, у верхньому 2 рядки вставлені.
Це реальний запит SQL.
Це PhpMyAdmin інструмент виконаний для мене,
але в кінцевому підсумку, зауважте, якщо я зараз перейдіть на вкладку Огляд,
, Щоб побачити 2 рядки в цій таблиці, дуже нагадують естетично
у таблиці ми бачили раніше для наших користувачів від PSET 7,
один з яких є Девід Малан, один з яких в даний час є Майк Сміт.
Але тільки, щоб бути ясною, мені не потрібно використовувати PHPMyAdmin,
І дійсно, ви збираєтеся найближчим часом писати код для PSET 7
, Яка автоматизує процес додавання рядків, видалення рядків, оновлення рядків і т.п.,
так що дозвольте мені замість цього перейти до вкладки SQL тут
і типу SELECT * FROM студентів, де
електронну пошту = "malan@harvard.edu".
>> Іншими словами, припустимо, тепер у вас є
деякі HTML формі, і користувач вводить свою адресу електронної пошти, серед інших областях,
і мета зараз знаходиться в PHP на задньому кінці коду
насправді шукати інші деталі цього користувача.
Яке ваше повне ім'я? Який ваш ID номер?
Ви могли б написати SQL запит, як це, виберіть * від студентів
де лист = "malan@harvard.edu".
І якщо я потім натисніть кнопку Перейти, помітили, що я повинна, і дійсно я, повернути тільки один рядок.
Майк виключені з цього набору результатів, так як колекції рядків
зазвичай називають, тому що він не має ту ж адресу електронної пошти, як я.
>> Тепер, знову ж таки, тут PSET 7 ви зможете використовувати PHPMyAdmin як адміністративний інструмент
і педагогічної інструмент, щоб дізнатися свій шлях
по всьому світу SQL, але в кінці дня
Ви збираєтеся писати ці запити всередині фактичний код PHP,
і тому слідкуйте за оновленнями в керівництві Zamyla зокрема
де ви отримаєте тур по розподілу код для цієї проблемою набору
де ми дали вам не тільки естетика для сторінки входу
і хороший сексуальний логотип, який говорить CS50 фінансів, але ми також дали вам
купою функцій, які зроблять ваше життя трохи легше.
Ми також написав частину PSET для вас,
Вхід частина його, зокрема, щоб дати вам відчуття представник дизайн
що насправді використовує контролер, наприклад, index.php,
login.php тощо, і тоді ви побачите PSET також є каталог шаблонів
, Яка має усі свої погляди, всі естетики.
І тому загальний робочий процес в PSET 7 буде в тому, що
Ваші користувачі відвідати контролер через URL в браузері.
Це Контроллер містить PHP код, який ви написали, так і всередині вашого коду PHP
може бути кілька рядків SQL вкладені в подвійні лапки
і передається в функцію ми написали називається запитом
, Які допоможуть вам спілкуватися з базою даних без використання щось подібне
адміністративних інструментів, як PHPMyAdmin.
>> Ви зможете писати SQL заяви в PHP коду
і повернутися PHP масив результуючого набору,
рядків, які фактично відповідають даному запиту.
А так само ви зможете зробити вставки або видалення
або оновлень і т.п., синтаксис якого дуже схожий,
і ви побачите, з деяких інтернет-посилання, з розподілом код
і від PSET упакувати себе в точності, як йти про це.
Зрозумійте, в кінцевому рахунку, ми дійсно просто дряпати поверхню SQL
і MySQL, але влада це дійсно те, що він звільняє вас
зосередити увагу на проблеми ви хочете вирішити, використання випадків ви хочете реалізувати
не турбуватися абсолютно так само, принаймні, на ранній стадії,
про те, де і як зберігати і шукати базу даних,
і це цілком буквально, де Facebook сама отримала свій початок
Використання MySQL, а потім за допомогою більш MySQL сервер, а потім більш серверів MySQL
до часу, поки вони тоді були дійсно почати думати над тим, як
сховище даних, як зберігати речі, навіть більш ефективно,
так що навіть якщо ми вважаємо само собою зрозумілим той факт, що індекси та унікальні обмеження
і так далі просто працювати є дуже цікава розмова
що це може в кінцевому підсумку призвести всіх до, так розумію, що ми просто дряпати поверхню
, Що в кінцевому рахунку може для вас або ваших проектів стають зовсім небагато великих даних.
>> З урахуванням сказаного, давайте закінчується, і ми побачимося наступного тижня.
[CS50.TV]