DOUG LLOYD: Więc w naszym wideo w składni PHP, Dużo rozmawialiśmy o tym, jak PHP może być stosowana w linii poleceń do uruchamiania programów w sposób, który jesteśmy bardzo znają się od C Ale, jak również wymienione w tym wideo, PHP pierwotnie opracowany wdrożenia programowania stron internetowych, strony internetowe. I tak w tym filmie jesteśmy będziemy rozmawiać o tym, jak korzystać z PHP w kontekście rozwoju sieci. Wiemy już, z nasza wideo w formacie HTML, że strony internetowe są budowane z zestawem znaczników HTML które semantycznie zdefiniować struktura strony internetowej. Ale strony internetowe, które są zbudowany z czystym HTML cierpi na bardzo, bardzo poważne ograniczenie. Oraz w celu zilustrowania tego ograniczenia Rozważmy następujące. Więc teraz chcę zbudować stronę internetową że, gdy użytkownik odwiedza go, to daje mi prąd Czas w Cambridge, Mass., wyświetlając go do najnowszej minutę. Gdybym robił to teraz, Mogę powiedzieć coś takiego. Aktualny czas w Cambridge-- więc mam Tagi HTML, znaczniki głowy, title, Ciało tags-- prąd Czas w Cambridge jest 14:08, drukowanie czasu wojskowej. Co się stanie, jeśli to teraz 14:09, 14:09? Dobrze do tej pory, z HTML, mam wejść i zmienić go na 14:09. A potem minutę później, Muszę zmienić go ponownie. A potem minutę później, Muszę zmienić go ponownie. I jak można sobie wyobrazić, że to chyba najgorsza praca kiedykolwiek. Jesteś webmasterem strony internetowej, i każda minuta, 24 godziny na dobę, trzeba zaktualizować aktualny czas ręcznego otwierania time.html i zmiany tylko, że fragment kodu do powiedzenia Aktualny czas w godzinach i minutach. To chyba nie bardzo dobre wykorzystanie naszych zasobów, zarówno ludzkich, jak i obliczeniowych. Strony internetowe, które są wszystkie HTML są całkowicie statyczna. Tylko w ten sposób można zaktualizować treści, jak właśnie widać, jest ręczne otworzenie źródło pliki, edytować je i zapisywać je. I wtedy, gdy użytkownik odświeża stronę, lub odwiedza stronę po raz pierwszy Czas, dostaną najnowszą zawartość. Ale tylko dlatego, że mamy ręcznie edytować go. Jeśli zaczniemy mieszać trochę PHP tam, nasz kod może uzyskać o wiele bardziej elastyczne. A może mamy sposób na naszych stronach być dynamiczne, lub zaktualizować siebie, bez konieczności nasz biedny wiadomości w poprzednim przykładzie być ręcznie zaktualizować rzeczy. Mogą to zrobić automatycznie. Nie musimy interweniować. Możemy się trochę przespać. Co jest prawdopodobnie dobra rzecz, jeśli robisz dużo programowania WWW. Tak więc w CS50 IDE, możemy uruchomić serwer WWW o nazwie Apache. Jest to bardzo często używane, System open source serwer WWW. Ten system ma Zdolność do interpretacji PHP, która będzie przydatna, jeśli chcesz zrobić żadnego programowania PHP. A w CS50 IDE, mamy polecenie aby to bardzo proste do zrobienia, apache50 rozpocząć. A potem, że ukośnik Ścieżka, slash się, slash reż, że jest po prostu bardzo powszechnym sposobem wskazując, co już podana tutaj Jest to ścieżka do konkretnego Katalog, który ci chcę być korzeń strona lub strona korzeń, lub folder, z którego serwer WWW rozpocznie badanie pliki i służyć je do klientów, na ich wniosek. Więc pop nad do CS50 IDE, po prostu pokazać, bardzo szybkie, jak to działa. Więc tutaj CS50 IDE, jestem w katalog o nazwie Tydzień Zero Dziewięć. I mam two-- mam wykonane polecenie LS tylko powyżej, aby pokazać, że mam dwa katalogi w tutaj, PHP, który jest zestaw plików, które użyłem w składnia wideo PHP, a następnie PHP-web, który jest zestaw plików, które ja chce używać w tym filmie. I chciałbym, aby rozpocząć instancja serwera www z zawartością folderu PHP-web jak pliki są serwowane. Więc co ja mam zrobić? Mam zamiar wpisać apache50 miejsca rozpocząć, przestrzeń PHP, kreska internetowej. To ścieżka do katalogu skąd ja aktualnie jestem. Następnie naciśnij klawisz Enter. To będzie zrobić Trochę rzeczy tutaj. I wtedy to się mówi, Apache został pomyślnie uruchomiony. Twoja strona jest już dostępna at-- i potem jest adres URL witryny. Więc co ja mam zrobić? Idę szybko skopiować ten. I mam zamiar otworzyć up-- i Będę pomniejszyć trochę here-- Mam zamiar otworzyć nowa karta w Chrome. I mam zamiar odwiedzić ten adres URL. Mam zamiar naciśnij Enter. To będzie ładować. A ja pomniejszyć. I widzimy tutaj jest zawartość mojego PHP katalogu stron internetowych. Więc teraz to, co jest w zasadzie dzieje tutaj jest mój przypadek CS50 IDE odbywa się te pliki każdy, kto ich zażąda. I w ciągu Ten film, będziemy rodzaju przyjrzeć się grono tych różne pliki w kontekście. Aby sprawdzić, że Apache Serwer działa, który jest na ogół będzie aby być w przypadku CS50 IDE, ale jeśli to zrobisz, bardziej ogólnie, i rozpocząć budowę własnej sieci serwery, istnieje naprawdę wspólny rodzaj analogowego na, "Hello World", która jest zwykle wykorzystywane do rozwoju PHP internetowej. Które ma mieć plik składający się tylko z tego code-- separatorem PHP zestaw z informacją PHP, nawiasy, średnik pomiędzy. Która jest w zasadzie specjalnego Funkcja PHP, który mówi, jaka wersja PHP używasz. Tak więc w CS50 IDE, mam że plik dostępny tylko aby pokazać, co to będzie wyglądać. Więc patrzę na mojego indeksu z mojej przykład PHP. Moje wystąpienie Apache działa zawartość PHP-Web. I mam tu plik o nazwie info.php. Zamierzam kliknij go pomniejszyć. To jest to, co masz zamiar aby zobaczyć, bardzo dużo. To jest po prostu powiedział mi, że Serwer Apache jest moja praca. I to jest, najwyraźniej, wersja PHP, że biegnę. To jest mój analogowy do "Hello World". Więc wiem rzeczy działają. Tak więc jesteśmy dobrze iść. Możemy przystąpić tutaj. Więc ponownie, że Przykładem razem byliśmy mówisz o naszej biednej webmastera którzy musieli zaktualizować stronę stale. Ta poprawka może być na jak Chciałbym wdrożyć rzeczy tak, że webmaster nie zachować aktualizowania czasu. Byłoby to po prostu rodzaj się automatycznie. Poniższa dół, HTML, to bardzo podobne, z jednym wyjątkiem. Ale tutaj mam trochę PHP na górze. I, oczywiście, nazwał to Funkcja date_default_timezone_set. I nie mówić o wszystkim te funkcje w CS50, ponieważ PHP ma prawdopodobnie dziesiątki tysięcy. To może być trochę w przesada, ale to nie może być. Ma wiele funkcji wbudowanych w. I tak jest to funkcja najwyraźniej ustawia strefę czasową, jak USA / Wschodniej, która jest strefa czasowa, że ​​jestem Aktualnie w tworzeniu tego filmu. Następnie zadzwonić do Funkcja o nazwie, dacie. I, oczywiście, jestem przechowywania HIS z czegoś, co nazywa, czasu. Więc co tu się dzieje? Cóż, w zasadzie to, co jest dzieje się, robię połączenia do jakiegoś serwera, który ma powiedz mi, co obecnie jest czas. A ja konwersji do formatu godzin, minut, sekund. A powód jest stolicą H jest to ma dać mi 24 godziny czasu, a nie 12 Czas godzin, które byłyby małe h. A ja po prostu przechowywania, które w zmiennej o nazwie, czasu. Tak, że druga linia PHP tam, wywołanie funkcji, data, dopiero się niektóre ciąg, który jest da mi datę i czas, i kilka innych informacji. A pierwszym argumentem jest, że jego, jest po prostu ekstrakcji ważną rolę że zależy mi na tym przykładzie, która jest godzina, minuta i sekunda. Więc to jest wszystko, co się dzieje. Więc zapisać, że w zmiennej $ czasie. A następnie w dół u samym dole tam, mają tę skrótem drukowanie aktualnego czasu. Więc jestem po prostu wydrukować co obecny czas jest. Warto więc spojrzeć na to w CS50 IDE i zobaczyć, jak jesteśmy teraz oszczędności, że webmaster wiele kłopotów. W porządku, więc jestem tutaj ponownie z powrotem w głównym katalogu mój przykład Apache. I mam tu plik o nazwie time.php. Mam zamiar po prostu kliknij na ten temat. A ja przewijania w górę, ponieważ mamy powiększony dość daleko. Obecny czas to 14:20:34. Więc robię to godzin, minuty i sekundy. I mogę odświeżyć Strona i dostać nowy czas. --41. Mam zamiar odświeżyć stronę i dostać nowy czas, 44, 46, 47. Tak, ja z pewnością nie jestem zmieniając niczego sobie. Jestem tutaj odświeżania strony. Więc nie mogę być tam edycji. I obiecuję ci, że nie mają żadnych konfederatów którzy edycję pliku w moim imieniu na boku. Jestem po prostu przy użyciu tej funkcji PHP, Czas do wytworzenia czasu mi automatycznie. Tak, że nawet jeśli śpię, i mój serwer jest uruchomiony, użytkownik, który odwiedza, że ​​strona jest nadal dostanie dokładnie aktualny czas. Więc to jest całkiem dobry. Zrobiłem moja strona bardziej dynamiczny z nie za dużo kodu PHP. To było zaledwie dwa wiersze kodu, a następnie trochę oświadczeniu druku. I już mam o wiele bardziej dynamiczna strona niż w tym pierwszym przykładzie widzieliśmy na początku filmu. Tak, pamiętam z filmu o składni PHP że gdy interpreter PHP działa nasz program, ignoruje wszystko to nie jest wewnątrz ograniczników PHP, wypluwając go. W tym przykładzie, co rzecz że został wypluwając była HTML. A to oznacza, że ​​mogą teraz przeplatać HTML i PHP razem. Ponieważ tłumacz będzie tylko ignorować HTML i dosłownie wyjście to. Co jest dobre, prawda? Ponieważ zapewne, na koniec dnia, Chciałbym moją stronę do być wykonane z HTML. Tak, że każda przeglądarka może interpretować to, czy zrozumieć HTML na stronie i uczynić go jako coś, co my może rzeczywiście zrozumieć, jak ludzie. I mogę korzystać tylko z PHP dla części mojej stronie require dynamikę, która wymaga mnie mieć rzeczy, które aktualizują stale. Informacje statyczne może pozostać taka sama. OK, więc to dobrze. Ale dlaczego miałbym to zrobić? Dlaczego miałbym mix HTML i PHP? Może po prostu wydrukować wszystkie HTML przy użyciu funkcji drukowania PHP. Dlaczego nie robi? Pomyśl o tym przez chwilę. Dlaczego, kiedy można po prostu wydrukować out-- I może mieć linie PHP, że po prostu powiedzieć, drukuj tag HTML, głowica drukująca. Dlaczego nie robi? Dlaczego mieszania PHP i HTML? Cóż, jeśli myślisz, o tym za chwilę. PHP, interpreter ma interpretować to, co widzi. I tak to będzie musiał wykonanie linii kodu. Wydrukuj HTML. Wydrukuj tag otwarte głowy. Wydrukuj otwarta tagu tytułu. To będzie musiał wykonać i zinterpretować że każdy etap sposobu. Dlaczego po prostu nie pozwolić interpreter tylko tuszować rzeczy nie rozumieją i zrobić to automatycznie? To uratuje mi dużo czasu mieszać mój HTML i moje PHP razem. A tak, to dlaczego my nie Wystarczy otwarty PHP ogranicznika a następnie po prostu wydrukować całą Zawartość naszej strony jako jeden gigantyczny PHP wywołanie funkcji, wydrukować, a następnie blisko PHP separator i gotowe. Więc dlatego wymieszać je razem. Do tej pory nie widzieliśmy zbyt wiele różnica od ogólnej składni PHP. To było całkiem proste. Mamy już widział znak zapytania, równe. Widzieliśmy kilka nowych wywołań funkcji, ale nic naprawdę fantazyjne dzieje. Miejmy może dokonać rzeczy trochę hodowcy. Co zrobić, jeśli chcemy przekazać informacje różnych plików PHP, więc, że być może użytkownik może przekazać informacje do mnie. I wtedy będę mógł coś zrobić z na innej stronie. Więc PHP obsługuje coś o nazwie Super Globalny Zmienne, co brzmi dość niesamowite. Są naprawdę tylko gigantyczne tablice asocjacyjne które pomogą wdrożyć to Funkcjonalność przemijania informacji między plików PHP, które są istniejące na naszym serwerze. Pierwszy z tych super globalne nazywa $ _GET. I to jest chyba najłatwiejszy do zrozumienia. Co się dzieje z $ _GET? Cóż, w zasadzie, użytkownik jest zamiar wpisać dodatkowe informacje Na koniec adresów URL. I cokolwiek wpisać, przy założeniu, to formatowane w sposób szczególny zwany ciąg kwerendy, która jest po prostu zestaw par wartości kluczowych oddzielone znakami ampersand. Te kluczowe pary wartości będzie przechowywane w $ _GET tablicy asocjacyjnej. A z naszego wideo na Składnia PHP, wiemy, Jak pracować Tablice asocjacyjne już. Więc tutaj jest przykład niektóre PHP, gdzie może jestem ekstrakcji wszystkich par wartości klucza że dostarczonej w adresie URL użytkownika. Więc mam Rozwinąć PHP ogranicznika. Mam pętli foreach. Jestem iteracji całej Super Globalny Array o nazwie $ _GET. I chcę, aby móc odnieść zarówno klucza i wartości. A ja po prostu ich drukowania na każdy jeden na pozornie własny pkt tag tutaj. Jestem drukowania niektóre HTML i interpolację wartości klucza i wartości w tym stwierdzeniu. Warto więc przyjrzeć się, jak to faktycznie działa na naszym IDE. A może to pomoże przedstawiają nieco z tego, co właściwie robi GET. Więc jestem tu z powrotem w moim korzenia internetowej. A ja przybliżyć w sposób trochę pokazać, że mam plik o nazwie, get1.php. Więc kliknij na get1.php. I nie widzę żadnych treści. To dziwne, prawda? Cóż, nie do końca właściwie. Bo nie dostarczamy coś w adresie URL. Zamierzam get1.php, ale nie dostarczają żadnych par wartości klucza jako część mojego łańcucha zapytania. Warto więc dodać ciąg zapytania i zobaczyć, co ten plik może zrobić. Aby rozpocząć ciąg kwerendy można wpisz znak zapytania. Wtedy może powiem name = Doug & rok = 2015. I wtedy naciśnij Enter. Teraz zauważyć, co się dzieje. Nadal jestem w get1.php. Ale teraz w zestawie pary wartość klucza, a ja jestem drukowanie ich na własną rękę paragraph-- nazwa, Doug-- roku 2015. To jest dokładnie to, kod po prostu widziałem na szkiełku przed chwilą. A jeśli chcę być może dodać kolejny Para wartości klucza, i class = CS50. Teraz mam inną wartość klucza Para, która jest wydrukowana kiedy ponownie URL ponownie. Teraz może to nie jest sformatowana strasznie dobrze. Więc ja mam inną wersję get.php. To get2.php. Różnica w tym jeden jest Mam plik CSS, i formatuje rzeczy, trochę bardziej ładnie dla mnie. To nie jest może najbardziej piękne CSS na świecie. Ale to tylko kolejny sposób to zrobić. Więc może nadal uzyskać dostęp do moich zmiennych za pomocą $ _GET. I w tym przypadku, jestem tylko trochę co CSS trochę bardziej fantazyjne. A jeśli pojawiają się na moja IDE dla drugiego, Pokażę ci, w moim PHP internecie katalog tutaj, get2.php. Będziemy go otworzyć, niektóre HTML tutaj. Widocznie jestem łącząc się, że Plik CSS, o którym mówiłem. Otworzyć znacznik tabeli. I to tu jest mój pętli foreach. Tutaj jest to, co ja pokazał na szkiełku przed. Jedyną różnicą jest to, że mają ten klucz i wartość CSS Stylizacja, że ​​jestem zastosowanie do niego. Ale to wszystko robię, to jestem iteracji całej $ _GET, aby wszystkie par wartości klucza. A ja ich drukowania w tabeli. I, oczywiście, jestem formatowanie klucze w jedną stronę, z