1 00:00:00,000 --> 00:00:03,920 >> [Музика, яка грає] 2 00:00:03,920 --> 00:00:11,760 3 00:00:11,760 --> 00:00:13,800 >> Девід Дж Маланій: Гаразд. 4 00:00:13,800 --> 00:00:15,640 Це CS50. 5 00:00:15,640 --> 00:00:17,620 Це початок тижня вісім. 6 00:00:17,620 --> 00:00:22,440 І ви, напевно, пам'ятаєте, що ми зупинилися Останній раз, дивлячись на нову мову 7 00:00:22,440 --> 00:00:23,240 в цілому. 8 00:00:23,240 --> 00:00:25,905 Насправді, один, що досить легкий і це навіть не 9 00:00:25,905 --> 00:00:26,940 Мова програмування. 10 00:00:26,940 --> 00:00:31,100 Це мова розмітки, яка дозволяє нам фактично структурувати і зробити веб-сторінок. 11 00:00:31,100 --> 00:00:33,350 А коли вам щось ще в поєднанні з this-- 12 00:00:33,350 --> 00:00:35,670 або ви скоро будете, якщо Ви вже не маєте. 13 00:00:35,670 --> 00:00:38,530 Ми збираємося використовувати каскадне Стилів, або CSS, які 14 00:00:38,530 --> 00:00:40,971 ще один тип мови з властивостями і значеннями 15 00:00:40,971 --> 00:00:43,220 що відбувається, щоб повідомити зробити речі, як змінити колір 16 00:00:43,220 --> 00:00:46,010 і змінити положення і ці види налаштувань. 17 00:00:46,010 --> 00:00:49,940 Але сьогодні і далі, ми починаємо зосередитися на більш потужних мовах, 18 00:00:49,940 --> 00:00:52,810 фактичні мови програмування, такі як PHP. 19 00:00:52,810 --> 00:00:54,880 >> Так PHP була навколо протягом деякого часу. 20 00:00:54,880 --> 00:00:56,810 І, як ви побачите, це був розроблений, передусім, 21 00:00:56,810 --> 00:01:00,280 рано для фактична використовувати в веб-розробці 22 00:01:00,280 --> 00:01:02,360 і насправді генерації веб-сторінок. 23 00:01:02,360 --> 00:01:04,849 Так що види Особливості робить мову 24 00:01:04,849 --> 00:01:10,040 потрібно для того, щоб веб- сторінки динамічно з нею? 25 00:01:10,040 --> 00:01:14,760 >> Іншими словами, якщо ви хочете створити Зміст dynamically-- як Facebook, 26 00:01:14,760 --> 00:01:19,480 Стрічка новин, які постійно міняється, або миттєві повідомлення, які з'являються час від 27 00:01:19,480 --> 00:01:21,872 в time-- як те, що Ключовою частиною функціональності 28 00:01:21,872 --> 00:01:24,580 Вам потрібно на мові програмування що хай буде вам динамічно 29 00:01:24,580 --> 00:01:28,070 друкувати нову інформацію на екран? 30 00:01:28,070 --> 00:01:28,685 >> СТУДЕНТ: Код. 31 00:01:28,685 --> 00:01:29,560 Девід Дж Маланій: Код. 32 00:01:29,560 --> 00:01:30,440 Добре. 33 00:01:30,440 --> 00:01:31,995 Ми будемо вважати, що. 34 00:01:31,995 --> 00:01:35,310 Трохи більш точним. 35 00:01:35,310 --> 00:01:37,639 Я маю на увазі, ми могли б зробити це з C, відверто. 36 00:01:37,639 --> 00:01:38,930 Було б біль в шиї. 37 00:01:38,930 --> 00:01:41,045 Но-- це зобов'язання? 38 00:01:41,045 --> 00:01:41,895 >> СТУДЕНТ: Так. 39 00:01:41,895 --> 00:01:42,677 Змінні, може бути? 40 00:01:42,677 --> 00:01:43,760 Девід Дж Маланій: Змінні. 41 00:01:43,760 --> 00:01:44,160 Так, звичайно. 42 00:01:44,160 --> 00:01:45,740 Змінні, безумовно, може допомогти нам. 43 00:01:45,740 --> 00:01:47,020 І навіть щось простіше. 44 00:01:47,020 --> 00:01:50,640 Ми використовували його в найперший Програма першого дня 45 00:01:50,640 --> 00:01:55,686 коли ми насправді сказав "привіт світ". 46 00:01:55,686 --> 00:01:56,570 >> СТУДЕНТ: Друк. 47 00:01:56,570 --> 00:01:57,778 >> Девід Дж Маланій: Друк, чи не так? 48 00:01:57,778 --> 00:02:01,050 Друк, або Printf в Мир C. Таким чином, весь цей час, 49 00:02:01,050 --> 00:02:03,362 ми мали в нашій утилізація language-- C, 50 00:02:03,362 --> 00:02:05,570 в particular-- і навіть Подряпини на те пішло, що 51 00:02:05,570 --> 00:02:07,400 може генерувати рядків тексту. 52 00:02:07,400 --> 00:02:11,090 >> Ну, якщо HTML, як ми бачили минулого тижня, є просто ціла купа рядків тексту 53 00:02:11,090 --> 00:02:14,692 хоча і з відкритими дужками і закритий Кронштейни і якийсь віршик 54 00:02:14,692 --> 00:02:16,650 і причина цього, ну тоді ми могли дійсно 55 00:02:16,650 --> 00:02:20,440 почати виробляти веб-сторінок або вручну, ввівши їх в Gedit 56 00:02:20,440 --> 00:02:23,870 або в Microsoft Word, для цього matter-- ми просто потрібен текстовий редактор. 57 00:02:23,870 --> 00:02:26,830 >> Або ми могли б написати код, з Вашою пропозицією 58 00:02:26,830 --> 00:02:30,435 раніше, що хай би нам динамічно генерувати HTML, 59 00:02:30,435 --> 00:02:32,560 і ось що ми збираємося щоб почати робити з PHP 60 00:02:32,560 --> 00:02:34,900 і зрештою навіть при Мова називається JavaScript, 61 00:02:34,900 --> 00:02:37,910 це використовувати одну мову для створення іншої. 62 00:02:37,910 --> 00:02:40,720 І справді, це те, що Facebook і багато, багато інших сайтів 63 00:02:40,720 --> 00:02:44,530 зробити, щоб насправді динамічно відображати нову інформацію для вас. 64 00:02:44,530 --> 00:02:47,117 >> Отже, давайте почнемо з this-- а загадковими дивлячись лінія, але один 65 00:02:47,117 --> 00:02:48,450 що насправді досить потужний. 66 00:02:48,450 --> 00:02:51,210 До сих пір, ми використовували C, яка являє собою скомпільований мову. 67 00:02:51,210 --> 00:02:55,050 І просто швидко recap-- складено Мова має якої характеристику? 68 00:02:55,050 --> 00:02:59,050 Ви, очевидно, потрібно компілювати це, але що це означає? 69 00:02:59,050 --> 00:03:00,505 Да? 70 00:03:00,505 --> 00:03:02,940 >> СТУДЕНТ: Вона повинна бути зібрані в машинний код. 71 00:03:02,940 --> 00:03:03,060 >> Девід Дж Маланій: ОК. 72 00:03:03,060 --> 00:03:04,530 Він повинен бути зібраний в машинний код. 73 00:03:04,530 --> 00:03:07,340 Таким чином, ви берете свій вихідний код, яка є свого роду англійська-як. 74 00:03:07,340 --> 00:03:09,270 Ви перетворити, що в щось більш низький рівень, 75 00:03:09,270 --> 00:03:11,590 який в кінцевому рахунку називається Об'єкт code-- 0 і 1 .. 76 00:03:11,590 --> 00:03:14,830 І це ті 0 і 1. що CPU, як ті зроблені Intel, 77 00:03:14,830 --> 00:03:16,110 насправді зрозуміти. 78 00:03:16,110 --> 00:03:19,690 >> Тепер, PHP і Python і Рубі і JavaScript і грона друга 79 00:03:19,690 --> 00:03:23,190 мови не складений мови, але інтерпретованих мов, 80 00:03:23,190 --> 00:03:26,630 значить, ви просто вводите їх, а потім Ви не перетворити їх на 0 і 1 .. 81 00:03:26,630 --> 00:03:30,790 Ви замість цього просто забезпечити те, як вхід для програми чужому, 82 00:03:30,790 --> 00:03:32,080 називається перекладач. 83 00:03:32,080 --> 00:03:34,460 І даної особи програма була розроблена 84 00:03:34,460 --> 00:03:38,280 щоб зрозуміти, що кожен і кожен символ в Python або PHP 85 00:03:38,280 --> 00:03:42,650 або Рубі або будь-яку кількість інші мови означає. 86 00:03:42,650 --> 00:03:44,760 >> А так все що нам потрібно це щось на зразок цього. 87 00:03:44,760 --> 00:03:46,350 Таким чином, справді, я збираюся перейти до приладу 88 00:03:46,350 --> 00:03:48,100 тут, як раз в будь Старе вікно, і ми 89 00:03:48,100 --> 00:03:52,580 збираюся йти вперед і відкритим файл з ім'ям, скажімо, привіт. 90 00:03:52,580 --> 00:03:55,780 Тепер раніше, я міг би врятувати це навіть з розширенням файлу, 91 00:03:55,780 --> 00:03:57,910 але я збираюся зробити щось ще простіше тут. 92 00:03:57,910 --> 00:04:02,450 Я збираюся йти вперед і почати цей файл з цією загадковою синтаксису. 93 00:04:02,450 --> 00:04:06,310 Таким чином, "користувач, бен, ENV, для навколишнього середовища, PHP ". 94 00:04:06,310 --> 00:04:10,670 >> Це просто одна рядок коду, що це збираюся розповісти свою операційну систему, 95 00:04:10,670 --> 00:04:13,730 знайди в ваш місцевий Середа все, що є, 96 00:04:13,730 --> 00:04:18,149 скрізь, де PHP is-- на interpreter-- і йти вперед і використовувати цю перекладача 97 00:04:18,149 --> 00:04:20,589 інтерпретувати наступний код. 98 00:04:20,589 --> 00:04:22,760 Тепер, це свого роду потворний особливістю PHP. 99 00:04:22,760 --> 00:04:24,980 Але на цій мові, будь раз, коли ви написати PHP код, 100 00:04:24,980 --> 00:04:29,200 Ви повинні мати один з них негарно PHP-теги демаркації початок 101 00:04:29,200 --> 00:04:32,220 Вашої code-- 00:04:37,430 >> Але нижче, на що я можу зараз зробити щось досить просто, як Printf привіт кома 103 00:04:37,430 --> 00:04:40,922 Мир зворотний слеш н близько цитата, близько дужки. 104 00:04:40,922 --> 00:04:42,630 А потім просто назавжди міра, я збираюся 105 00:04:42,630 --> 00:04:45,380 йти вперед і близько мій PHP тег тут 106 00:04:45,380 --> 00:04:47,390 щоб все виглядало красиво досить надруковані. 107 00:04:47,390 --> 00:04:50,780 >> І як тільки я натисніть кнопку Зберегти, Gedit достатньо насправді розумні 108 00:04:50,780 --> 00:04:54,620 подивитися на цій самій першому рядку і реалізувати, ну, ви пишете PHP-код. 109 00:04:54,620 --> 00:04:56,710 Нехай мені підсвітку синтаксису це з квітами 110 00:04:56,710 --> 00:04:58,690 тут так, що він стоїть трохи більше. 111 00:04:58,690 --> 00:05:01,300 Але зараз я збираюся піти до мого вікна терміналу. 112 00:05:01,300 --> 00:05:02,340 Я масштабу. 113 00:05:02,340 --> 00:05:06,860 >> Ця програма називалася «Привіт», так що я збираюся робити точковий риску привіт, 114 00:05:06,860 --> 00:05:07,990 але доступ заборонено. 115 00:05:07,990 --> 00:05:08,490 І Баш. 116 00:05:08,490 --> 00:05:10,610 Ми насправді чули про те, що річ пару тижнів тому 117 00:05:10,610 --> 00:05:13,140 в контексті Shellshock, одна з цих помилок. 118 00:05:13,140 --> 00:05:16,240 >> Але дозвіл заперечував, що ми бачили до, може бути, в іншому контексті. 119 00:05:16,240 --> 00:05:19,060 Нагадаємо, Хто-небудь, як Ви могли б щось виправити 120 00:05:19,060 --> 00:05:22,100 де дозвіл відмовлено, як це? 121 00:05:22,100 --> 00:05:23,490 Що команда, принаймні ,? 122 00:05:23,490 --> 00:05:24,159 >> СТУДЕНТ: Chmod. 123 00:05:24,159 --> 00:05:26,700 Девід Дж Маланій: Так, CHMOD, для зміни режиму файлу. 124 00:05:26,700 --> 00:05:30,171 І ви отримаєте все більш використовуються для це на наступному тижні з наступним проблеми 125 00:05:30,171 --> 00:05:30,670 встановити. 126 00:05:30,670 --> 00:05:33,211 Але зараз, я збираюся змінити Режим не повинні бути видимі, 127 00:05:33,211 --> 00:05:36,650 але щоб дати кожному executeability пільги, можливість 128 00:05:36,650 --> 00:05:37,710 щоб запустити цей файл. 129 00:05:37,710 --> 00:05:40,360 І я збираюся призначити що в файл привіт. 130 00:05:40,360 --> 00:05:45,150 >> Якщо я зараз зробити точкову риску привіт введіть, вам см, насправді, моя програма, привіт світ. 131 00:05:45,150 --> 00:05:48,760 І те, що крок зробив я ясно пропустити взагалі? 132 00:05:48,760 --> 00:05:49,520 Компіляція. 133 00:05:49,520 --> 00:05:51,680 Так що я просто запустив цю програму досить просто. 134 00:05:51,680 --> 00:05:55,690 >> І виходить, що ви можете зробити це з багато синтаксису нагадує С. 135 00:05:55,690 --> 00:06:03,400 Відпусти мене в сьогоднішній коду, які я поклав у моєму каталозі з віртуальними хостами 136 00:06:03,400 --> 00:06:05,250 тут, на реальних причин ми повернемося до. 137 00:06:05,250 --> 00:06:09,350 І я збираюся піти в, скажімо, умови 1. 138 00:06:09,350 --> 00:06:12,450 >> І ви побачите тут, у першу все, ціла купа зауважень. 139 00:06:12,450 --> 00:06:15,240 Але це насправді відтворення в PHP 140 00:06:15,240 --> 00:06:18,960 програми ми зробили в тиждень одна називається умови 1.c 141 00:06:18,960 --> 00:06:20,690 де мета в життя цієї програми 142 00:06:20,690 --> 00:06:22,950 мабуть, щоб запитати Користувач ціле число 143 00:06:22,950 --> 00:06:25,270 а потім зробити деякі пухнасті Аналіз на ньому в результаті чого 144 00:06:25,270 --> 00:06:29,510 Ви говорите, якщо це позитивно або негативний або дорівнює нулю. 145 00:06:29,510 --> 00:06:34,220 І я про це тільки тому, що, протягом можливо однієї маленької деталі, за винятком, 146 00:06:34,220 --> 00:06:37,150 це неотличимо так далеко від С. 147 00:06:37,150 --> 00:06:39,930 >> Що одна характеристика тут, що, може бути, вискакує 148 00:06:39,930 --> 00:06:41,410 у вас як трохи відрізняється? 149 00:06:41,410 --> 00:06:42,160 Може бути, дві речі. 150 00:06:42,160 --> 00:06:42,660 Да? 151 00:06:42,660 --> 00:06:44,070 >> СТУДЕНТ: Знак долара н? 152 00:06:44,070 --> 00:06:44,944 >> Девід Дж Маланій: Так. 153 00:06:44,944 --> 00:06:46,210 Так знак долара н присутня. 154 00:06:46,210 --> 00:06:48,120 І долар ознаки, як ми побачимо, йдуть 155 00:06:48,120 --> 00:06:51,460 бути виправлення до початку будь-якої змінної в PHP. 156 00:06:51,460 --> 00:06:54,250 Це і добре, і bad-- добре в що це свого роду очевидно, що це 157 00:06:54,250 --> 00:06:56,797 Змінна, погано в тому, що це ще одна річ, щоб ввести. 158 00:06:56,797 --> 00:06:58,630 І є ще один що у нас є не зовсім 159 00:06:58,630 --> 00:07:00,876 видно, принаймні, з цієї орфографії. да? 160 00:07:00,876 --> 00:07:01,630 >> СТУДЕНТ: Readline. 161 00:07:01,630 --> 00:07:02,671 >> Девід Дж Маланій: Readline. 162 00:07:02,671 --> 00:07:06,550 Readline ми не бачили, як такої, в С, навіть при тому, що існує щось 163 00:07:06,550 --> 00:07:09,530 схожі, але ми використовували GetString, і в цьому його колега. 164 00:07:09,530 --> 00:07:12,950 Так що, якщо я йду в цей каталог, який буває, 165 00:07:12,950 --> 00:07:18,030 як я поясню в трохи в моїй віртуальний хост каталог і мій джерело каталогу, 166 00:07:18,030 --> 00:07:22,730 і я йду вперед і робити точковий слеш conditions-- whoops-- точка слеш 167 00:07:22,730 --> 00:07:26,710 умови 1, ви побачите, знову ж таки, те ж саме issue-- доступ заборонений. 168 00:07:26,710 --> 00:07:33,610 >> Отже, дозвольте мені збільшувати і робити CHMOD плюс х на умовах, точкових умовах косою. 169 00:07:33,610 --> 00:07:35,222 Я хотів би ціле, будь ласка, 50. 170 00:07:35,222 --> 00:07:36,930 І ми могли б грати в цю гра впродовж всього дня. 171 00:07:36,930 --> 00:07:39,140 Це буде вести себе точно так як це було в тиждень один. 172 00:07:39,140 --> 00:07:42,860 >> Добре так не все, що відрізняється, за винятком того, не тільки, що невелике трохи синтаксису, 173 00:07:42,860 --> 00:07:45,490 але в верхній частині, я знову була ця лінія, яка 174 00:07:45,490 --> 00:07:49,760 дозволив мені створити щось, що виглядає як C програму під назвою Привіт, 175 00:07:49,760 --> 00:07:51,150 звані умови 1. 176 00:07:51,150 --> 00:07:54,520 Але це не 0 і ті, Я виконання безпосередньо. 177 00:07:54,520 --> 00:07:57,620 Це замість того, щоб працювати в цьому перекладач, ім'я якого 178 00:07:57,620 --> 00:07:59,440 трапляється, збігається з мовою. 179 00:07:59,440 --> 00:08:04,970 Програма називається PHP, і мій код нижче лінії один передається в нього. 180 00:08:04,970 --> 00:08:07,740 >> Ми можемо зробити ще один досить простий приклад нагадує про щось 181 00:08:07,740 --> 00:08:09,240 ми зробили тижнів тому. 182 00:08:09,240 --> 00:08:12,020 Знову ж, це свого роду довільне шматок коду 183 00:08:12,020 --> 00:08:14,000 що, очевидно робить що при запуску вона? 184 00:08:14,000 --> 00:08:15,625 Що це в друк, мабуть? 185 00:08:15,625 --> 00:08:23,540 186 00:08:23,540 --> 00:08:28,250 >> Так, спочатку на лінії 16, це збираюся сказати х тепер 2, напевно. 187 00:08:28,250 --> 00:08:30,920 % D така ж, як $ я для Printf. 188 00:08:30,920 --> 00:08:33,460 Так то це кубатури, точка, точка, точка, в рядку 17. 189 00:08:33,460 --> 00:08:36,299 І тоді лінії 18 з'явиться для виклику функції в кубі. 190 00:08:36,299 --> 00:08:37,600 А де в кубі визначається? 191 00:08:37,600 --> 00:08:40,319 >> Ну, як він виглядає в лінії 25, так що це не все, що відрізняється. 192 00:08:40,319 --> 00:08:42,610 У мене є деякі коментарі вище це, але здебільшого, 193 00:08:42,610 --> 00:08:45,370 це досить просто портирование або перетворення 194 00:08:45,370 --> 00:08:48,470 від C програми на PHP версії. 195 00:08:48,470 --> 00:08:52,670 Але в даний час існує декілька відмінності, які, може бути, слід стрибати. 196 00:08:52,670 --> 00:08:56,100 Що ще відрізняється, як ви може написати цю ж програму в C? 197 00:08:56,100 --> 00:08:57,900 >> СТУДЕНТ: [нерозбірливо]. 198 00:08:57,900 --> 00:09:00,070 >> Девід Дж Маланій: Там немає прототип верх. 199 00:09:00,070 --> 00:09:03,210 Так PHP-- і, відверто кажучи, Багато сучасної languages-- 200 00:09:03,210 --> 00:09:06,920 багато розумніші і корисно ніж C компілятори в тому, що вам 201 00:09:06,920 --> 00:09:09,740 можна поставити функцію тут, Ви можете помістити функцію тут, 202 00:09:09,740 --> 00:09:12,740 а перекладач буде зробити вам послугу читання 203 00:09:12,740 --> 00:09:16,010 весь файл перед його вирішує що деякі функції не існує. 204 00:09:16,010 --> 00:09:17,970 Так приємно удосконалення років по тому. 205 00:09:17,970 --> 00:09:22,126 Але є також те, ще відрізняється або відсутній тут. 206 00:09:22,126 --> 00:09:22,626 Да? 207 00:09:22,626 --> 00:09:25,084 >> СТУДЕНТ: [нерозбірливо]. 208 00:09:25,084 --> 00:09:27,750 Девід Дж Маланій: Ми не повинні оголошувати типи змінних, 209 00:09:27,750 --> 00:09:31,780 так що ми побачимо найближчим часом, що Існують різні типи в PHP, 210 00:09:31,780 --> 00:09:34,970 але вам не потрібно вказувати їх, який також є і хороше і погане. 211 00:09:34,970 --> 00:09:36,623 І є ще одна річ, відсутня. 212 00:09:36,623 --> 00:09:37,430 >> СТУДЕНТ: Там немає бібліотеки. 213 00:09:37,430 --> 00:09:38,630 >> Девід Дж Маланій: Там немає бібліотеки. 214 00:09:38,630 --> 00:09:39,350 ОК, так що це добре. 215 00:09:39,350 --> 00:09:40,540 Ми отримуємо набагато більше із коробки. 216 00:09:40,540 --> 00:09:43,373 Так що насправді набагато більше, речі, ніж я думав, були різні. 217 00:09:43,373 --> 00:09:44,350 Як щодо шляху в спині? 218 00:09:44,350 --> 00:09:46,032 Що це? 219 00:09:46,032 --> 00:09:46,740 Скажіть, що це ще раз? 220 00:09:46,740 --> 00:09:47,960 >> СТУДЕНТ: Покажчик. 221 00:09:47,960 --> 00:09:49,270 >> Девід Дж Маланій: Ні покажчиків. 222 00:09:49,270 --> 00:09:51,280 Добре, принаймні, в цьому прикладі, немає. 223 00:09:51,280 --> 00:09:52,070 Це справедливо. 224 00:09:52,070 --> 00:09:55,090 Таким чином, тобто не покажчики в PHP фактично в цілому. 225 00:09:55,090 --> 00:09:58,730 Є щось називається посилання, але ми не будемо витрачати надто багато часу там. 226 00:09:58,730 --> 00:09:59,520 А що ще? 227 00:09:59,520 --> 00:10:00,185 >> СТУДЕНТ: Головна. 228 00:10:00,185 --> 00:10:01,060 Девід Дж Маланій: Головна. 229 00:10:01,060 --> 00:10:02,768 Так це було важлива персона Я думав о. 230 00:10:02,768 --> 00:10:04,660 Зверніть увагу, що немає основною точкою входу. 231 00:10:04,660 --> 00:10:06,525 Ви просто почати писати код. 232 00:10:06,525 --> 00:10:08,400 І це насправді буде вигідно 233 00:10:08,400 --> 00:10:10,560 коли ми переходимо на мить, щоб насправді за допомогою 234 00:10:10,560 --> 00:10:13,980 це той же мова для веб- програмування, для яких ми 235 00:10:13,980 --> 00:10:16,580 не хочу мати тільки одну точку входу. 236 00:10:16,580 --> 00:10:19,980 Ми, можливо, захочете мати купу URL-адреси, купа різних файлів 237 00:10:19,980 --> 00:10:22,930 все брати в користувальницький введення і виробляти продукцію. 238 00:10:22,930 --> 00:10:27,130 >> Але от дуже вразила Приклад, який я обіцяв минулого разу, 239 00:10:27,130 --> 00:10:30,130 а саме в цій папці тут, друкарськими помилками. 240 00:10:30,130 --> 00:10:33,680 Так що в цьому файлі правопису, які ми не витрачатиме занадто багато часу на, є 241 00:10:33,680 --> 00:10:37,870 істотно porting-- P-O-R-T. Це просто слово, дане коли, скажімо, 242 00:10:37,870 --> 00:10:40,800 перетворенні з однієї мови в іншу, як правило, вручну. 243 00:10:40,800 --> 00:10:45,680 >> Це портирование ПК версія правопису від PSET 5. 244 00:10:45,680 --> 00:10:48,856 І я в основному намагався перетворити це рядок за рядком, наскільки я можу. 245 00:10:48,856 --> 00:10:51,730 Так що, якщо вам подобається цей вид речі, він насправді коштує на якийсь момент 246 00:10:51,730 --> 00:10:54,229 потягнувши їх обох до пліч сторона і бачачи, що та ж сама 247 00:10:54,229 --> 00:10:55,230 і що по-іншому. 248 00:10:55,230 --> 00:10:57,510 Але вони чертовски схожі. 249 00:10:57,510 --> 00:11:00,110 Якщо ви пам'ятаєте, то, що орфографії навіть виглядав, 250 00:11:00,110 --> 00:11:02,110 навіть якщо ви не зробили повинні змінити цей файл, 251 00:11:02,110 --> 00:11:04,860 це досить схожі структурно тільки з декількома 252 00:11:04,860 --> 00:11:06,200 змін тут і там. 253 00:11:06,200 --> 00:11:10,140 >> Так що це тільки сказати, що це досить просто конвертувати Speller 254 00:11:10,140 --> 00:11:12,000 від С до PHP. 255 00:11:12,000 --> 00:11:15,390 Але в словнику, є щось ще більш привабливим. 256 00:11:15,390 --> 00:11:19,270 Дозвольте мені йти вперед і створювати мій власний файл dictionary.php. 257 00:11:19,270 --> 00:11:24,010 Так трохи відрізняється в тому, що ми будемо називати його .php замість .c. 258 00:11:24,010 --> 00:11:26,980 Тому що це файл PHP, я do-- злегка annoyingly-- є 259 00:11:26,980 --> 00:11:30,132 на запуск файлу з тег PHP подібне. 260 00:11:30,132 --> 00:11:32,340 І я збираюся йти вперед і визначити декілька функцій. 261 00:11:32,340 --> 00:11:35,770 Функція називається перевірка, яка є збирається зайняти в слові, як раніше. 262 00:11:35,770 --> 00:11:37,520 Але цей аргумент-х матиме долар 263 00:11:37,520 --> 00:11:39,840 підписати, тому що ми, знову ж таки, за допомогою PHP. 264 00:11:39,840 --> 00:11:42,350 Ще одна функція з dictionary.c був навантаження 265 00:11:42,350 --> 00:11:47,120 і він взяв на ім'я словника, так що я отримаю цю функцію готові піти. 266 00:11:47,120 --> 00:11:50,920 >> Ще один в dictionary.c було те, що? 267 00:11:50,920 --> 00:11:54,580 Розмір був одним із самих хороших, в Принаймні, якщо ви тримали деякі змінні навколо. 268 00:11:54,580 --> 00:11:57,830 так що розмір просто повинен повертати змінну. 269 00:11:57,830 --> 00:11:59,090 А потім була розвантаження. 270 00:11:59,090 --> 00:12:02,830 >> Так з'явилися ці чотири функції в проблемі установки +5 271 00:12:02,830 --> 00:12:06,770 що вам потрібно для реалізації з деякі структури даних або структури. 272 00:12:06,770 --> 00:12:10,170 Так що я обіцяв, що в PHP, ми можемо оголосити 273 00:12:10,170 --> 00:12:14,490 Хеш-таблиця, наприклад, Все, що більш легко. 274 00:12:14,490 --> 00:12:17,377 Насправді, якщо я хочу хеш-таблицю, Я просто хочу, щоб йти, як, що 275 00:12:17,377 --> 00:12:18,460 і є моя хеш-таблиці. 276 00:12:18,460 --> 00:12:21,555 І це зауваження, зневіру, що ми зупинилися на останній раз. 277 00:12:21,555 --> 00:12:23,930 І ви знаєте, що, якби я хотів змінна для розміру, добре, 278 00:12:23,930 --> 00:12:25,867 цей ще не все що відрізняється від C, 279 00:12:25,867 --> 00:12:27,450 але я збираюся йти вперед і робити що. 280 00:12:27,450 --> 00:12:28,630 І не помітити не тип даних. 281 00:12:28,630 --> 00:12:31,180 І я повернуся пізніше, а насправді додати деякі коментарі тут. 282 00:12:31,180 --> 00:12:32,480 Але як щодо навантаження? 283 00:12:32,480 --> 00:12:35,780 >> Якщо словник знак долара це ім'я мого файлу 284 00:12:35,780 --> 00:12:39,600 і я насправді хочу, щоб завантажити слова в цій таблиці підприємством, 285 00:12:39,600 --> 00:12:42,360 Я можу насправді щось досить просто. 286 00:12:42,360 --> 00:12:44,880 Одно-- і це minorly annoying-- в PHP, 287 00:12:44,880 --> 00:12:47,710 Ви повинні вказати всередині функції, якщо вас 288 00:12:47,710 --> 00:12:51,060 хочете отримати доступ до деяких глобальним Мінлива який визначається межами. 289 00:12:51,060 --> 00:12:53,530 >> Але це не особливо Цікаво зараз. 290 00:12:53,530 --> 00:12:57,920 Що більш цікаво, це для кожного побудувати що я вже востаннє. 291 00:12:57,920 --> 00:13:01,880 І виходить, що PHP має функцію називається файл, мета якого в житті 292 00:13:01,880 --> 00:13:05,550 це відкрити файл і прочитати в всі його лінії в масив 293 00:13:05,550 --> 00:13:06,840 і передати їх назад к. 294 00:13:06,840 --> 00:13:12,170 >> Який повинен сказати, що я можу зробити словник так що в даний час ефективно, коли я називаю файл, 295 00:13:12,170 --> 00:13:15,472 це буде здати мене Масив слів з файлу. 296 00:13:15,472 --> 00:13:16,430 Це ще не все, що добре. 297 00:13:16,430 --> 00:13:20,130 Він як і раніше буде лінія слів, щось лінійної. 298 00:13:20,130 --> 00:13:23,880 Але я можу йти вперед і ітерації за кожне з цих слів за допомогою 299 00:13:23,880 --> 00:13:25,710 що синтаксис ми бачили стисло востаннє. 300 00:13:25,710 --> 00:13:27,940 І ви побачите це більш в майбутньому PSET. 301 00:13:27,940 --> 00:13:32,070 >> Але тепер у мене є петлі ітерації за кожного слова в словнику. 302 00:13:32,070 --> 00:13:36,100 І на кожній ітерації, згадати, що я називаючи поточне слово "слово". 303 00:13:36,100 --> 00:13:39,790 І все це займе, щоб вклав слово в словник 304 00:13:39,790 --> 00:13:43,530 буде слово здогадка "правда". 305 00:13:43,530 --> 00:13:44,740 Це моя функція вставки. 306 00:13:44,740 --> 00:13:46,661 Це моя функція навантаження для мого словника. 307 00:13:46,661 --> 00:13:49,410 Тепер це ніби обману, тому що, Ви знаєте, що є насправді 308 00:13:49,410 --> 00:13:52,920 зворотний слеш н-х наприкінці слова що я, ймовірно, слід позбутися, 309 00:13:52,920 --> 00:13:56,380 але це не проблема, тому що PHP має Функція називається відбивна, яка в буквальному сенсі 310 00:13:56,380 --> 00:13:58,480 відрубує одного персонажа в самому кінці. 311 00:13:58,480 --> 00:13:59,400 Так ніяка проблема там. 312 00:13:59,400 --> 00:14:02,199 Ми пішли вперед і насправді скорочується, що саме до цього. 313 00:14:02,199 --> 00:14:05,240 І тепер я, ймовірно, слід відстежувати від розміру, так що давайте, принаймні зробити this-- 314 00:14:05,240 --> 00:14:05,835 Розмір ++. 315 00:14:05,835 --> 00:14:07,339 Я можу зробити це, як і раніше. 316 00:14:07,339 --> 00:14:10,380 І тоді це, ймовірно, буде працювати нормально, так що повернемося вірно. 317 00:14:10,380 --> 00:14:10,930 Готово. 318 00:14:10,930 --> 00:14:11,797 PSET 5. 319 00:14:11,797 --> 00:14:13,545 >> [Сміх] 320 00:14:13,545 --> 00:14:14,420 >> Девід Дж Маланій: ОК. 321 00:14:14,420 --> 00:14:16,628 Ми збираємося зробити це знову з наступного PSET, теж. 322 00:14:16,628 --> 00:14:18,730 Так що про розмір? 323 00:14:18,730 --> 00:14:22,080 Ну, це один, сподіваюся, про як можна було б очікувати в минулий раз, 324 00:14:22,080 --> 00:14:24,460 хоча я повинен зробити це нерозумно глобальна річ. 325 00:14:24,460 --> 00:14:26,610 Це просто артефакт від дизайн мови. 326 00:14:26,610 --> 00:14:28,450 >> Але перевірка є трохи більш цікавим. 327 00:14:28,450 --> 00:14:31,420 Так що, якщо я пройшов в долар підписати слово, я вперше 328 00:14:31,420 --> 00:14:34,060 хочуть мати доступ до що глобальна змінна стіл. 329 00:14:34,060 --> 00:14:36,700 І тепер, якщо я хочу, щоб перевірити, якщо слово є, 330 00:14:36,700 --> 00:14:44,350 Я можу просто сказати, якщо це правда, що Нижче встановлюється в таблиці, 331 00:14:44,350 --> 00:14:49,957 потім піти далі і повернення правда; ще, повернутися помилковим. 332 00:14:49,957 --> 00:14:51,180 Готово. 333 00:14:51,180 --> 00:14:52,440 Інша половина PSET 5. 334 00:14:52,440 --> 00:14:54,540 >> Гаразд, так що знову, я різання декілька кутів. 335 00:14:54,540 --> 00:14:56,831 Справедливості заради, слід, мабуть, провести ще кілька секунд 336 00:14:56,831 --> 00:14:58,300 на цій реалізації. 337 00:14:58,300 --> 00:15:01,860 І я, напевно, не слід дражнити все годин ви поклали на PSET так багато. 338 00:15:01,860 --> 00:15:04,045 Так strtolower є функцією. 339 00:15:04,045 --> 00:15:06,670 Щось подібне екзистенціаліст в С, по крайней мере, для символів, 340 00:15:06,670 --> 00:15:08,560 але PHP отримав цілий версію рядка. 341 00:15:08,560 --> 00:15:11,226 >> Це відбувається, щоб змусити всі в нижній регістр, який деякі з вас 342 00:15:11,226 --> 00:15:14,944 могли б зробити, щоб канонізувати що Ви ставили в словнику. 343 00:15:14,944 --> 00:15:16,360 І тепер ви можете зробити це в C, занадто. 344 00:15:16,360 --> 00:15:17,780 Це не має нічого спільного з PHP. 345 00:15:17,780 --> 00:15:20,260 >> Але в будь-який час у вас є Логічний стан, 346 00:15:20,260 --> 00:15:22,680 якось на лінії 10 є, які тільки 347 00:15:22,680 --> 00:15:27,145 збирається оцінити, вірно чи брехня, і ваш, якщо ще ясно 348 00:15:27,145 --> 00:15:33,620 повертається істинним або хибним, я міг просто дійсно зробити цей сексуальніше 349 00:15:33,620 --> 00:15:38,360 і просто зробити щось на зразок цього. 350 00:15:38,360 --> 00:15:40,500 Так що моя функція перевірки. 351 00:15:40,500 --> 00:15:42,560 Право, якщо логічне повертає істинне або помилкове, 352 00:15:42,560 --> 00:15:44,630 давайте просто повернути його відразу. 353 00:15:44,630 --> 00:15:47,340 >> І є кілька інших налаштувань Я міг би зробити тут і там. 354 00:15:47,340 --> 00:15:51,380 Load-- вивантаження, до речі, це буде зроблено. 355 00:15:51,380 --> 00:15:52,850 Нічого не робити там. 356 00:15:52,850 --> 00:15:55,840 Так як все в пам'яті PHP і багато інших мов 357 00:15:55,840 --> 00:15:57,570 насправді вдалося для вас. 358 00:15:57,570 --> 00:16:00,330 Так, тоді як в C, як Ви дізналися болісно, 359 00:16:00,330 --> 00:16:04,700 все, що ви Танос або calloc або Realloc, ви повинні звільнити себе. 360 00:16:04,700 --> 00:16:08,770 Все, що ви відкрити потік, ви повинні fclose, таким чином, що ресурси, в кінцевому рахунку звільнені 361 00:16:08,770 --> 00:16:11,690 і інструменти, такі як Valgrind НЕ помітити і не скаржаться, 362 00:16:11,690 --> 00:16:13,570 який є хорошою річчю для роботи на них. 363 00:16:13,570 --> 00:16:16,190 >> Але, звичайно, там повинні бути деякі улов, чи не так? 364 00:16:16,190 --> 00:16:19,400 В іншому випадку, ми якось даремно ціла купа тижнів. 365 00:16:19,400 --> 00:16:23,270 Так що будь-яку кількість причин Тому ми як би взяти цю траєкторію, 366 00:16:23,270 --> 00:16:24,440 але є компроміс. 367 00:16:24,440 --> 00:16:25,820 Право, це було тематичним. 368 00:16:25,820 --> 00:16:29,690 >> Так що може компроміс тут рухається, від С до PHP? 369 00:16:29,690 --> 00:16:33,250 За відчуттями все виграти досі, крім трохи неподобства тут або там. 370 00:16:33,250 --> 00:16:34,040 Так. 371 00:16:34,040 --> 00:16:34,700 Що це? 372 00:16:34,700 --> 00:16:36,064 >> СТУДЕНТ: [нерозбірливо] пам'яті. 373 00:16:36,064 --> 00:16:36,980 Девід Дж Маланій: Швидкість. 374 00:16:36,980 --> 00:16:37,479 Добре. 375 00:16:37,479 --> 00:16:40,720 Ну, моя швидкість була досить швидко. 376 00:16:40,720 --> 00:16:42,020 Чи не так? 377 00:16:42,020 --> 00:16:44,320 Але швидкість виконання програми? 378 00:16:44,320 --> 00:16:45,580 ОК, так що це справедливе зауваження. 379 00:16:45,580 --> 00:16:50,930 >> Так як це відбуватиметься, я заздалегідь подають репліки до як моє рішення спробувати, один 380 00:16:50,930 --> 00:16:53,510 Я був на великій дошці було рішення спроба основі, 381 00:16:53,510 --> 00:16:55,510 і в мене є, що в цьому каталозі тут. 382 00:16:55,510 --> 00:16:58,510 Так що я в даний момент, я можу йти вперед і запустити це на Біблії короля Якова, 383 00:16:58,510 --> 00:16:59,657 Натискання Enter. 384 00:16:59,657 --> 00:17:01,990 І це, сподіваюся, правильно Реалізація в кінці, 385 00:17:01,990 --> 00:17:05,109 дає мені час в загальній складності з 0,38 секунд для цього 386 00:17:05,109 --> 00:17:07,270 один кілька довільно приклад. 387 00:17:07,270 --> 00:17:09,270 >> І якщо я зараз зупинятися на цьому Другий вікно терміналу 388 00:17:09,270 --> 00:17:14,569 тут, де я вперше відкрив Gedit, нехай мені йти в сьогоднішньому code-- які, знову ж таки, 389 00:17:14,569 --> 00:17:19,650 знаходиться в цьому каталозі here-- і дозвольте мені йти вперед і працювати Speller. 390 00:17:19,650 --> 00:17:23,470 Так просто бути ясно, це PHP версії. 391 00:17:23,470 --> 00:17:25,170 Я лише показую верх його тут. 392 00:17:25,170 --> 00:17:32,020 >> Так що, якщо я роблю Speller з тильди CS50 Pset 5 тексти, Король Джеймс, введіть. 393 00:17:32,020 --> 00:17:39,700 394 00:17:39,700 --> 00:17:43,050 Він як і раніше швидше, ніж листи це в C, але загальний час 395 00:17:43,050 --> 00:17:47,650 це, зауважте, 0.93, в той час як мій Реалізація C на базі 0,38. 396 00:17:47,650 --> 00:17:49,110 Так що це нетривіальна різниця. 397 00:17:49,110 --> 00:17:51,100 >> І це тільки на одному файлі. 398 00:17:51,100 --> 00:17:53,480 Якби ви були запустити два програми в порівнянні з великою дошці 399 00:17:53,480 --> 00:17:56,510 і є ціла купа входів випробування, це, безумовно, складаються. 400 00:17:56,510 --> 00:18:00,310 І якби ми мали навіть великі обсяги даних, це теж буде скласти все більше. 401 00:18:00,310 --> 00:18:04,820 Так що, так, платити деяку ціну швидкості дійсно так. 402 00:18:04,820 --> 00:18:05,470 Що ще? 403 00:18:05,470 --> 00:18:08,000 404 00:18:08,000 --> 00:18:08,860 Да? 405 00:18:08,860 --> 00:18:10,340 >> СТУДЕНТ: Сума використання RAM. 406 00:18:10,340 --> 00:18:11,756 >> Девід Дж Маланій: Сума використання RAM. 407 00:18:11,756 --> 00:18:15,380 Так що я не давав одну секунду думав, коли писав цю PHP 408 00:18:15,380 --> 00:18:17,300 Версія про те, як багато пам'яті я використовував. 409 00:18:17,300 --> 00:18:22,080 Я повністю відкласти, що в PHP Сам і той, хто написав цю програму. 410 00:18:22,080 --> 00:18:24,500 І що може бути в порядку, Але якщо я насправді дуже 411 00:18:24,500 --> 00:18:28,420 дбати про стискаючи стільки продуктивність з моєї програми або з мого веб-сайту 412 00:18:28,420 --> 00:18:31,150 або з якої-небудь інструмент Я строю, може бути, 413 00:18:31,150 --> 00:18:33,310 PHP, справді, не є правильним мовою. 414 00:18:33,310 --> 00:18:36,330 >> І справді, саме тому, для Наприклад, багато веб-servers-- 415 00:18:36,330 --> 00:18:38,980 фактичні програми, обслуговувати веб content-- 416 00:18:38,980 --> 00:18:41,810 не написані в PHP або в Python або Ruby. 417 00:18:41,810 --> 00:18:44,630 Вони написані, як Ви зараз зробити з Pset 6, 418 00:18:44,630 --> 00:18:48,120 в C, так що ви можете стиснути кожен біт продуктивності з нього 419 00:18:48,120 --> 00:18:50,780 і дійсно здійснювати контроль мелкозернистая над тим, що це 420 00:18:50,780 --> 00:18:52,980 відбувається під капот і не просто взяти його 421 00:18:52,980 --> 00:18:54,890 як належне деякі вище Структура даних рівня. 422 00:18:54,890 --> 00:18:58,071 >> Розглянемо, в кінці кінців, хто в PHP реалізований 423 00:18:58,071 --> 00:19:00,070 що поняття хеш table-- це насправді більше 424 00:19:00,070 --> 00:19:04,260 правильно називається асоціативний array-- він або вона є ідеї, які 425 00:19:04,260 --> 00:19:07,090 входів ви збираєтеся бути введення в структурі? 426 00:19:07,090 --> 00:19:08,260 Так, очевидно, не, чи не так? 427 00:19:08,260 --> 00:19:10,340 Це універсальний інструмент, в інструментарії, це 428 00:19:10,340 --> 00:19:13,430 за умови, всім, хто хоче використовувати його, і тому, звичайно, це 429 00:19:13,430 --> 00:19:17,680 не можуть бути оптимізовані, в кінцевому рахунку саме те, що ви хочете зробити. 430 00:19:17,680 --> 00:19:21,180 >> Так торгово-offs-- час розробки може відрізняються, продуктивність може відрізнятися, 431 00:19:21,180 --> 00:19:23,120 Складність або використання пам'яті може відрізнятися. 432 00:19:23,120 --> 00:19:24,820 І так, що ви знайдете більше, що є 433 00:19:24,820 --> 00:19:26,570 буде по-іншому інструменти для торгівлі. 434 00:19:26,570 --> 00:19:31,160 І справді для супер більшості Остаточні проекти народні в цьому класі, 435 00:19:31,160 --> 00:19:34,360 вірите чи ні, C не збирається щоб бути правильним мову використовувати. 436 00:19:34,360 --> 00:19:37,880 >> І справді, однією з їжі додому в кінцевому рахунку, для будь-якого класу, як це 437 00:19:37,880 --> 00:19:40,510 є, щоб ви думаєте про, добре, що ви повинні зняти 438 00:19:40,510 --> 00:19:42,710 полку, коли ви хочете вирішити деякі проблеми. 439 00:19:42,710 --> 00:19:46,720 І справді, ми через це навіть більше, оскільки ми дивимося на декількох мовах 440 00:19:46,720 --> 00:19:47,920 навіть за сьогоднішній день. 441 00:19:47,920 --> 00:19:50,530 >> Так що давайте перехід зараз можливо, більш знайомі контекст 442 00:19:50,530 --> 00:19:52,480 для використання мови як PHP. 443 00:19:52,480 --> 00:19:56,720 Це кілька прийнято використовувати в командного рядка, написання сценаріїв 444 00:19:56,720 --> 00:19:59,050 як я зробив, але це багато, набагато більше спільного. 445 00:19:59,050 --> 00:20:02,350 І це було призначено для використання в форма файлів, які, як правило, в кінцевому 446 00:20:02,350 --> 00:20:05,060 в .php-- але це НЕ prerequisite-- 447 00:20:05,060 --> 00:20:07,990 що самі генерувати веб-контенту. 448 00:20:07,990 --> 00:20:11,310 >> Отже, дозвольте мені йти вперед і відкрити кілька Приклади, які я підготував заздалегідь. 449 00:20:11,310 --> 00:20:15,100 І це насправді свого роду правда Історії в тому, що один з перших речей, 450 00:20:15,100 --> 00:20:18,200 Я коли-небудь робив сам після закінчення CS50 і, може бути, я думаю, 451 00:20:18,200 --> 00:20:21,350 CS51 років тому мій сусід по кімнаті і я допомагали 452 00:20:21,350 --> 00:20:24,320 запустити новачка очний спортивну програму, яка, в той час, 453 00:20:24,320 --> 00:20:28,610 вже на першому курсі реєстрації на різних спорт, заповнюючи листок паперу, 454 00:20:28,610 --> 00:20:31,800 як його називали, йдучи через двір до Wigglesworth, 455 00:20:31,800 --> 00:20:34,030 і поклавши його в деяких Проктора падіння двері. 456 00:20:34,030 --> 00:20:37,210 І тоді він або вона буде проходити через їх, а потім фактично, напишіть нам вручну 457 00:20:37,210 --> 00:20:39,140 що ми були зареєстровані протягом деякого спорту. 458 00:20:39,140 --> 00:20:41,166 >> Отже, ясно, можливість для поліпшення. 459 00:20:41,166 --> 00:20:44,040 У ці дні, ви можете звернутися до щойно Google Forms, але назад в день, 460 00:20:44,040 --> 00:20:46,914 ми повинні були насправді досягти for-- це не було навіть, що довго ago-- досягти 461 00:20:46,914 --> 00:20:49,410 для програмування Мова, який не був PHP. 462 00:20:49,410 --> 00:20:51,200 В той час, це було те, що називається Perl, 463 00:20:51,200 --> 00:20:52,890 який відтоді вийшло з моди. 464 00:20:52,890 --> 00:20:54,160 Але ідея та ж. 465 00:20:54,160 --> 00:20:58,940 >> І я по суті сіл спробувати в порт йде Perl версії для PHP, 466 00:20:58,940 --> 00:21:03,710 але в повному застереження, не дають Будь-яка думка до естетики тільки поки. 467 00:21:03,710 --> 00:21:04,960 Так ось веб-сторінка. 468 00:21:04,960 --> 00:21:05,670 Цей файл. 469 00:21:05,670 --> 00:21:09,470 Якщо я наближати, його, мабуть, називається froshim0.php 470 00:21:09,470 --> 00:21:12,060 просто тому, що це наша перша Приклад в цій серії. 471 00:21:12,060 --> 00:21:15,970 І зауважте, що у нього є те, що здається бути дуже некрасиво форма HTML, 472 00:21:15,970 --> 00:21:18,680 а форма Цікаво оскільки вона дозволяє 473 00:21:18,680 --> 00:21:21,910 мені надати користувальницький введення в браузері. 474 00:21:21,910 --> 00:21:27,730 >> Тепер останній раз, коли у нас був вигляд, щоб кого ж ми уявити нашу параметр запиту, 475 00:21:27,730 --> 00:21:30,450 параметр черги, як його називали? 476 00:21:30,450 --> 00:21:31,330 Таким чином, щоб Google, чи не так? 477 00:21:31,330 --> 00:21:34,090 Ми повністю спонтіровал на ідеї робити що-небудь з цим входом. 478 00:21:34,090 --> 00:21:36,160 >> Але сьогодні, ми починаємо виробляти висновок. 479 00:21:36,160 --> 00:21:39,420 А поведінка я збираюся подивитися тут спочатку досить тривіально. 480 00:21:39,420 --> 00:21:42,980 Девід, я перевірю від пол Тут, кажуть, Метьюз тут. 481 00:21:42,980 --> 00:21:43,800 Я не буду капітаном. 482 00:21:43,800 --> 00:21:45,410 Я збираюся натисніть Реєстрація. 483 00:21:45,410 --> 00:21:50,720 І зверніть увагу, що URL має змінилася зареєструватися, 0.php, 484 00:21:50,720 --> 00:21:52,310 а там цей потворний текст тут. 485 00:21:52,310 --> 00:21:54,460 Я не думав, щоб форматування це. 486 00:21:54,460 --> 00:21:59,900 >> Але цікаво те, що три Значення мабуть, були передані в. 487 00:21:59,900 --> 00:22:02,960 Це свого роду РНР з еквівалентно printf-- 488 00:22:02,960 --> 00:22:06,330 ми побачимо, що це дійсно називається в bit-- що просто друкує 489 00:22:06,330 --> 00:22:08,300 те, що ви пройшли в нього. 490 00:22:08,300 --> 00:22:11,414 Таким чином, це говорить про те, що цій формі принаймні три поля до неї, 491 00:22:11,414 --> 00:22:12,580 і ви бачили, що я введіть їх в. 492 00:22:12,580 --> 00:22:15,739 Один з них був моє ім'я, один був пол, один був гуртожиток. 493 00:22:15,739 --> 00:22:18,780 І капітан навіть не відправляють на сервер, тому що я не перевіряв його. 494 00:22:18,780 --> 00:22:22,150 >> Так що це сказати по-видимому, коли ви уявити речі в Інтернеті, 495 00:22:22,150 --> 00:22:26,830 не тільки робить URL іноді change-- іноді ні. 496 00:22:26,830 --> 00:22:30,330 Справді, ім'я файлу змінив, але те, що відсутній в URL 497 00:22:30,330 --> 00:22:32,861 що ми дійсно бачили востаннє з Google. 498 00:22:32,861 --> 00:22:33,360 Да? 499 00:22:33,360 --> 00:22:34,380 >> СТУДЕНТ: Ні рядок запиту 500 00:22:34,380 --> 00:22:35,220 >> Девід Дж Маланій: Там немає рядка запиту. 501 00:22:35,220 --> 00:22:37,270 Там немає знаку питання щось. 502 00:22:37,270 --> 00:22:40,050 Там немає знаку питання д дорівнює кішок, як ми зробили минулого разу. 503 00:22:40,050 --> 00:22:42,170 І є, звичайно, немає Назва знак питання одно 504 00:22:42,170 --> 00:22:46,310 Девід або гуртожитку дорівнює Метьюз, так де те, що все відбувається? 505 00:22:46,310 --> 00:22:51,290 >> Ну, дозвольте мені повернутися до Gedit тут і відкрити перший з цих файлів 506 00:22:51,290 --> 00:22:57,020 на мій віртуальний хост, локальний хост, громадського каталог тут і піти в froshim0. 507 00:22:57,020 --> 00:23:02,060 Ось і виходить, що майже все цій сторінці тільки HTML. 508 00:23:02,060 --> 00:23:05,410 І це може бути вам незнайомі, але це скоро буде більше, з PSET 6 509 00:23:05,410 --> 00:23:07,370 і PSET 7 і PSET 8. 510 00:23:07,370 --> 00:23:09,160 Але це тільки HTML-сторінки. 511 00:23:09,160 --> 00:23:12,400 >> І цікавий матеріал здається, тут. 512 00:23:12,400 --> 00:23:16,290 Форма тег, дія якого атрибут має значення регістра 0. 513 00:23:16,290 --> 00:23:18,890 Ось чому, коли я уявити це, він іде до цього файлу. 514 00:23:18,890 --> 00:23:20,620 Але метод відрізняється раз сьогодні пост. 515 00:23:20,620 --> 00:23:23,120 Ось і виходить, там, принаймні два методу в Інтернеті використовуються 516 00:23:23,120 --> 00:23:24,911 для передачі інформації від браузера до сервера. 517 00:23:24,911 --> 00:23:25,980 Get ставить його в URL. 518 00:23:25,980 --> 00:23:27,950 Повідомлення ставить його в іншому місці. 519 00:23:27,950 --> 00:23:30,570 А коли і чому може ви насправді хочете сайт 520 00:23:30,570 --> 00:23:34,110 використовувати пост, то замість з отримуєте, просто інтуїтивно? 521 00:23:34,110 --> 00:23:37,080 Будь веб-сайт. 522 00:23:37,080 --> 00:23:42,010 Які дані повинні бути передані тільки шляхом умовиводів зараз через пост, на відміну 523 00:23:42,010 --> 00:23:45,184 отримати, якщо ми бачили дві відмінності? 524 00:23:45,184 --> 00:23:46,350 СТУДЕНТ: [нерозбірливо] забезпечити. 525 00:23:46,350 --> 00:23:47,790 Девід Дж Маланій: Якщо ви хочете щось, щоб бути в безпеці. 526 00:23:47,790 --> 00:23:50,360 Таким чином, ви можете ввести пароль в веб-сайт, кредитна карта 527 00:23:50,360 --> 00:23:53,030 в веб-сайт буде вид з них неоптимальним 528 00:23:53,030 --> 00:23:56,220 якщо браузер покласти, що Значення всередині URL. 529 00:23:56,220 --> 00:23:57,680 Чому? 530 00:23:57,680 --> 00:24:00,059 Ви бачите його, що не чинить здається, така велика справа, 531 00:24:00,059 --> 00:24:03,350 але швидше за все, ви досить часто ходити далеко від комп'ютера або використання комп'ютера 532 00:24:03,350 --> 00:24:05,310 лабораторії, і тому хто- в іншому місці або навіть сусід по кімнаті 533 00:24:05,310 --> 00:24:08,220 могли легко йти вгору і побачити що приватна інформація. 534 00:24:08,220 --> 00:24:10,220 При відправці електронною поштою через Інтернет, ви, ймовірно, 535 00:24:10,220 --> 00:24:12,350 не хочу, що закінчення даних до в URL, а також. 536 00:24:12,350 --> 00:24:15,266 І так є будь-яка кількість причин Тому ми, можливо, захочете поставити його тут. 537 00:24:15,266 --> 00:24:18,610 І photos-- право, я не можу навіть цілком уявити собі, як ви б графіки, 538 00:24:18,610 --> 00:24:21,480 як JPEG, і покласти його в URL. 539 00:24:21,480 --> 00:24:22,330 Ви можете зробити це. 540 00:24:22,330 --> 00:24:25,840 Там в дорозі кодування його, але це просто не проста, як, що. 541 00:24:25,840 --> 00:24:29,030 >> Так зареєструйтесь 0 насправді дуже захват. 542 00:24:29,030 --> 00:24:31,610 Все це говорить буквально це. 543 00:24:31,610 --> 00:24:35,910 Вона виводить в деяких HTML теги наступне. 544 00:24:35,910 --> 00:24:38,640 У мене є PHP тег тут вкладений в заздалегідь тега. 545 00:24:38,640 --> 00:24:42,300 "Pre" просто означає, попередньо відформатований текст, моно-рознесені, як друкарська машинка. 546 00:24:42,300 --> 00:24:44,836 >> Printr є друк рекурсивна функція. 547 00:24:44,836 --> 00:24:46,710 А тут ще цей Цікаво те тут. 548 00:24:46,710 --> 00:24:48,835 І ми повернемося до цього бо є інші, 549 00:24:48,835 --> 00:24:51,140 але знак долара підкреслення Повідомлення здається, 550 00:24:51,140 --> 00:24:56,110 змінна в PHP, в якому що- Ви посилаєте від браузера до сервера 551 00:24:56,110 --> 00:24:58,040 отримує зберігається для вас. 552 00:24:58,040 --> 00:25:00,930 І ми побачимо, як дістатися до що інформація незабаром. 553 00:25:00,930 --> 00:25:04,000 >> Але спочатку, давайте повернемося до трохи інший приклад. 554 00:25:04,000 --> 00:25:09,050 Увійшовши в register-- або скоріше, froshims1.php, 555 00:25:09,050 --> 00:25:10,470 який виглядає трохи по-іншому. 556 00:25:10,470 --> 00:25:12,670 Я взяв трохи більше зусилля з форматуванням, 557 00:25:12,670 --> 00:25:14,370 хоча це все ще досить потворний. 558 00:25:14,370 --> 00:25:16,990 Але я збираюся йти вперед і введіть в "Давида" зараз. 559 00:25:16,990 --> 00:25:17,850 Чоловічий. 560 00:25:17,850 --> 00:25:19,360 Ми перевіримо "капітан" цього разу. 561 00:25:19,360 --> 00:25:20,660 Ми зробимо Метьюз. 562 00:25:20,660 --> 00:25:22,430 І зареєструйтесь. 563 00:25:22,430 --> 00:25:24,110 >> І на цей раз він каже, хм, не зовсім. 564 00:25:24,110 --> 00:25:26,180 Гаразд, так що Зареєструємо 1? 565 00:25:26,180 --> 00:25:30,509 Дозвольте мені йти в відкритому реєстрі 1 і-- гм. 566 00:25:30,509 --> 00:25:32,300 Гаразд, так що це Цікаво, а це 567 00:25:32,300 --> 00:25:34,880 є сходинкою тепер до цікавіші програми. 568 00:25:34,880 --> 00:25:38,970 >> Зверніть увагу на верхню цього файлу є PHP тега, а також деякі коментарі. 569 00:25:38,970 --> 00:25:42,590 І це, на даний момент, відволікання так що давайте просто позбутися від цих коментарів 570 00:25:42,590 --> 00:25:47,070 так само, як вони в С. І я стверджую, з цією шматок коду з коментарем 571 00:25:47,070 --> 00:25:49,280 що цей код перевірки подання. 572 00:25:49,280 --> 00:25:51,690 >> Ну, виходить, що змінні, такі як знак долара 573 00:25:51,690 --> 00:25:53,739 підкреслюють пост є називається супер глобальні. 574 00:25:53,739 --> 00:25:55,530 Вони як вони спеціальні глобальні змінні 575 00:25:55,530 --> 00:25:58,840 що тільки всенаправленний даний доступні у вашій програмі. 576 00:25:58,840 --> 00:26:03,870 І ви можете використовувати квадратні позначення кронштейна в якості індексу в їх не використовуючи цифри 577 00:26:03,870 --> 00:26:07,460 як 0, 1, 2, 3, а реальні слова. 578 00:26:07,460 --> 00:26:12,100 >> Таким чином, ви можете думати про знак долара підкреслюють пост як свого роду хеш-таблиці 579 00:26:12,100 --> 00:26:15,920 що ви могли б пройти ключ в, пошуку по Слово в-в квадратних дужках, 580 00:26:15,920 --> 00:26:19,370 і він збирається дати вам назад значення, що користувач дійсно передбачено. 581 00:26:19,370 --> 00:26:21,210 PHP має функцію називається порожнім, що просто 582 00:26:21,210 --> 00:26:23,720 каже так чи ні, це змінна порожня чи ні. 583 00:26:23,720 --> 00:26:27,250 У нас є ці подвійні бари, який просто означає, або, як в C. 584 00:26:27,250 --> 00:26:31,740 >> Таким чином, по суті, ця лінія 4 є просто кажучи, якщо користувач не дати ім'я 585 00:26:31,740 --> 00:26:36,540 або не дати підлогу або зробив не дати гуртожиток, йти вперед і перенаправити його 586 00:26:36,540 --> 00:26:38,184 або її допомогою цієї лінії тут. 587 00:26:38,184 --> 00:26:40,600 Так що це трохи загадковим, але це просто означає, буквально 588 00:26:40,600 --> 00:26:43,330 повернутися до цього місця, так що плоскодонки користувачеві 589 00:26:43,330 --> 00:26:45,420 туди, звідки він або вона родом. 590 00:26:45,420 --> 00:26:47,880 Але це трохи несмачний в тому, що я жорстко його. 591 00:26:47,880 --> 00:26:52,150 >> Але що, якщо це, якщо умова не оцінює до істини? 592 00:26:52,150 --> 00:26:55,790 Що робити, якщо користувач дійсно давали мені його або її ім'я та гуртожитки і підлогу? 593 00:26:55,790 --> 00:26:58,540 Це, якщо умова не збирається оцінити, вірно, 594 00:26:58,540 --> 00:27:00,650 так що я не потрапив на виїзд в рядку 7. 595 00:27:00,650 --> 00:27:01,680 Так що ж відбувається? 596 00:27:01,680 --> 00:27:03,880 І це те, що Цікаво про PHP. 597 00:27:03,880 --> 00:27:07,470 >> Ви можете зайти в і з режиму PHP, так сказати. 598 00:27:07,470 --> 00:27:10,985 Якщо ви хочете якийсь код, щоб виконати, Ви можете відкривати і закривати PHP тег 599 00:27:10,985 --> 00:27:13,010 і поставити код там, як я зробив тут. 600 00:27:13,010 --> 00:27:16,810 Як тільки ви закриєте PHP тег, сервер 601 00:27:16,810 --> 00:27:19,407 просто буде випльовувати що ви поклали там. 602 00:27:19,407 --> 00:27:21,740 І справді, це було частиною Оригінальний дизайн PHP, 603 00:27:21,740 --> 00:27:25,280 для краще гірше, було це змішання коду та розмітки 604 00:27:25,280 --> 00:27:25,920 мову. 605 00:27:25,920 --> 00:27:28,670 І ми побачимо, що це дуже швидко лягає в калюжу. 606 00:27:28,670 --> 00:27:31,280 І тому ми будемо робити краще, ніж це, в кінцевому рахунку, але просто 607 00:27:31,280 --> 00:27:35,620 зверніть увагу на легкість, з якою я перебуваю насправді в змозі виконати деяку логіку. 608 00:27:35,620 --> 00:27:37,440 >> Але все-таки трохи в захват. 609 00:27:37,440 --> 00:27:41,210 Давайте відкрити версію два з Фрош чати, які 610 00:27:41,210 --> 00:27:44,270 мабуть, представляє register2.php. 611 00:27:44,270 --> 00:27:47,600 Так цей файл насправді відбувається дивитися майже те ж саме. 612 00:27:47,600 --> 00:27:50,780 Я збираюся піти в Фрош чати 2. 613 00:27:50,780 --> 00:27:53,050 Але в Фрош чати 2, давайте подивимося, що станеться. 614 00:27:53,050 --> 00:27:58,110 >> Девід, встановіть перемикач, як це називається; Метьюз, не капітан. 615 00:27:58,110 --> 00:27:59,230 Реєстрація. 616 00:27:59,230 --> 00:28:00,130 Ви зареєстровані. 617 00:28:00,130 --> 00:28:00,700 Не зовсім так. 618 00:28:00,700 --> 00:28:02,574 Ой, зачекайте, ми просто зробили що приклад, чи не так? 619 00:28:02,574 --> 00:28:04,520 Гаразд, стояти. 620 00:28:04,520 --> 00:28:06,602 Ми зробимо все три. 621 00:28:06,602 --> 00:28:08,560 Очевидно щось про станеться з Gmail. 622 00:28:08,560 --> 00:28:09,600 Ми доберемося туди. 623 00:28:09,600 --> 00:28:11,900 >> Так Фрош миттєві 3 виглядає наступним чином. 624 00:28:11,900 --> 00:28:13,050 Нічим не відрізняється. 625 00:28:13,050 --> 00:28:19,850 Але коли я роблю Девід, чоловік, Метьюз, і зареєструйтесь, цей третій і остаточний варіант 626 00:28:19,850 --> 00:28:22,230 претензії, досить просто, вам зареєстровано дійсно. 627 00:28:22,230 --> 00:28:23,560 Це свого роду несуттєві. 628 00:28:23,560 --> 00:28:25,600 Але я стверджую, з цим Третій і останній варіант 629 00:28:25,600 --> 00:28:30,610 Я зараз відтворені точно, що мій сусід по кімнаті, і я побудував для Фрош чати 630 00:28:30,610 --> 00:28:31,731 Програма років тому. 631 00:28:31,731 --> 00:28:32,480 І це було просто. 632 00:28:32,480 --> 00:28:34,330 Там не було ніякої бази даних, немає Excel таблицю. 633 00:28:34,330 --> 00:28:36,450 Але що ще більш важливо, немає більше паперу 634 00:28:36,450 --> 00:28:42,520 тому, що ми зробили з цією програмою був насправді електронною поштою Проктор, який 635 00:28:42,520 --> 00:28:44,530 був раніше отримували ці речі через формах. 636 00:28:44,530 --> 00:28:48,890 >> І, мабуть, ми запрограмовані це в таким чином, що, коли хтось реєструється, 637 00:28:48,890 --> 00:28:52,470 Листи рахунків Джона Гарварда proctor-- або сам в цьому випадку, 638 00:28:52,470 --> 00:28:55,960 Джон Harvard-- наступним text-- "Ця людина щойно зареєструвався." 639 00:28:55,960 --> 00:29:00,560 Ім'я Давид, капітан пусто; пол, чоловік; і гуртожитки, Метьюз. 640 00:29:00,560 --> 00:29:01,560 >> Так що там сталося? 641 00:29:01,560 --> 00:29:05,360 Ну, файл в питанні тут мабуть, register3.php. 642 00:29:05,360 --> 00:29:09,080 І якщо я відкриваю це, ви побачите, як сила такого коду 643 00:29:09,080 --> 00:29:12,380 а також, відверто кажучи, відсутність безпеки системи, як електронна пошта. 644 00:29:12,380 --> 00:29:16,290 Я тільки ефективно прикинувся бути Джон Гарвард наступним чином. 645 00:29:16,290 --> 00:29:20,920 >> У мене є відкритий PHP тег верх, який просто говорить тут приходить деяке PHP код. 646 00:29:20,920 --> 00:29:23,155 Тут, внизу, виявляється, є бібліотеки в PHP. 647 00:29:23,155 --> 00:29:26,410 Ви просто не потрібно включення файлів заголовків як багато. 648 00:29:26,410 --> 00:29:28,900 Ви отримуєте більше з кухонна раковина, так сказати. 649 00:29:28,900 --> 00:29:31,820 >> Але на цей раз в рядку 4, я хочу спеціальної бібліотеки під назвою 650 00:29:31,820 --> 00:29:36,087 PHP поштовик, який щось вас можна встановити безкоштовно в багатьох системах. 651 00:29:36,087 --> 00:29:37,920 Тут, внизу, я перевірки уявлення тільки 652 00:29:37,920 --> 00:29:40,540 шляхом перевірки було користувачеві дати мені ім'я, стать, та гуртожитки. 653 00:29:40,540 --> 00:29:44,130 І якщо так, йти вперед і екземпляр поштової програми. 654 00:29:44,130 --> 00:29:47,020 >> Ви можете думати про це як про рядок коду, яка просто виділяє. 655 00:29:47,020 --> 00:29:48,950 Це як Танос, але це трохи сексуальніше 656 00:29:48,950 --> 00:29:51,790 в тому, що ви вже не просто Танос і деякі загальні число. 657 00:29:51,790 --> 00:29:55,030 Ви говорите, дайте мені один з них, дати мені нову один з них. 658 00:29:55,030 --> 00:29:57,950 >> І якщо ви програмували в Java або C ++ або інших мовах, 659 00:29:57,950 --> 00:29:59,130 Ви, можливо, бачили це. 660 00:29:59,130 --> 00:30:01,840 Але за винятком цього, якщо незнайомі, ця лінія 661 00:30:01,840 --> 00:30:05,410 ставить у знак долара пошті спеціальна структура називається 662 00:30:05,410 --> 00:30:08,731 Об'єкт, має вбудовану пошта функціональність. 663 00:30:08,731 --> 00:30:10,355 І справді, помітити і схожий синтаксис. 664 00:30:10,355 --> 00:30:11,900 >> Це не є покажчиком, як такі. 665 00:30:11,900 --> 00:30:13,990 PHP просто використовує той же синтаксис. 666 00:30:13,990 --> 00:30:17,660 Ця лінія каже використання SMTP-- Simple Mail Transfer 667 00:30:17,660 --> 00:30:20,900 Протокол, який є просто Протокол, використовуваний для відправки пошти. 668 00:30:20,900 --> 00:30:24,240 Це вказавши використання SMTP-сервер Гарварда, який 669 00:30:24,240 --> 00:30:25,830 десь тут, на території кампуса. 670 00:30:25,830 --> 00:30:28,480 >> Це говорить, що TCP Номер порту, щоб говорити, 671 00:30:28,480 --> 00:30:31,650 і я просто зрозумів, що шляхом вдаючись до допомоги або звернутися в службу підтримки. 672 00:30:31,650 --> 00:30:34,640 А потім через Гарвардського використовує деякі Система безпеки на поштовому server-- 673 00:30:34,640 --> 00:30:37,060 щонайменше, для шифрування трафік між вами і ним, 674 00:30:37,060 --> 00:30:41,380 хоча хтось може відправити it-- Я збираюся включити протокол TLS 675 00:30:41,380 --> 00:30:42,710 для підтримки цього безпечним. 676 00:30:42,710 --> 00:30:44,730 >> Але це де речі отримати трохи страшно. 677 00:30:44,730 --> 00:30:47,970 Я можу просто довільно сказати, що я jharvard, 678 00:30:47,970 --> 00:30:51,930 і я можу просто довільно напишіть собі тут. 679 00:30:51,930 --> 00:30:55,650 І тоді я можу вказати тема з цієї лінії тут. 680 00:30:55,650 --> 00:30:58,460 >> І це тільки виглядає некрасиво, але це просто купа зчеплення. 681 00:30:58,460 --> 00:31:04,480 Виявляється PHP має супер корисний символ, як деяких мовах, оператор точка, 682 00:31:04,480 --> 00:31:07,340 які просто буквально об'єднує Рядок після рядка після рядка, 683 00:31:07,340 --> 00:31:09,810 і ви не повинні Танос або фігури із загальної довжини рядка. 684 00:31:09,810 --> 00:31:10,820 Ви просто робите це. 685 00:31:10,820 --> 00:31:15,220 І справді, бо я конкатенації у всіх цих речах з цих точок, 686 00:31:15,220 --> 00:31:18,330 ось чому лист, який я відправлено подивився, як це було. 687 00:31:18,330 --> 00:31:20,610 >> А потім, нарешті, тут, я посилаю пошту. 688 00:31:20,610 --> 00:31:22,580 Так що, якщо це не так, Я просто помру, 689 00:31:22,580 --> 00:31:25,680 яка є функцією, яка просто друкує на екрані деякі повідомлення про помилку. 690 00:31:25,680 --> 00:31:29,170 Але це, по суті, виклику функції відправки. 691 00:31:29,170 --> 00:31:31,780 В іншому випадку, якщо все це не допомагає, він перенаправляє мене сюди. 692 00:31:31,780 --> 00:31:34,050 >> І чому я бачу, що Я зареєстрований насправді? 693 00:31:34,050 --> 00:31:36,110 Ну, це сталося прямо тут. 694 00:31:36,110 --> 00:31:38,170 Так я про це не для декілька причин. 695 00:31:38,170 --> 00:31:41,542 >> Один з них, це точно, як якщо ви будуєте деякі веб-сайт для остаточного проекту 696 00:31:41,542 --> 00:31:44,000 або для реального світу, це як ви посилаєте електронну пошту нагадування 697 00:31:44,000 --> 00:31:45,924 для Ваших клієнтів або ваших передплатників. 698 00:31:45,924 --> 00:31:47,590 Це, як ви відправити нагадування пароля. 699 00:31:47,590 --> 00:31:50,760 Це, як ви відправити людей повідомлення що у них є новий Facebook 700 00:31:50,760 --> 00:31:52,990 Повідомлення очікуванні або щось подібне. 701 00:31:52,990 --> 00:31:55,010 >> Але це також говорить Справа в тому, що це міг 702 00:31:55,010 --> 00:31:58,160 були дуже добре від Девін або будь-хто інший. 703 00:31:58,160 --> 00:32:00,567 І я говорю це вид з посмішкою, бо я 704 00:32:00,567 --> 00:32:03,400 зовсім впевнений, що відбувається через деякі з ваших умів в цій точці. 705 00:32:03,400 --> 00:32:11,910 Але це один з тих, роби, як я кажуть, не як я роблю подібні речі, 706 00:32:11,910 --> 00:32:14,480 бо це тривіально підробити електронну пошту, як це. 707 00:32:14,480 --> 00:32:16,480 Але, як ви, можливо, бачили або читати в Crimson, 708 00:32:16,480 --> 00:32:18,271 останнім часом він також досить тривіально для людей 709 00:32:18,271 --> 00:32:20,050 простежити їх назад в якийсь походження. 710 00:32:20,050 --> 00:32:23,790 І прошу мене якийсь час, можливо, на CS50 обід, як я вперше 711 00:32:23,790 --> 00:32:27,080 познайомилися дуже близько майже в ред борту багатьох років 712 00:32:27,080 --> 00:32:30,890 тому, коли я виявив, як інтернет працював. 713 00:32:30,890 --> 00:32:36,940 Таким чином, в будь case-- трохи після ред дошка зробив. 714 00:32:36,940 --> 00:32:42,300 >> Таким чином, в будь-якому випадку, існує ціла купа супер глобальні, 715 00:32:42,300 --> 00:32:45,960 як вони називаються тут, один з яких ми saw-- знак долара підкреслення пост. 716 00:32:45,960 --> 00:32:49,530 Там в аналог називається Get, який є, де речі з URL 717 00:32:49,530 --> 00:32:50,690 закінчується збирається. 718 00:32:50,690 --> 00:32:54,051 І є ціла купа інших, too-- сесія і сервер і печиво. 719 00:32:54,051 --> 00:32:55,800 Ми повернемося до печива в інший раз, 720 00:32:55,800 --> 00:33:01,340 але сесія круто не тому, що прямо now-- аж до now-- 721 00:33:01,340 --> 00:33:06,350 все, що ми зробили за допомогою веб-браузера це свого роду обличчям без громадянства, якщо можна так висловитися. 722 00:33:06,350 --> 00:33:10,060 Я можу натисніть навколо, доступ файли на сервері, то 723 00:33:10,060 --> 00:33:13,500 відбувається на екрані, але то з'єднання закривається. 724 00:33:13,500 --> 00:33:17,450 Internet Explorer або Firefox значок перестане обертатися 725 00:33:17,450 --> 00:33:20,340 і ви бачите тільки те, що що веб-сторінка містить. 726 00:33:20,340 --> 00:33:23,530 >> Так HTTP є особою без громадянства в тому, що як тільки він встановлює з'єднання, 727 00:33:23,530 --> 00:33:25,050 отримує деякі дані, от і все. 728 00:33:25,050 --> 00:33:29,940 Немає більше зв'язок, на відміну від Skype, на відміну від Facetime, на відміну від Gchat, які 729 00:33:29,940 --> 00:33:32,180 підтримує постійний Підключення до сервера. 730 00:33:32,180 --> 00:33:34,650 Веб принципово відключений, хоча ми 731 00:33:34,650 --> 00:33:36,630 см до тих пір, як ми можемо моделювати речі 732 00:33:36,630 --> 00:33:39,300 як Facebook чат і Gchat, які підтримують illusion-- 733 00:33:39,300 --> 00:33:41,680 або насправді підтримки постійне з'єднання з допомогою 734 00:33:41,680 --> 00:33:43,270 сучасніші технології. 735 00:33:43,270 --> 00:33:49,000 >> Але якщо я йду в, скажімо, counter.php, це ще один простий приклад, 736 00:33:49,000 --> 00:33:52,700 як ми побачимо, що в даний час вважає, Я відвідав сайт нульовий час. 737 00:33:52,700 --> 00:33:56,790 Але якщо я просто перезавантажте сторінку, це якось знає, що я був тут раніше. 738 00:33:56,790 --> 00:33:58,840 Якщо я перезавантажити знову, його знає, що я був тут раніше. 739 00:33:58,840 --> 00:34:01,100 І знову і знову, і знову, і знову. 740 00:34:01,100 --> 00:34:03,610 >> Таким чином, є деякі плюс-plussing відбувається, але сповіщення 741 00:34:03,610 --> 00:34:07,090 дрібниця обертається дуже короткочасно до верхньої, а потім відключає, 742 00:34:07,090 --> 00:34:11,179 так що це не так, як я є постійна Підключення до мого приладу. 743 00:34:11,179 --> 00:34:16,929 Ну, якщо я йду в counter.php, зверніть увагу, як це просто. 744 00:34:16,929 --> 00:34:19,080 Я спочатку викликати цей спеціальний функція, яку ми будемо найближчим часом 745 00:34:19,080 --> 00:34:21,513 почати приймати як належне називається початку сеансу. 746 00:34:21,513 --> 00:34:22,179 Почніть сеанс. 747 00:34:22,179 --> 00:34:25,095 >> І сесія відтепер це просто буде відро, як робити покупки 748 00:34:25,095 --> 00:34:28,120 Кошик, в якій ви можете помістити значення і вид довіряти в якості програміста 749 00:34:28,120 --> 00:34:31,590 що вони збираються тут, коли що користувач приходить back-- другий 750 00:34:31,590 --> 00:34:35,670 пізніше, через годину, навіть через рік, поки він чи вона не ясно 751 00:34:35,670 --> 00:34:37,602 їх печиво, як ми зрештою подивитися. 752 00:34:37,602 --> 00:34:39,310 А тепер я просто якщо умова тут. 753 00:34:39,310 --> 00:34:44,679 Так що, якщо в наступному розділі, називається лічильник, встановлюється всередині 754 00:34:44,679 --> 00:34:49,210 цього супер global-- цей хеш стіл, якщо ви will-- званий сеанс, 755 00:34:49,210 --> 00:34:53,350 потім йти вперед і захопити Значення з session-- думають 756 00:34:53,350 --> 00:34:55,250 це як-магазини cart-- і зберегти його 757 00:34:55,250 --> 00:34:57,680 в тимчасовій змінної називається лічильник. 758 00:34:57,680 --> 00:35:02,240 >> В іншому випадку, якщо, що значення лічильника було не встановлений в так званій кошику, 759 00:35:02,240 --> 00:35:04,430 просто инициализировать його в 0. 760 00:35:04,430 --> 00:35:09,830 Нарешті, тут, йти і покласти назад в візках або сесії 761 00:35:09,830 --> 00:35:13,000 значення лічильника 1. 762 00:35:13,000 --> 00:35:16,730 Ось і виходить, що це спеціальний контейнер here-- 763 00:35:16,730 --> 00:35:20,355 який, знову ж таки, є одним з них пов'язаний масиви, масив, який можна індексувати 764 00:35:20,355 --> 00:35:25,010 в словах, а не numbers-- зберігається навіть після того, як користувач йде. 765 00:35:25,010 --> 00:35:26,510 Знову ж, я повернуся на сторінку зараз. 766 00:35:26,510 --> 00:35:28,400 Це був хвилину або близько того. 767 00:35:28,400 --> 00:35:31,300 Але він пам'ятає, що у мене є був тут 19 разів. 768 00:35:31,300 --> 00:35:32,740 Це мій 20-й візит. 769 00:35:32,740 --> 00:35:36,560 >> І так це буде ключем до реалізації будь-якого веб-сайту, що пам'ятає 770 00:35:36,560 --> 00:35:40,640 що ви увійшли в систему, що ви поклали щось буквальне в кошику 771 00:35:40,640 --> 00:35:43,902 купити або що у вас є деякі Кількість повідомлень в очікуванні. 772 00:35:43,902 --> 00:35:45,610 Будь-коли ви хочете запам'ятовувати інформацію, 773 00:35:45,610 --> 00:35:48,130 ми побачимо, що PHP, як кілька інших мов, 774 00:35:48,130 --> 00:35:53,640 дає нам цієї ілюзії стані хоча, як ви побачите в PSET 6, 775 00:35:53,640 --> 00:35:57,642 як ви робите HTTP запити від клієнта до сервера, от і все. 776 00:35:57,642 --> 00:35:59,850 Як тільки ви отримаєте назад, що відповідь, що немає нічого більш 777 00:35:59,850 --> 00:36:01,790 повертаючись з сервера за замовчуванням. 778 00:36:01,790 --> 00:36:03,820 Але ми побачимо, як обійти це. 779 00:36:03,820 --> 00:36:07,430 >> Ну, давайте спробуємо очистити це небагато. 780 00:36:07,430 --> 00:36:09,470 Ми бачили кілька різні приклади там. 781 00:36:09,470 --> 00:36:12,250 Так, і, як в сторону, для тих, хто знайомий або незнайомий, 782 00:36:12,250 --> 00:36:14,230 Причина того, що Приклад Фрош чати пішов 783 00:36:14,230 --> 00:36:18,060 від пошуку дійсно некрасиво slightly-- добре, 784 00:36:18,060 --> 00:36:23,160 ще ugly-- трохи менш потворним, хоча як і раніше потворно 785 00:36:23,160 --> 00:36:25,230 бо якщо ми подивимося на вихідний код тут, 786 00:36:25,230 --> 00:36:28,240 виходить, що в мене є це на самому початку файлу. 787 00:36:28,240 --> 00:36:32,570 >> Виявляється, що завантажувач є одним з багатьох вільно доступні бібліотеки там 788 00:36:32,570 --> 00:36:37,140 що існують не для мов програмування завжди, але для CSS або JavaScript 789 00:36:37,140 --> 00:36:39,190 або HTML або будь-яку кількість мов. 790 00:36:39,190 --> 00:36:42,160 >> І ці люди here-- спочатку вийшов 791 00:36:42,160 --> 00:36:44,730 з Twitter-- просто ціла купа стилів. 792 00:36:44,730 --> 00:36:47,360 Це великий файл тут, що хтось написав, 793 00:36:47,360 --> 00:36:51,020 або у когось писав, що з плином часу визначає кольору і форматування 794 00:36:51,020 --> 00:36:53,740 і ще багато чого, так що я можу вид запозичувати їх синтаксис 795 00:36:53,740 --> 00:36:56,157 і не мають з'ясувати, як викласти свою форму. 796 00:36:56,157 --> 00:36:57,990 Це також мінімізований так що комп'ютер може 797 00:36:57,990 --> 00:37:00,560 зрозуміти його, але не обов'язково чоловік. 798 00:37:00,560 --> 00:37:03,050 Так ось, чому стилізація там змінилося. 799 00:37:03,050 --> 00:37:05,450 >> Але давайте тепер робити краще з точки зору дизайну, 800 00:37:05,450 --> 00:37:07,490 бо якщо ми залишимося вниз ця дорога надто довго, 801 00:37:07,490 --> 00:37:11,290 наш код збирається заплутатися і брудніше. 802 00:37:11,290 --> 00:37:13,040 Так давайте зосередимося на цих прикладах тут. 803 00:37:13,040 --> 00:37:15,090 Останній на сьогоднішній день. 804 00:37:15,090 --> 00:37:18,720 >> Так ось це супер просто Версія 1.0 сайті CS50 в. 805 00:37:18,720 --> 00:37:21,250 Вона має тільки посилання на лекції і план, 806 00:37:21,250 --> 00:37:25,490 і він використовує це невпорядкований список tag-- тег UL, який ми використовували в минулий раз. 807 00:37:25,490 --> 00:37:28,800 І якщо справді, якщо я відкрити View Page Source, 808 00:37:28,800 --> 00:37:31,710 Ви побачите, що це дійсно, дуже простий HTML. 809 00:37:31,710 --> 00:37:35,460 І справді, навіть при тому, що це PHP-файл під капотом, 810 00:37:35,460 --> 00:37:38,620 вона як і раніше просто плювок тільки HTML для тепер. 811 00:37:38,620 --> 00:37:41,312 >> Так що, якщо я натискаю на лекціях, ми бачимо, це відбулося. 812 00:37:41,312 --> 00:37:43,020 І якщо я натискаю на тиждень нулю, ми бачимо це. 813 00:37:43,020 --> 00:37:44,920 І якщо я натискаю на Середа, ми бачимо це. 814 00:37:44,920 --> 00:37:47,900 І це, мабуть був PDF зі слайдів з того дня. 815 00:37:47,900 --> 00:37:52,020 Все, що я зробив це посилання з якір тег до цього URL тут. 816 00:37:52,020 --> 00:37:55,400 >> Так що це тільки сказати, що це досить Проста версія сайту CS50 в. 817 00:37:55,400 --> 00:37:56,790 Давайте подивимося, як він реалізований. 818 00:37:56,790 --> 00:38:01,240 Якщо я йду в каталог mvc0, ми побачимо декілька файлів. 819 00:38:01,240 --> 00:38:03,250 Одним з них є README, так що якщо деякі це занадто швидко, 820 00:38:03,250 --> 00:38:05,166 Ви можете просто ткнути навколо спокійніші пізніше. 821 00:38:05,166 --> 00:38:07,930 І зверніть увагу на ось файл index.php. 822 00:38:07,930 --> 00:38:09,960 Виходить, що якщо Ви самі, людина, 823 00:38:09,960 --> 00:38:14,460 й вказати остаточну назву в URL, веб-сервер, як правило, 824 00:38:14,460 --> 00:38:17,010 виводить деяку ім'я за замовчуванням для вас. 825 00:38:17,010 --> 00:38:20,060 Індекс точка щось як правило, за замовчуванням. 826 00:38:20,060 --> 00:38:23,010 >> Так ось чому хвилину назад коли я відвідав цей URL тут, 827 00:38:23,010 --> 00:38:26,750 не ім'я файлу, файл не розширення, точка в URL. 828 00:38:26,750 --> 00:38:29,710 Це просто знав, якимось чарівним шукати index.php. 829 00:38:29,710 --> 00:38:30,870 Це всього лише умовність. 830 00:38:30,870 --> 00:38:32,360 Можна було б назвати що-небудь. 831 00:38:32,360 --> 00:38:35,110 >> Так що, якщо я зараз вдаватися в index.php, ви побачите 832 00:38:35,110 --> 00:38:37,100 що, indeed-- давайте позбавитися від коментарях 833 00:38:37,100 --> 00:38:39,500 тут, тому що є насправді нічого цікавого не it-- 834 00:38:39,500 --> 00:38:41,579 це просто жорстко HTML. 835 00:38:41,579 --> 00:38:43,370 Так ось послідовним, хоча, з моєї претензії 836 00:38:43,370 --> 00:38:45,230 що ви можете змішувати HTML і PHP. 837 00:38:45,230 --> 00:38:48,060 Там немає фактичного логіку програмування тут. 838 00:38:48,060 --> 00:38:51,030 >> І решту файлів досить багато як нецікаво. 839 00:38:51,030 --> 00:38:56,240 Це просто жорстко тижня один тут, щоб тиждень один м і тижня один ж, 840 00:38:56,240 --> 00:38:57,510 на понеділок і середу. 841 00:38:57,510 --> 00:39:01,890 І потім, якщо я відкриваю нульовою тижня помітите, що він майже ідентичний. 842 00:39:01,890 --> 00:39:03,320 >> І це свого роду ключовою винос. 843 00:39:03,320 --> 00:39:06,180 Зверніть увагу, наскільки надлишковим це. 844 00:39:06,180 --> 00:39:10,710 Ці файли майже не змінить, і все ж я витягнув одну з цих копій / робочих місць пасти 845 00:39:10,710 --> 00:39:13,420 де я взяв один file-- імовірно в тиждень zero-- скопіювали їх 846 00:39:13,420 --> 00:39:16,320 коли тиждень один прийшов, і налагоджені кілька значень. 847 00:39:16,320 --> 00:39:18,590 Ми повинні, ймовірно, бути в стані зробити краще, ніж це. 848 00:39:18,590 --> 00:39:21,800 >> Так що давайте повернемося до MVC і йти в версії одного. 849 00:39:21,800 --> 00:39:24,810 І зверніть увагу, у мене є декілька файлів, тому що 850 00:39:24,810 --> 00:39:29,870 був загальним для всіх цих файлів тільки Момент ago-- якщо я повернуся в версії 0, 851 00:39:29,870 --> 00:39:32,600 давайте повернемося в індексі, і просто postulate-- 852 00:39:32,600 --> 00:39:36,090 як тільки я позбутися comments-- яка частина цій сторінці 853 00:39:36,090 --> 00:39:40,072 Імовірно в кожному з моїх файлів? 854 00:39:40,072 --> 00:39:40,780 Просто подзвоніть його. 855 00:39:40,780 --> 00:39:44,620 Які рядки дублюються ймовірно, у всіх цих сторінок? 856 00:39:44,620 --> 00:39:45,120 Да? 857 00:39:45,120 --> 00:39:46,110 >> СТУДЕНТ: [нерозбірливо]. 858 00:39:46,110 --> 00:39:47,660 >> Девід Дж Маланій: з 1 по 9. 859 00:39:47,660 --> 00:39:48,720 Так, абсолютно. 860 00:39:48,720 --> 00:39:52,080 Від 1 до 9, за винятком, можливо 8 трохи змінюється, бо CS50 861 00:39:52,080 --> 00:39:54,650 стає лекції або нульовий тиждень або щось. 862 00:39:54,650 --> 00:39:55,970 Але практично ідентичні. 863 00:39:55,970 --> 00:39:58,657 Так що всі ці речі просто вид скопійований і вставлений. 864 00:39:58,657 --> 00:40:00,490 І є пара інші лінії я можу думати 865 00:40:00,490 --> 00:40:05,000 того, що, ймовірно, ідентичні по всіх файлів. 866 00:40:05,000 --> 00:40:06,315 >> СТУДЕНТ: 12 і 13. 867 00:40:06,315 --> 00:40:07,190 Девід Дж Маланій: Так. 868 00:40:07,190 --> 00:40:11,220 Звичайно, 12, 13, і 14, ймовірно, тільки тому, що в цікавому матеріалі 869 00:40:11,220 --> 00:40:15,460 що відбувається на лінії 11 і 10, таким чином, здавалося б. 870 00:40:15,460 --> 00:40:18,350 Отже, давайте поглянемо на версії 1, яка намагається змінити на краще це. 871 00:40:18,350 --> 00:40:24,020 У версії 1 цієї MVC example-- ми будемо пояснити, що MVC кошти в moment-- 872 00:40:24,020 --> 00:40:27,420 якщо я йду в індексі, це частково виглядає тепер трохи заплутаним. 873 00:40:27,420 --> 00:40:28,880 Це не так просто, як раніше. 874 00:40:28,880 --> 00:40:30,906 >> Але як тільки ви починаєте Уважно прочитайте його, це 875 00:40:30,906 --> 00:40:32,530 досить просто, що він робить. 876 00:40:32,530 --> 00:40:34,397 Мабуть лінії 1 і лінія 8 замінили 877 00:40:34,397 --> 00:40:37,230 всі речі ви просто identified-- хоча просто для хорошої заходом, 878 00:40:37,230 --> 00:40:41,900 Я залишив ULS є на всякий випадок який- днів не їсти список речей. 879 00:40:41,900 --> 00:40:47,860 І так потрібно, це ніби як фунт включають в С. копій і паст 880 00:40:47,860 --> 00:40:50,470 вміст ефективно прямо тут в цьому файлі. 881 00:40:50,470 --> 00:40:53,650 >> Таким чином, в header.php, як ви може вивести з його назви, 882 00:40:53,650 --> 00:40:55,330 буде заголовок сторінки. 883 00:40:55,330 --> 00:40:57,110 Це свого роду сиротами тут. 884 00:40:57,110 --> 00:41:01,820 Вона має тільки верхню до нього, але немає більше змісту нижче. 885 00:41:01,820 --> 00:41:05,070 >> І якщо я дивлюся на колонтитулі тим, який був інший файл mentioned-- 886 00:41:05,070 --> 00:41:08,830 це один навіть менш цікаво, але знову ж таки, це загальні для всього. 887 00:41:08,830 --> 00:41:10,250 Так що це підвал. 888 00:41:10,250 --> 00:41:11,300 Це заголовок. 889 00:41:11,300 --> 00:41:13,950 Це файл, це зміни, так чому б не 890 00:41:13,950 --> 00:41:18,140 спробувати винести за спільність з цими двома лініями тут? 891 00:41:18,140 --> 00:41:20,090 >> Але ми можемо очистити цей до трохи далі. 892 00:41:20,090 --> 00:41:23,260 Я збираюся йти вперед і відкрити версію два, де 893 00:41:23,260 --> 00:41:27,106 ми побачимо, що є Новий файл, helpers.php. 894 00:41:27,106 --> 00:41:28,610 Ми побачимо, що це в один момент. 895 00:41:28,610 --> 00:41:30,930 Підемо в індексі, як точка входу, як і раніше. 896 00:41:30,930 --> 00:41:35,230 >> А тепер зверніть увагу, що я вимагають helpers.php, що не верхній або нижній колонтитул. 897 00:41:35,230 --> 00:41:41,720 Але помічники ніби як helpers.c і helpers.h від PSET 2 898 00:41:41,720 --> 00:41:46,150 або PSET 3 давно, коли ви насправді нічого шукати і знаходити для цього PSET, 899 00:41:46,150 --> 00:41:50,950 і потрібно було весь код для сортування і пошук в окремому файлі. 900 00:41:50,950 --> 00:41:52,510 Це те, що відбувається тут. 901 00:41:52,510 --> 00:41:54,390 >> А тепер рядок 3 виглядає трохи по-іншому. 902 00:41:54,390 --> 00:41:55,920 І це тільки одна лінія. 903 00:41:55,920 --> 00:41:57,950 Щоб зробити це ще більш ясно, я міг би просто 904 00:41:57,950 --> 00:42:01,820 роблять це, щоб бути стилістично відповідає з усім іншим, що ми зробили. 905 00:42:01,820 --> 00:42:04,130 Але це не зовсім зміни функціональності. 906 00:42:04,130 --> 00:42:05,880 Це просто одна лінія реального коду. 907 00:42:05,880 --> 00:42:09,010 >> Мабуть, є функція десь називається надати заголовок, 908 00:42:09,010 --> 00:42:11,420 і це те, де речі отримати досить потужний. 909 00:42:11,420 --> 00:42:17,040 Зверніть увагу, що всередині його дужок це те, що інша частина синтаксису? 910 00:42:17,040 --> 00:42:19,780 911 00:42:19,780 --> 00:42:23,350 Це, напевно, трохи важко сказати, але помітити there's-- я покладу деякі білі 912 00:42:23,350 --> 00:42:24,300 простір. 913 00:42:24,300 --> 00:42:25,530 Там в квадратні дужки. 914 00:42:25,530 --> 00:42:29,700 >> І квадратні дужки ми побачили трохи назад в контексті асоціативних масивів, 915 00:42:29,700 --> 00:42:31,580 які, знову ж таки, як хеш-таблиці. 916 00:42:31,580 --> 00:42:36,230 І якщо ви думаєте, зараз в С, Порядок аргументів на функцію 917 00:42:36,230 --> 00:42:37,570 повинен завжди бути тим же самим. 918 00:42:37,570 --> 00:42:41,146 Ви повинні пам'ятати, що в замовити is-- X, Y, Z або Z, Y, x-- 919 00:42:41,146 --> 00:42:44,020 і ви повинні завжди забезпечувати їх в тому ж порядку, або шукати їх 920 00:42:44,020 --> 00:42:45,100 якщо ви забули. 921 00:42:45,100 --> 00:42:51,140 >> Але це, здається, розумний спосіб проходження довільний ключове значення 922 00:42:51,140 --> 00:42:55,840 пари якої назва назва аргументу в цьому випадку 923 00:42:55,840 --> 00:42:58,334 і CS50 є його вартість. 924 00:42:58,334 --> 00:43:00,250 А то, що в мене є ці квадратні дужки 925 00:43:00,250 --> 00:43:02,560 тут означає, що я міг Також проходять в чомусь 926 00:43:02,560 --> 00:43:07,550 як в тиждень 1 або 0, або 2, або 3. 927 00:43:07,550 --> 00:43:10,550 Таким чином, ми параметріроваться ця функція таким чином, 928 00:43:10,550 --> 00:43:15,180 що це може зайняти кілька входів, але зараз це просто один. 929 00:43:15,180 --> 00:43:20,060 >> Якщо я зараз вдаватися в helpers.php, помітити, що він робить. 930 00:43:20,060 --> 00:43:22,030 Це трохи новій функціональності, 931 00:43:22,030 --> 00:43:24,190 а зараз просто взяти на віру, що це 932 00:43:24,190 --> 00:43:26,570 синтаксис, з якою ви визначити функцію в PHP. 933 00:43:26,570 --> 00:43:27,840 Ви в буквальному сенсі говорять функцію. 934 00:43:27,840 --> 00:43:30,090 Вам не потрібно вказувати повернення введіть, і це узгоджується 935 00:43:30,090 --> 00:43:33,880 зі змінною деталь раніше де ви насправді не сильно введіть. 936 00:43:33,880 --> 00:43:35,650 >> Це просто вказує що, за умовчанням, це 937 00:43:35,650 --> 00:43:37,460 приймає асоціативний Масив як аргумент. 938 00:43:37,460 --> 00:43:38,210 І знаєте що? 939 00:43:38,210 --> 00:43:41,450 Якщо користувач не проходить один в, припустимо, значення за замовчуванням. 940 00:43:41,450 --> 00:43:44,680 >> Це функція, яка C не має для нас, що приємно, тому що тепер 941 00:43:44,680 --> 00:43:46,430 Дані, навіть якщо вас не дати йому що-небудь, 942 00:43:46,430 --> 00:43:49,300 буде Масив але порожня один. 943 00:43:49,300 --> 00:43:51,860 І як в сторону, екстракту просто робить щось в стилі фанк 944 00:43:51,860 --> 00:43:56,380 де він бере всі ключі від цієї асоціативний масив, всі речі, 945 00:43:56,380 --> 00:43:59,950 ви могли б поставити в квадратні дужки, і створює змінні з них 946 00:43:59,950 --> 00:44:06,270 так що ми в кінцевому підсумку може мати доступ до них в footet.php і header.php. 947 00:44:06,270 --> 00:44:08,950 Це трохи абстрактний, Отже, дозвольте мені вказати на це. 948 00:44:08,950 --> 00:44:12,990 >> В index.php, помітили, що я проходячи в ключової пари значень заголовка 949 00:44:12,990 --> 00:44:14,850 зі значенням CS50. 950 00:44:14,850 --> 00:44:18,660 Якщо я зараз дивлюся на helpers.php, відзначити, що RenderHeader 951 00:44:18,660 --> 00:44:23,870 витягує ці дані, які я передаю в, а потім вимагаючи header.php. 952 00:44:23,870 --> 00:44:27,970 Те, що я зробив, це свого роду бідняка Реалізація тепер в наступному. 953 00:44:27,970 --> 00:44:31,720 >> Якщо я відкриваю header.php, Зауважте, що я не маю більше не важко 954 00:44:31,720 --> 00:44:34,890 кодується слово CS50 в цьому файлі заголовка. 955 00:44:34,890 --> 00:44:39,310 Я поклав це правда жахливо імені функції, HTML спеціальні символи, 956 00:44:39,310 --> 00:44:40,170 в там. 957 00:44:40,170 --> 00:44:41,640 Але зверніть увагу, що я зробив. 958 00:44:41,640 --> 00:44:44,240 У мене відкритий HTML. 959 00:44:44,240 --> 00:44:47,420 Я тоді відкрите голову і відкритий титул. 960 00:44:47,420 --> 00:44:52,380 >> І тоді всередині заголовка відкритою і і закриття, у мене є трохи PHP коду. 961 00:44:52,380 --> 00:44:56,670 І це добре, але синтаксису, який просто означає, луна з. 962 00:44:56,670 --> 00:44:59,840 Це буквально означає this-- відлуння following-- 963 00:44:59,840 --> 00:45:01,910 але це сексуальніше писати. 964 00:45:01,910 --> 00:45:05,000 Відлуння з титул який був прийнятий в. 965 00:45:05,000 --> 00:45:07,560 >> Але що ви думаєте HTML спеціальний символ це все про, 966 00:45:07,560 --> 00:45:10,590 особливо якщо у вас є деякі до HTML досвід? 967 00:45:10,590 --> 00:45:14,050 Які символи можуть бути небезпечно пройти в к сторінці 968 00:45:14,050 --> 00:45:17,980 де ви динамічної генерації Веб-сторінка з кодом, як це? 969 00:45:17,980 --> 00:45:21,370 970 00:45:21,370 --> 00:45:24,650 Пусти мене до цього файлу, версія два, і подивитися, якщо я не можу викликати це. 971 00:45:24,650 --> 00:45:26,210 >> Версія друга це. 972 00:45:26,210 --> 00:45:28,510 І зауважте, все це добре, працює добре. 973 00:45:28,510 --> 00:45:35,280 Але припустимо, що я йду в index.php та Я уточнив, що назва моєї сторінці 974 00:45:35,280 --> 00:45:36,630 НЕ CS50. 975 00:45:36,630 --> 00:45:44,930 Він відкритий кронштейн оповіщення сценарій привіт світ, близько одинарні лапки, 976 00:45:44,930 --> 00:45:49,740 близько дужка, крапка з комою, відкрита дужка, слеш сценарій. 977 00:45:49,740 --> 00:45:51,897 >> Сценарій, як ми будемо зрештою побачити, є тег 978 00:45:51,897 --> 00:45:54,480 що ви можете використовувати для використання іншого Мова програмування називається 979 00:45:54,480 --> 00:45:56,330 JavaScript всередині веб-сторінки. 980 00:45:56,330 --> 00:45:57,960 А тепер зверніть увагу на логіку тут. 981 00:45:57,960 --> 00:45:59,840 Ось ключ називається титул. 982 00:45:59,840 --> 00:46:02,690 Ось це божевільні довге значення зараз. 983 00:46:02,690 --> 00:46:07,840 >> Але якщо я йду в помічники сторінка- або, скоріше, на сторінці заголовок, 984 00:46:07,840 --> 00:46:11,310 Я дзвоню цієї функції на цей титул першої. 985 00:46:11,310 --> 00:46:15,250 Так що, якщо я зараз перезавантажити цю сторінку, я переконатися в цьому, який виглядає смішно, 986 00:46:15,250 --> 00:46:16,110 але це безпечно. 987 00:46:16,110 --> 00:46:17,310 Це просто виглядає нерозумно. 988 00:46:17,310 --> 00:46:20,320 >> Але припустимо, що замість Я забув це. 989 00:46:20,320 --> 00:46:24,660 І запам'ятайте мої слова, відмінне від нуля число з забудеш це зробити 990 00:46:24,660 --> 00:46:27,790 і ви отримаєте деякий працьовиті студент або іншому придумувати 991 00:46:27,790 --> 00:46:31,540 Вам на CS50 ярмарку або анонімно вночі колупатися на своєму сайті 992 00:46:31,540 --> 00:46:35,300 і, по суті впровадження коду без відома до вас на вашому сайті 993 00:46:35,300 --> 00:46:35,800 якось. 994 00:46:35,800 --> 00:46:39,000 >> Тому що, якщо я просто плювати з назви тут і назви 995 00:46:39,000 --> 00:46:44,330 there-- добре, якщо назва буквально Схоже, це і PHP 996 00:46:44,330 --> 00:46:47,660 як мова, яка може плювати з іншого тексту мов, 997 00:46:47,660 --> 00:46:50,650 це буквально збирається замінити цей тег с, 998 00:46:50,650 --> 00:46:53,010 Звичайно, те, що я поклав в іншому місці. 999 00:46:53,010 --> 00:46:57,640 >> Так що, якщо я зараз йдуть сюди і перезавантажте після скасовуючи ті механізми безпеки, 1000 00:46:57,640 --> 00:46:59,982 Тепер у мене є привіт світ тут. 1001 00:46:59,982 --> 00:47:02,690 Тепер це ще не все, що великий з справа, але ви могли б зробити щось 1002 00:47:02,690 --> 00:47:05,119 трохи зліше тут, як є 1003 00:47:05,119 --> 00:47:08,410 другий tags-- як ми побачимо, як тільки ми витрачаємо Чим більше часу в JavaScript-- як місця 1004 00:47:08,410 --> 00:47:14,910 точка HREF отримує, цитата, кінець цитати, HTTP business.com, але протилежно, що 1005 00:47:14,910 --> 00:47:15,950 з іншого день. 1006 00:47:15,950 --> 00:47:20,120 І тепер ви можете викликати павутину сторінка насправді йти відразу 1007 00:47:20,120 --> 00:47:21,190 на цій веб-сторінці тут. 1008 00:47:21,190 --> 00:47:23,000 >> І насправді, я не хочу навіть піти на business.com 1009 00:47:23,000 --> 00:47:24,749 бо я не хочу, знати, що це таке. 1010 00:47:24,749 --> 00:47:28,710 Але це теж викличе код який буде введено в даній сторінці. 1011 00:47:28,710 --> 00:47:32,680 Так що це тільки сказати, що навіть при тому, що ми представляємо супер рано на деяких 1012 00:47:32,680 --> 00:47:36,800 з цих більш складних структур, це все до кінця переконавшись 1013 00:47:36,800 --> 00:47:39,320 що ваш код не скористатися. 1014 00:47:39,320 --> 00:47:40,960 >> Так що тепер третя версія тут. 1015 00:47:40,960 --> 00:47:42,470 Це стає трохи більш незвичайним. 1016 00:47:42,470 --> 00:47:44,875 Я дійсно не like-- анальний сторона мене 1017 00:47:44,875 --> 00:47:47,750 ставало трохи дратує Справа в тому, що я функція називається 1018 00:47:47,750 --> 00:47:51,940 RenderHeader і RenderFooter що були майже ідентичні. 1019 00:47:51,940 --> 00:47:55,400 Так що мені спало на думку, чому не Я параметризації цих функцій 1020 00:47:55,400 --> 00:47:59,180 в тільки одному званої надати, вже займає другий аргумент 1021 00:47:59,180 --> 00:48:04,420 як ім'я матриці, кінцевий в render-- або колонтитули? 1022 00:48:04,420 --> 00:48:07,160 І тоді, можливо, якщо я хочу пройти в деяких пар ключ-значення 1023 00:48:07,160 --> 00:48:10,580 як я можу зробити для назви для заголовок, але не для нижнього колонтитула, 1024 00:48:10,580 --> 00:48:11,800 Я міг би зробити це. 1025 00:48:11,800 --> 00:48:16,510 >> І ось тепер, якщо я йду в helpers.php, це трохи складніше. 1026 00:48:16,510 --> 00:48:19,670 І я буду махати руками на Деталі, але це всього лише одна функція. 1027 00:48:19,670 --> 00:48:21,890 Так що це крок до кращого дизайну. 1028 00:48:21,890 --> 00:48:23,360 >> Ми можемо зробити ще один крок вперед. 1029 00:48:23,360 --> 00:48:28,890 Якщо я йду в мій четвертий версія цього, зверніть увагу зараз 1030 00:48:28,890 --> 00:48:31,320 що я роблю щось ще вид загадковий. 1031 00:48:31,320 --> 00:48:33,230 І я знаю, що це багато, щоб поглинути одразу, 1032 00:48:33,230 --> 00:48:35,080 але ми тільки почасти очищення речі. 1033 00:48:35,080 --> 00:48:38,550 Тепер я ставлю мої помічники файл в папку під назвою 1034 00:48:38,550 --> 00:48:41,190 includes-- просто довільне назвати, де я хочу, щоб покласти речі 1035 00:48:41,190 --> 00:48:44,300 що я хочу, щоб включати: а потім Решта це те ж саме. 1036 00:48:44,300 --> 00:48:47,140 >> Але якщо я дивлюся зараз в Gedit, Зверніть увагу, що я позбувся 1037 00:48:47,140 --> 00:48:51,940 з усіх цих інших файлів і у мене є переїхав їх, наприклад, в тут. 1038 00:48:51,940 --> 00:48:55,110 А потім в шаблонах, У мене це теж тут. 1039 00:48:55,110 --> 00:48:59,292 І так це все тепер до кроку використання набагато краще шаблон проектування. 1040 00:48:59,292 --> 00:49:01,000 І ми дуже швидко збирається відійти 1041 00:49:01,000 --> 00:49:03,870 від функціональності за замовчуванням в PHP, який ми почали тут з, 1042 00:49:03,870 --> 00:49:07,655 де ви просто змішувати PHP, і ваш HTML, і ваш CSS, 1043 00:49:07,655 --> 00:49:09,780 і ви просто виплюнути і ви йдете з приводу вашого шляху. 1044 00:49:09,780 --> 00:49:11,404 Це не збирається бути дуже супроводі. 1045 00:49:11,404 --> 00:49:14,481 Так само, як в C, як ми почали використовувати декілька файлів і кілька функцій 1046 00:49:14,481 --> 00:49:15,730 та факторингові речі це. 1047 00:49:15,730 --> 00:49:16,688 Ми зробимо те ж саме тут. 1048 00:49:16,688 --> 00:49:19,970 І справді, в п'ятий і останній версія тут, я зробив одну річ. 1049 00:49:19,970 --> 00:49:23,710 Ви навіть можете використовувати дві точки, які, знову, тільки на батьківський каталог. 1050 00:49:23,710 --> 00:49:28,260 Щоб бути ще більш свідома безпеку, тому що, якщо я дивлюся на прослуховування 1051 00:49:28,260 --> 00:49:32,450 тут п'ятий і остаточний варіант, повідомлення що у мене є один каталог тут під назвою 1052 00:49:32,450 --> 00:49:35,180 громадськості, а потім на той же рівень, так сказати, 1053 00:49:35,180 --> 00:49:38,490 У мене включає і шаблонів а потім, що текстовий файл ридми. 1054 00:49:38,490 --> 00:49:41,130 >> І причина я структурована це подобається this-- і так багато веб 1055 00:49:41,130 --> 00:49:44,330 Господарі, особливо ті, $ 5 місяць ті або $ 10 на місяць ті, 1056 00:49:44,330 --> 00:49:47,170 якщо ви коли-небудь мав один з них services-- те, що багато з них роблять 1057 00:49:47,170 --> 00:49:50,690 це вони просто чекають, що ви скинути все ваші файли в одну директорію, 1058 00:49:50,690 --> 00:49:53,640 як ми це робили вже з це найперший приклад. 1059 00:49:53,640 --> 00:49:56,740 >> Але як тільки ви починаєте будувати більш складні сайти, які просто зберігають 1060 00:49:56,740 --> 00:50:00,480 Дані ви піклуєтеся про і файли, які ви хвилює, насправді організації речей 1061 00:50:00,480 --> 00:50:05,060 правильно і з більшою безпеки свідомість на увазі може 1062 00:50:05,060 --> 00:50:07,927 ми починаємо захищати проти всіх друзів 1063 00:50:07,927 --> 00:50:10,135 що у вас є в будинку або за межами цього класу, які, 1064 00:50:10,135 --> 00:50:12,510 як тільки ви починаєте робити програми самостійно в Інтернеті, 1065 00:50:12,510 --> 00:50:15,140 збираються почати збір на вас і на них. 1066 00:50:15,140 --> 00:50:17,420 >> І так ми будемо дивитися в кінцевому рахунку, в цій конструкції. 1067 00:50:17,420 --> 00:50:20,010 Це просто картинка що зображує наступне. 1068 00:50:20,010 --> 00:50:22,897 Ми збираємося поставити всі наші програмну логіку в одному або більше файлів, 1069 00:50:22,897 --> 00:50:25,230 і ми збираємося просто почати називаючи ці контролери. 1070 00:50:25,230 --> 00:50:28,022 Це де мізки наші сайти насправді є. 1071 00:50:28,022 --> 00:50:29,730 Тоді ми йдемо до мають вигляд, і вид 1072 00:50:29,730 --> 00:50:32,480 так просто, як просто окремий files-- звані шаблони, часто. 1073 00:50:32,480 --> 00:50:34,410 Вони просто повинні Естетика моїй сторінці, 1074 00:50:34,410 --> 00:50:37,020 то, що я хочу сторінку, щоб подивитися like-- кольору і компонування 1075 00:50:37,020 --> 00:50:38,870 і позиції всі змінні. 1076 00:50:38,870 --> 00:50:41,120 >> А потім цікавішим що ми в кінці кінців дістатися до 1077 00:50:41,120 --> 00:50:45,420 є модель, яка буде просто слово ми ляпаса від інших технологій 1078 00:50:45,420 --> 00:50:47,771 що ми приносимо в картина, як реальних баз даних, 1079 00:50:47,771 --> 00:50:49,520 так що, якщо ви хочете для збереження інформації, 1080 00:50:49,520 --> 00:50:52,140 Ви не просто відправити електронною поштою на ваш супроводжуючий або для себе, 1081 00:50:52,140 --> 00:50:57,350 Ви насправді зберігати його в базі даних використовуючи іншу мову, відомий як SQL. 1082 00:50:57,350 --> 00:51:00,450 І тому ми залишимо тут сьогодні і підібрати з цим в середу 1083 00:51:00,450 --> 00:51:02,990 і ввести баз потім. 1084 00:51:02,990 --> 00:51:06,940 >> [Музика, яка грає] 1085 00:51:06,940 --> 00:54:24,555