DOUG LLOYD: Więc mamy zrobić dużo pracy w C, a C jest naprawdę super język, bo to daje możliwość nurkowania naprawdę niski poziom w swoich programach. Docieramy do robienia rzeczy, jak Naprawdę minut, jak manipulowanie Poszczególne bajtów pamięci. Przypomnijmy, że wskaźnikami naprawdę pozwalają nam, że elastyczność. Ale czy zawsze trzeba mieć że poziom drobnoziarnista szczegółów w naszych programach? Chyba nie, prawda? A jeśli będziemy mieć kompromis między byciem w stanie zrobić naprawdę minute rzeczy i naprawdę, naprawdę wielkie rzeczy, że nie mamy do myślenia o, nie mamy do wdrożenia te naprawdę wielkie idee jeśli oni już wbudowane w nas, ogólnie do budowy duże programy lub duże projekty, jesteśmy prawdopodobnie będzie zaważyć na posiadania więcej język rzeczy zbudowany w nas, zamiast rzeczy na niskim poziomie. I tam naprawdę jest w PHP. Obecnie, jedna z przyczyn że uczymy PHP w CS50 jest to, że w dużej mierze zainspirowany C. A w rzeczywistości, moim zdaniem, są naprawdę dwie Języki progenitorowych, że są bardzo popularne w dzisiejszych czasach. C i LISP. I są języki progenitorowych bo każdego innego nowoczesnego programowania Język, który stworzył od tego czasu jest inspirowany przez jedną lub drugą składniowo. PHP jest bardzo podobna składniowo na C, podczas gdy system podobny do języków, Na przykład, co może słyszeliście, jest mocno zainspirowana języku nazywa LISP, który jest starszy język. Więc dlatego, uczymy PHP w CS50 jest to, że, znając C jako zasadniczy jak to zrobić w tym momencie, zbierając PHP, co daje Państwu zdolność do znacznie wyższych rzeczy poziomu od C działa nie jest że wiele utrudnień, bo masz już Podstawowa idea składni. C jest już od prawie 45 lat w tym momencie. PHP jest już od około 20 lat. I w tym 25 lat pomiędzy, programistów ustalono, że będzie ich znacznie a mają wyższe umiejętności poziomu, i błędy i walki od 20 lat w okresie doprowadziły do ​​PHP i innych językach nowożytnych. PHP to świetny wybór język oprogramowania że allow-- dla Oprogramowanie that-- gdzie trzeba robić rzeczy, które w C są rzeczywiście skomplikowane. Tak na przykład, pracę z ciągów znaków w C jest bardzo skomplikowany, ponieważ jak wiemy, ciągi w C są naprawdę tylko tablice znaków. To nie jest wbudowany typ danych. A może bardziej zasadniczo, coś nie pokrywają nawet w C, co, jeśli trzeba zrobić niektóre sieci komputerowych? W porządku? C ma możliwość, aby to zrobić, ale to tak arcane i tak trudne do rzeczywiście zrobić. Czy nie byłoby miło, gdyby Język miał wbudowany, łatwy sposób do wdrożenia sieci? I PHP jest językiem, który sprawia, że lub ułatwia, że ​​nieco więcej. Jak powiedziałem, PHP jest bardzo mocno inspirowane przez C. Składnia jest bardzo podobna. I tak powinno miejmy nadzieję uczynić Przejście od jednego do drugiego trochę bardziej miękkie niż niektóre innych języków może być. Aby zacząć pisać w PHP, wystarczy otworzyć plik z rozszerzeniem .php. Technicznie nie jest faktycznie wymagane, ale jeśli chcesz takie rzeczy jak składni podkreślając w IDE, więc tego typu nazwy lub nazw zmiennych, funkcje, wiesz, słowa kluczowe języka są podświetlone w sposób specyficzny kolor, na ogół chcą wymienić swoje pliki dany rozszerzenie pliku. Tak nazwaliśmy nasz plik z .php rozszerzenie, ale także z PHP, cały kod PHP piszemy w tym Plik musi być ujęty w tych PHP ograniczniki, które widzimy tutaj na ekranie. Kątownik? Php, aby rozpocząć. Następnie piszemy wszystkie nasze PHP kod, który chcemy pomiędzy. I wtedy ? kątownik, aby zamknąć. Jeśli tego nie zrobi, to co się stanie? To się nie upaść. To nie będzie naprawdę zrujnować nasz program. Ale to nie będzie mieć efekt, który chcemy. Co się stanie, naprawdę, jest że kiedy staramy się uruchomić ten program, nie wszystko między tymi ogranicznikami zostanie wydrukowany dosłownie. To nie będzie faktycznie wykonanie kodu, to będzie po prostu wydrukować go dosłownie. Teraz dlaczego tak jest? Więc C, co jest znane jako skompilowany języka. Jesteś prawdopodobnie zna etap wykonywania programów, obracając .c pliki i pliki .h w jednym pliku wykonywalnym z marki, W szczególności przy wykorzystaniu Clang jako naszego kompilatora. PHP, choć nie mieć to odpowiednik. PHP jest to, co się nazywa interpretowany język. A co to oznacza? Cóż, oznacza to, że nie mamy do konwersji nasz kod źródłowy do zer i jedynek uprzednio. Przeciwnie, jest to program, który jest również nazywany PHP, że rozumie, PHP i może jakby zrobić to w locie. To naprawdę nie jest dokładnie to, dokładne, ale jest to całkiem dobra analogia z tego, co się dzieje. To interpretacji tych zer i jedynek w locie. I tak, jeśli nie wie Sposób przetwarzania coś Jeśli nie wie jak Proces PHP, prawdopodobnie chciał umieścić ten tekst w środku, prawda? Prawdopodobnie chciał umieścić kod w tam, nawet jeśli nie jest pomiędzy PHP-- separatory PHP. Ale-- więc to nie będzie usunąć go dla Ciebie, to po prostu będzie w zasadzie wyrzucić. Więc to będzie drukować to się do ekranu. Wydaje się, że to zły rzecz, ale w rzeczywistości jest to dzieje się naprawdę dobre, jak będziesz zobacz kiedy mówimy o Tworzenie stron internetowych PHP, ponieważ oznacza to, możemy przeplatać PHP i HTML. Możemy wykorzystać je w celu stworzyć bardziej dynamiczną stronę internetową. Ale o tym w Wideo na tworzenie stron internetowych PHP. Więc co to jest składnia PHP? To właśnie ten film jest o. Porozmawiajmy o tym. Tak więc, aby zacząć, zmienne. Istnieją zmienne PHP. Istnieją tylko dwa duże Różnice z C Pierwszym jest to, że nie ma no specyfikacja typu. Nie mamy powiedzieć int, char, float, wszystkie rzeczy. Nie musimy tego robić więcej. PHP jest to nowoczesny język. To może dowiedzieć się, co masz próbuje zrobić lub zrobić najlepszy domyślać, co próbujesz zrobić. Więc to jest bardzo ładne. Inną rzeczą jest to, że wszystkich zmiennej Nazwy muszą zaczynać się znakiem dolara. To jest po prostu coś się przyzwyczaić. To trochę dziwne, bo to jest tak, że PHP może zrozumieć co jest zmienną, a co nie. Więc każda nazwa zmiennej zaczyna się od znaku dolara. Więc w C możemy coś powiedzieć tak, int x = 54. Nie mamy już tego zrobić w PHP. Możemy tylko powiedzieć, $ x = 54. I można powiedzieć, na przykład, w języku C, gdybyśmy funt obejmowały .h CS50 nagłówek pliku, można powiedzieć, Zwrot ciąg = "To jest CS50." Nie musimy to zrobić w PHP, choć. Możemy tylko powiedzieć, $ frazę = "To jest CS50." A w rzeczywistości, łańcuch jest teraz wbudowany typ danych w PHP, czy raczej PHP rozumie co ciąg jest. Jest to niezależne od tablicy znaków, jak to jest w C Wszystkie ulubione Instrukcje warunkowe od C są nadal dostępne do użycia. Tak więc nie jest duży przejście tam. Możemy say-- możemy mieć if takich jak ten. jeśli $ y 43, lub $ z = 15. Więc to jest bardzo proste. Możemy mieć wtedy i jeszcze. Możemy mieć wtedy i else if. I zauważyć coś bardzo ładne tutaj, a to jest jakby jednym z tych, Zalety PHP kontra C, uprzedzenia jaką funkcję nie jesteśmy tutaj używając? Używamy == do porównania zmienna, $ name, na łańcuch. Nie mogliśmy tego zrobić w C, prawda? Musieliśmy korzystać z funkcji o nazwie StrComp lub StrEndComp lub jakikolwiek jej pokrewnych kuzynów. I tak już widzimy te zalety. Nie musimy coś zrobić jak głupie, a może nieintuicyjne jak wywołać funkcję o nazwie StrComp jeśli po prostu chcesz przetestować czy wartość jest równa ciąg. Może po prostu użyć równa równych, jak mogłem zrobić nic innego. Więc jest zaletą. Czasami, przy okazji, to polubisz zobacz innego, jeśli jako jedno słowo, elseif. I to jest OK w PHP, jak również. Więc czasami można zobaczyć, że. To nie jest literówka. PHP rzeczywiście rozumie elseif. Nie wiem dlaczego zdecydowała się na wdrożenie, że ale jak widzieliśmy wiele razy całej naszej filmy do tej pory, my programiści uwielbiają, jeśli szybko możemy robić rzeczy, więc pozbycie się tej przestrzeni widocznie to duża zaleta. A więc to, czy i elseif. Mamy także operator trójargumentowy, wycofanie znak zapytania jelita grubego, na bardzo krótki formularz jeśli inny lub warunkowe rozgałęzienia. I zdaje się, w tym, co próbujemy zrobić tutaj jest przypisanie zmiennej $ list albo prawdziwe, albo fałszywe, w zależności od tego, czy $ var jest znakiem alfabetu. Więc to jest bardzo podobne do isalpha że jesteśmy zaznajomieni z od C Jest to swego rodzaju odpowiednik w PHP. Funkcja ta jest wyraźnie nazywa ctype_alpha, ale to jak to robimy w PHP. Więc to wszystko będzie się, jeśli $ var jest list, $ list jest prawdziwy. Jeśli $ var nie jest literą, $ list jest fałszywy. Mamy również sprawozdania przełącznika nadal. Pamiętamy te z C, jak również. Na samej górze tam, to jak to robimy coś get int lub uzyskać ciąg. Więc PHP, że zbudowany w. Nie potrzebujemy już bibliotekę CS50. Możemy po prostu korzystać z readline funkcji. Co to będzie zrobić, to wydrukować się komunikat: "Twój stan, proszę ", a następnie miga wiersz czeka na użytkownika do wejścia trochę informacji. Teraz zauważyć, co jeszcze możemy to zrobić za pomocą przełącznika. Jeśli już ją wcześniej, może pamiętacie, że przełącznik jest ograniczona prawie do liczb całkowitych i znaków, ale teraz możemy używać łańcuchów. A w rzeczywistości, instrukcja switch w PHP jest trochę bardziej elastyczny niż jego kuzyn z C Pętle. Podobnie jak warunkowych, wszystkie Twoje stare przeboje są nadal. Mamy while które liczą od 1 do 100 w tym przypadku. Mamy robić podczas pętli że liczy się od 1 do 100, a my mamy dla pętli że liczy się od 1 do 100. Więc nie ma wielki skok tam. Składnia jest całkiem bardzo dokładnie takie same chyba teraz używamy Zmienna znak dolara zamiast deklarowania zmiennych Integer lub coś podobnego do naszych liczników. Oto, gdzie robi się Dużo lepiej niż C, choć. Tablice. Więc przypominam sobie, kiedy byliśmy mówić o C, w celu dla nas, aby rozwijać się i kurczyć zestawy informacji, musieliśmy uporządkować niewypłacalności do tej idei połączonej listy, ponieważ tablice C zostały ustalone rozmiary. Nie mogliśmy ich kurczyć. Nie mogliśmy je rozwijać. Musieliśmy realokacji pamięci i robić wszystko to szaleństwo lub użyj listy, które związane zajmują nieco więcej miejsca. Ale w PHP, tablice są Nie ustalona w wielkości więcej. Mogą rosnąć i może się skurczyć. Więc jeszcze raz, te 20 lat, które istniały między pierwszym wydaniu C i pierwsza wersja PHP, zdecydowaliśmy, że wiesz, byłoby naprawdę świetnie czy możemy to zrobić. I tak realizowane tego. Więc tablice PHP nie są ustalone wielkości, a ponieważ PHP naprawdę nie ma mają programista przodem Pojęcia typów, możemy mieszać typów danych w naszych tablicach, też. Tak więc nie trzeba nawet używać wszystkich całkowite lub wszystkie punkty szyby, możemy mieć mieszankę wszystkich różne rodzaje w jednej tablicy. Deklarowanie tablica jest całkiem proste. To tak, jak każdej innej zmiennej. $ Nums = array (1, 2, 3, 4), tablica jest funkcją , który jest wbudowany w PHP, które stworzy tablicę dla Ciebie. To tworzy tablicę czterech wartości, Liczby w tym przypadku o nazwie $ Nums. I jest więcej niż jeden sposób, aby to zrobić. I będziemy zobaczyć wiele w PHP. PHP został opracowany przez wiele różnych osób i rośnie i rośnie i rośnie. Jest tam zwykle nie tylko dwa lub trzy sposoby, aby coś zrobić w PHP, nie ma jak zwykle 10 lub 20. Tu jest po prostu inny wspólny sposób zadeklarować tablicę. $ Nums = nawias kwadratowy 1, 2, 3, 4. Jest to więc rodzaj podobny do kąta z C. br-- kręcone notacji nawiasów, a. $ - lub byłoby int Nums kwadratowych wsporniki równa nawias klamrowy 1, 2, 3, 4. W PHP jest to $ Nums = square nawiasy 1, 2, 3, 4. Ale oba te przykłady tutaj dać mnie tablica z czterech w tym przypadku liczb całkowitych. Co zrobić, jeśli chcę dołączać coś teraz? Cóż mogę tylko powiedzieć, $ Nums 4, które znowu, my wciąż licząc od 0 tutaj w PHP, byłby piąty Element tablicy. Mogę tylko powiedzieć, że. Nie będę cierpieć SEG przyczepić, bo moja tablica jest po prostu będzie się rozwijać, aby pomieścić, że. To bardzo miłe, prawda? A w rzeczywistości, nawet nie trzeba określić, gdzie chcę, aby ją umieścić. Mogę tylko powiedzieć, że to i tak dołączać go w prawo na końcu, lub nawet tylko mogłem powiedzieć, $ 20 lub Nums 1000. To naprawdę nie ma znaczenia. To wciąż tylko będzie dołączać go w prawo na końcu. Więc mogę rozwijać, a as-- jesteśmy nie będzie obejmować go tutaj, ale mogę splatać lub taśmy elementy spośród tablicy, jak również, a tablica będzie się kurczyć, aby pomieścić że teraz brakuje lub pusta przestrzeń. Jest jeszcze jeden sposób, aby dołączać coś na tablicy, która jest funkcją o nazwie array_push. Więc jeszcze raz, tylko ten pomysł jest w stanie robić rzeczy, na wiele różnych sposobów. Tak więc widzieliśmy trzy różne sposoby teraz tack inny element na tablicy. Więc to dodaje kolejny element na koniec tablicy $ Nums. I możemy mieszać nasze typy danych. Więc mogę mieć tablicę nie 1, 2, 3, 4, a 1, to prawda, 3, 4, gdzie prawda jest logiczna, a następnie jeśli chcę dołączać innego elementu tej tablicy, być ciągiem znaków, ciąg "pięć", może to zrobić. A teraz moja tablica będzie za 1, to prawda, 3, 4, pięć. Słowo pięć, a nie całkowita 5. Tak dużo elastyczności istnieje. Elastyczność dostaje jeszcze lepiej, choć, ponieważ PHP ma wsparcia dla czegoś zwana tablicą asocjacyjną. A my jakby niewyraźnie mówił o tablice asocjacyjne w C W związku z tabel mieszania, ponieważ Tablice asocjacyjne to, co naprawdę wszystko o czynią klucz mapowania parę wartości. I w tym przypadku, jeśli keys-- jesteśmy zaznajomieni z tablicami z C, klawisze są numery indeksu. 0, 1, 2, 3. A wartości są tym, co widzimy, że Tablica 0, tablica 1, matryca 2 i tak dalej. Więc klawisze są indeksy, i wartości co jest w tym miejscu tablicy, określonej przez ten indeks. Ale w PHP, nie musimy tego robić Pojęcie tablicy 0, tablica 1, tablica 2 więcej. Możemy teraz wykorzystać rzeczywiste słowa do mapowania klawiszy na wartości. I tak mógłbym powiedzieć coś takiego. Można utworzyć tablicę używając nawias kwadratowy składni w następujący sposób. $ pizze = Uchwyt kwadratowy "ser", a następnie ten rodzaj notacji strzałki podwójne, 8.99 ", pepperoni," strzałka 10.99-- 9,99, i tak dalej. A więc to, co się tutaj dzieje? Co ja właściwie robię? Tworzę kluczowych mapowania parę wartości. Więc zamiast mówić, na przykład, kawałki pizzy 0, 1, 2, pizze Teraz mogę powiedzieć, pizze ser, pizza pepperoni, i odnoszą się do wartości z nimi. Tak oto nasze klucze w kolorze zielonym. Ser, pepperoni, warzyw, bawole kurczaka. Oto strzałka, która sprawia, to mapowanie para wartości. I to tutaj są wartości w tym miejscu tablicy. Więc to tak, jakby powiedzieć tablica 0 równa się 8,99. Kluczem jest 0. Wartość wynosi 8.99. Teraz mogę powiedzieć, ser tablicy lub w tym Sprawa pizze ser, ser jest kluczem, i co znajdę na pizze ser jest 8.99. To wartość, że tam znajdę. Więc mogę mówić takich rzeczy. $ ser do pizzy = 7,99. Powiedz, mam do sprzedaży. Chcę dis-- chcę spadać cena pizzy serem. Czy mogę skorzystać z warzyw pizzy jako część warunkiem czy mogę dodać nowy element do mojego tablica, tak jak mogłem zrobić wcześniej. Mogę dodać nowy element do tego asocjacyjna z kluczem "boczek" a wartość 13,49. Ale tego rodzaju wprowadza problem, jeśli myślisz o tym za chwilę. Jak byśmy iterację tej tablicy? Dobrze? W C, to po prostu mieć pętli, na ogół, że Byłoby to od 0 do rozmiar tablicy minus 1. Tablica ma n elementów w co, ważne indeksy są 0 do n minus 1. Tak więc możemy użyć pętli for do krok po kroku każdego elementu. Ale to naprawdę nie jest sprawa już, prawda? Teraz, gdy mamy parę kluczy wartości mapowania, gdzie klawisze są słowa, w jaki sposób iteracyjne nad wszystkimi słowami? Cóż, na szczęście, PHP sposób, aby poradzić sobie z tym zbyt, i tak będziemy wrócić do pętli na sekundę wprowadzić czwarty rodzaj pętli, która istnieje w PHP o nazwie pętli foreach. A co robi pętlę foreach jest to w zasadzie ten sam pomysł. Można go używać do każdego rodzaju tablicy. Ale to jest w zasadzie sam pomysł, jak dla pętli, wyjątkiem zamiast używania Liczby indeksu, po prostu mają tę dziwną składnię gdzie zadzwonić każdy pojedynczy element nazwa dla celów tej pętli. Tak więc w tym przypadku foreach ($ array jako klucz $). Zasadniczo, jako że komentarz notatek, wewnątrz tej pętli foreach, to będzie przejść przez każdy element tablicy $, które typowo będzie tablica asocjacyjna ale naprawdę może być każdy rodzaj tablicy że chcesz w PHP. I za każdym razem, że w pętli for to polubisz powiedział $ array nawiasy kwadratowe $ i, można tylko powiedzieć, $ key. Tak, że kluczem $ staje się aliasem każdego Indeks swojej tablicy asocjacyjnej PHP, i tak można go używać tak. Tak na przykład, mamy teraz dostaliśmy naszą tablicę pizze. Mam trochę schowany go w kącie tam więc można używać go zrobić szybki przykład. Jeśli powiem, foreach ($ pizze jak $ pizza), dobrze, co się dzieje? Cóż, mam zamiar iterację każdego Pojedynczy element tablicy $ pizzy, i dzięki temu, mam zamiar zadzwonić każdy element, kiedy jestem w środku z ciała, które dla pętli $ pizzę. Więc to jest coś w rodzaju stand-in, przypomnijmy, że $ pizzy jest w gotowości za powiedzenie $ pizze nawiasy kwadratowe $ i jakbyśmy za pomocą pętli for, gdzie może pójść z $ i = 0, aby w tym przypadku, $ i = 3. Jeśli nie mieliśmy pary wartość klucza o, będzie to elementem 0, 1, 2, 3, i chcemy użyć pętli for, aby przejść $ pizze 0, $ 1, $ pizze 2, pizze $ pizze 3. Więc teraz tylko $ pizzy jest zastąpienie dla tego indywidualnego klucza. Więc co to jest zamiar wydrukować? Jestem drukowania $ pizzę. Co ja mam znaleźć at-- jeśli wydrukować $ pizze, $ i? Dobrze? Jeśli mam do wydrukowania -ty element pizzy, co mam zamiar drukować? Idę do wydrukowania Wartości w tym miejscu, prawda? Podobnie jak w przypadku robimy W tym kontekście C zwykle nie skorzystać z naszego iterator zmienna int i = 0, i jest mniejsza niż 3, i ++, wydrukować 0, 1, 2, 3. Jesteśmy drukowanie tablicy 0, tablica 1, tablica 2, tablica 3. A więc to, co wypisuje to jest. Jest to lista cen. 8.99, 9.99, 10.99, 11.99. Teraz krótka notatka tutaj. Pętli foreach niekoniecznie wydrukować rzeczy w porządku. To nie jest gwarantowana. Zwykle. To zwykle na podstawie kolejności w elementy, które są dodawane do tablicy więc po prostu o tym pamiętać. Może nie jest to w porządku. Ale pętla foreach będzie iteracji poprzek każdego elementu tablicy mowa. W tym przypadku znowu że tablica jest $ pizze. Mogę zmienić składnię, choć, jeśli Chcę zarówno klucz i wartość. Zamiast mówić $ pizze jako $ pizzy, mogę to powiedzieć. A jeśli spojrzeć na to, co mam podświetlone na zielono tutaj, wygląda na to kluczowy mapowania parę wartości. I tak, jeśli you--, nawet jeśli nie są do końca pewien, co zamierza zrobić, można się domyślić że $ polewa będzie być kluczem w tej sprawie i $ cena będzie wartość. Więc jestem zastępując teraz każdy element od $ pizze jak parę kluczowych wartości, a teraz mogę odnieść się do klucza i wartość, która może się przydać, Na przykład, w następujący sposób. "Cały" - to dużo Druk dzieje here-- "całości" byczy "pizza kosztuje $" cenę, a następnie I wydrukować Kropka i ukośnik n. Więc teraz, uwaga znów mam dostęp do klucz, $ polewa, a wartość, $ cena. Więc można się domyślić, co to będzie drukować? Istnieje wiele instrukcji print, ale jest tylko jeden odwrotny ukośnik n, więc to będzie coś wydrukować na entire-- na jednej linii kodu. Jeśli uda mi się odnieść do klucza i wartość, to teraz, a nie tylko jest w stanie wydrukować cen, Mogę wydrukować coś takiego. "Cały pizza z serem kosztuje $ 8.99." A teraz używam wszystkich keys-- ser, pepperoni, warzyw, Bawół chicken-- i wartości. 8.99, 9.99, 10.99, 11.99 Tak to jest po prostu inny sposób zrobić pętli foreach, że zamiast tylko daje dostęp do wartości, to po prostu daje you-- to daje dostęp do kluczy i wartości. Więc drukowanie informacji. Już to zrobiłem to kilka różne sposoby, można zauważyć. Dwie funkcje mamy przede wszystkim postrzegane są druku i echo. I przez prawie wszystkie zamiary i cele, są dokładnie takie same. They're-- istnieje bardzo subtelne Różnica to nawet nie warto dostania się, ale w zasadzie wszędzie można użyć print prawdopodobnie można używać echo, jak również. I to nie jest tylko dwóch. PHP ma wiele różnych sposoby drukowania rzeczy, i ma też sposoby integracji zmienne w środku łańcucha. Więc pamiętam z C, prawda Pamiętasz, co funkcja możemy użyć do zastąpienia zmiennych do rzeczy, które chcesz wydrukować? Prawdopodobnie to wykorzystać funkcjonować całkiem sporo. printf, prawda? Więc to jest to, co mieliśmy przed wewnątrz w kontekście naszej pętli foreach. Mieliśmy tych pięciu Jednostkowe sprawozdanie druku, bo to był jedyny tak naprawdę wiedział w chwili jak wydrukować wiadomości. Nie wiedziałem, jak zintegrować Zmienna $ polewa do mojego kodu PHP. Dobrze, jeśli po prostu wziąć i zgadnij, printf, to faktycznie będzie pracował. printf jest funkcją, że można używać w PHP, tak jak można go używać w C A więc coś takiego, printf, ponownie, jesteśmy zaznajomieni z tym. Pierwszy% s otrzymuje o wartości $ polewa. Drugi% s otrzymuje z wartością $ cenie. A więc jestem interpellating, który jest tylko fantazyjny sposób powiedzenia Jestem przyklejania zmienne do tej lokalizacji. Więc jestem podłączając $ polewa gdzie % s jest czerwony i $ cena gdzie niebieskie% s jest, i wtedy pojawia się komunikat, "Cały pizza z serem kosztuje $ 8.99." Nie tylko w ten sposób mogę to zrobić, choć. Może nie chcę korzystać z tej metody. To jest rzeczywiście, co jest najczęściej zwana zmienna interpelacji. Można użyć echo. Przydałby mi się drukiem też, jak zobaczymy. Ale co tu się dzieje? Przede wszystkim muszę uciec znak dolara. Bo pamiętam, kiedy byliśmy w rzeczywistości drukowanie ceny pizzy, I faktycznie formatowania ich jako Dane pieniężne ze znakiem dolara. Ale używamy znaków dolara także do reprezentowania nazw zmiennych w PHP, w szczególności, gdy jestem Korzystając z tej metody z kręconymi Zmienna klamra Metoda interpelacja, muszę uciec mój znak dolara, więc nie robi myślę Mówię o zmiennej. To będzie naprawdę, dosłownie wydrukować znak dolara. Tak jakby analogizować go to, co widzisz na koniec. Faktycznie nie drukuj odwrotny ukośnik n, prawda? To wypisuje znak nowego wiersza. To jest-- nie będzie drukuj backslash znak dolara, to będzie drukować tylko znak znak dolara. Sam pomysł. Sekwencje, co te rzeczy są nazywane. Ale zauważ, że nie robię każdy rodzaj substytucji% s, Jestem po prostu dosłownie podłączając W tych zmiennych. I tak w this-- co by się stało tutaj jest to, że wartość $ topping-- ponownie tylko utrzymanie tego, co byliśmy mówisz tak far-- sera dostanie podłączony tam. A $ cena byłaby cokolwiek wartość jest na pizze, nawiasy kwadratowe, ser, który był 8,99. I tak to również wydrukować "Cały pizza z serem kosztuje $ 8.99." I tak jak powiedziałem, można używać wydrukować tutaj zamiast echo, a funkcjonalność jest prawie dokładnie to samo. To wydrukować to samo. Jest jeszcze jeden sposób na to, i jest kolejną zaletą PHP pracy z tekstem. Możemy zrobić konkatenacji. Możemy to zrobić w C też przy użyciu funkcji o nazwie strcat, ale znowu musieliśmy zadzwoń odrębne funkcje. To był ten cały bałagan zrobić. Musieliśmy funt-to string.h. Była to produkcja, prawda? Ale teraz mogę tylko korzystać z tego dot operatora Łączenie ciągów razem. Więc jestem złączenie "całości" i to bez względu na wartość $ polewa jest, a potem jeszcze Ciąg "koszty pizzy $" a następnie łączenie co wartość $ cenie jest, a następnie na samym końcu jestem sklejaniu na okres backslash n. I tak to również wydrukować "całości" - znowu, jeśli mówimy o pierwszym elementem tej pizzy array-- "Cały pizza z serem kosztuje $ 8.99." Okres, odwrotny ukośnik n, znowu, z $ i $ polewa cena podstawiający za to, co mieliśmy podane w naszym foreach Pętla jako kluczowy mapowania parę wartości. PHP może obsługiwać funkcje. Funkcje były rodzajem integralną C, jak widzieliśmy. Jak zmienne, nie musimy się określić typ zwracany przez funkcję, bo to naprawdę nie ma znaczenia. A my nie określić Typy danych żadnych parametrów, dlatego, że tak naprawdę nie względu na to, jak widzieliśmy w PHP. Każda funkcja jest wprowadzana z kluczowych funkcji. W ten sposób wskazujemy do PHP, które to, co mówimy, jest funkcją. A my nie mamy do czynienia z głównym na wszystkich, dlatego, tłumacza, PHP tłumacz, pracuje od góry do dołu, bez względu. Jeżeli będzie to można zrobić wywołanie funkcji, to będzie znajdź wywołanie funkcji, nawet jeśli przychodzi później. Ale to będzie czytać od góry do dolny, więc nie ma potrzeby, aby określić, oto gdzie zacząć. Zaczynasz na linii 1 twój PHP i działać stamtąd. Więc tutaj jest jak można utworzyć funkcja nazywa hard_square. To podobno ma jedną Parametr, który Dzwonię $ x. Funkcja ta jest skomplikowana prostu ilustrować różne rzeczy. Mamy jeszcze wartości zwracanych. Używam pętli for tutaj. Ale to w zasadzie tylko, co to wynosi zaledwie $ x razy $ x. Co faktycznie robimy jest po prostu dodawanie x 0 x razy lub $ x $ do zera razy x. Ale to skutecznie dokładnie same jak pomnożenie $ x razy $ x. Wciąż mogę zwrócić wartość, w tym przypadku $ rezultacie i zrobiłem funkcję w PHP. Oto jak można użyć go w kontekście. Więc może jestem w środku jakiegoś pliku PHP. Zauważ, że tam niebieski Użyłem moje ograniczniki PHP, kątownik znak zapytania php. Pomiędzy tymi są od PHP, że chcę napisać. Więc jestem podobno zamiar get-- Mam zamiar skłonić użytkownika dać mi numer, sklep, który zmienne, w tym sklep zmiennej $ x, co mi dali. Potem idę do echo hard_square tej wartości, i najwyraźniej zamierza ma być dodany w nowej linii jak również, a następnie później będę zdefiniować funkcję hard_square tak że kiedy robię zadzwonić do hard_square, nie wie, co mam na myśli. Teraz, mogę również zrobić coś takiego. To jest nieco inny. To niemal dokładnie samo, jak to, co widzieliśmy wcześniej, chyba zamiast mówić tylko $ x tam jako parametr do hard_square, Mówię $ x = 10. Jest to więc Przykład programowanie defensywne, strzeże swoje programy przed złośliwymi użytkownikami. To jeden ze sposobów, aby zrobić kilka błędów sprawdzeniu, że tak naprawdę nie mają jako opcja w C Moglibyśmy nigdy określić wartość domyślną coś. Zawsze mieliśmy do sprawdzenia czy, na przykład, gdy zadzwoniliśmy do getString, było najbardziej właściwe, jeśli natychmiast po zaznaczone, że sprawdziliśmy czy ciąg że użytkownik dał nam nie jest równa null, ponieważ nie chcemy, aby rozpocząć pracy z łańcuchem pustym. Tutaj jest to droga w celu ochrony przed tym. Jeśli użytkownik nie zapewnia nam coś jakoś, co my teraz zrobimy? Cóż, po prostu powiedzieć, co oni nie nam, jesteśmy po prostu zamiar podłączyć 10 zamiast. Więc jeśli nie da nam wartość, wystarczy użyć 10 domyślnie. I tak oto, zauważyć, że robię wezwanie do hard_square, ale nie ma zachęty dla użytkownika, tak? Mówię tylko, co pusty połączenie. Ale moja funkcja hard_square oczekuje parametru. Co to jeszcze wydrukować? To będzie wydrukować 100, prawda? Ponieważ użytkownik nie daj mi coś. I tak jestem po prostu założyć, że 10-- 10 jest wartością domyślną. I tak będzie to wydrukować z 100 w oddzielnym wierszu. Pliki PHP nie muszą być tylko jeden plik. Można łączyć kilka plików razem, tak jak można w C Sposób zrobiliśmy to w C był zazwyczaj zrobić #include uzyskać pliki nagłówkowe wciągnięta. Nie rób tego w PHP. Mamy coś, co nazywa require_once zrobić. A jeszcze ta cała rzecz, co to jest __dir__? To tylko specjalny zmienna, stała lub specjalnego, Naprawdę, która określa, co aktualny katalog jest. I tak to będzie wyglądać w bieżącym katalogu pliku o nazwie cs50.php W tym przykładzie tutaj i to będzie trzymać ten plik na początku programu PHP, przy założeniu, że można umieścić wymagają po linii na górze pliku PHP. Więc PHP jest wykorzystywany przede wszystkim, ale nie wyłącznie stosowane, jako język programowania internetowego. To naprawdę, jak doszło do tego. Ale to jest w pełni język, jak widzieliśmy. Widzieliśmy już dość dużo wszystko, co że może to zrobić, są podobne do C, i może to zrobić kawał o wiele więcej niż to. Ale ponieważ jest to pełna język i może zrobić programowanie wiersza poleceń w nim. Możemy uruchamiać programy wiersza polecenia. Wszystko, co niezbędne, aby uruchomić polecenie Program wiersza, który jest napisany w PHP jest to, że masz interpreter PHP. Więc jest to rodzaj analogiczne do o kompilator w systemie jeśli chcesz skompilować kod C aby włączyć go do plików wykonywalnych. Musisz mieć interpreter PHP która istnieje w systemie tak, że można interpretować pliki PHP. Zakładając, że nie, i zazwyczaj to interpreter nazywany jest PHP, i to zwykle w pakiecie z najbardziej pliki do pobrania lub instalacji PHP , które można uzyskać w Internecie, a na pewno nazwa interpretera PHP mamy w CS50, IDE. Wszystko co musisz zrobić to typ pliku php. A co Twój program zamiar zrobić, to jest to będzie przebiegać przez interpreter, to będzie ignorować wszystko, co jest nie pomiędzy pytanie mark-- lub, kąt wspornika znak zapytania php, separatory PHP i wydrukować go, i będzie interpretować i wykonywać Kod wewnątrz swoich ograniczniki PHP. Więc pop nad do CS50 IDE i rzucić okiem na kilka plików PHP, działa kilka plików PHP, w interfejs wiersza poleceń CS50 IDE. Więc jesteśmy w CS50 IDE, a ja pozwoliłem sobie otwarcia pliku o nazwie hello1.php. I najwyraźniej zawartość tego plik są tylko ograniczniki PHP tam, i pomiędzy, echo ("Witaj, świecie"). Jest to dość prosty program PHP. Idę, aby przewinąć w dół moim oknie terminala tutaj, i mam zamiar wpisać php hello1.php, wciśnij enter. Witaj świecie. To jest chyba to, co my spodziewałem się zrobić, prawda? Chodźmy się i podjąć kolejny spojrzeć na program. hello2.php. Prawie to samo, nie wiele się tu dzieje. Tym razem jednak, mam zamiar skłonić użytkownik dać mi swoje imiona. Jestem ponownie przy użyciu tej funkcji readline. $ name = readline. To jest szybka, "Jak masz na imię?" Widocznie jestem drukowanie to z własnej linii. A potem, więc linia poniżej że będzie szybka w którym użytkownik może wpisać swoje nazwisko. A potem używam trochę Zmienna interpelacja tu na linii 3 wydrukować "Hello" i co użytkownik wpisze. Więc to jest analogiczne do mówiąc: Witaj, przecinek,% s, jeśli używaliśmy printf w C Więc chodźmy i interpretować ten program. Więc jeszcze raz, będę przewijać moim oknie terminala. php hello2.php. Jak masz na imię? Doug. Witaj, Doug. Mam też inny plik o nazwie hello3.php. Mam zamiar oczyścić Ekran ze sterowania L, i mam zamiar wykonać to. Jak masz na imię? Doug. Witaj, Doug. Tak więc działanie jest identyczne hello2.php, ale dlaczego jest hello3.php? No i tu jest różnica. W tym przypadku, informacja że tu na linii 1, Mam coś, co nie jest w między ogranicznikami PHP. Ja tylko drukowanie out-- albo ja wystarczy wpisać: "Jak masz na imię?" Gdy interpreter języka PHP to zobaczy, to nie ma pojęcia, jak interpretować to jako PHP, i tak, a nie braku, to po prostu będzie wypluć. Więc zauważyć na linii 3 teraz, moje wezwanie do readline, nie ma już żadnego polecenia. Ja tylko rzeczywiście będzie to-- kiedy interpreter języka PHP widzi to, to będzie wydrukować "Jak masz na imię?" Wtedy widzi, no, OK, here's-- wszystko inne będzie interpretować jako PHP, więc to dlaczego to działa. Nie muszę koniecznie skłonić to-- użytkownika wewnątrz readline, Mogę tylko mieć ją na zewnątrz z ogranicznikami PHP i pozwalają na tłumacza po prostu wydrukować go dla mnie. Tak więc w rzeczywistości nie tylko mieć jeden zestaw ograniczników PHP w programie. Rzeczywiście można mieć kilka z nich, otwieranie i zamykanie ich w razie potrzeby. Warto więc spojrzeć w kilku programach w CS50 IDE, gdzie zilustrować tę ideę konieczności wiele zestawów ograniczonego PHP. OK, więc już otwarty plik tutaj nazywa add1.php. I zauważyć, co się tutaj dzieje. Podobnie jak wcześniej, mam Pojedynczy PHP zestaw ograniczników. Idę do wydrukowania Komunikat: "Proszę, daj mi numer." Potem mam zamiar przeczytać wiersz i przechowywać go w zmiennej $ num1. Potem mam zamiar wydrukować ponownie. Daj mi drugą liczbę. Czytaj linię od użytkownika, sklepie cokolwiek wpisane w $ num2. Dodaj je razem i zapisać, że prowadzić w zmiennej o nazwie $ suma, a następnie wydrukować "The Suma tych dwóch liczb jest ", a następnie interpelacji istnieje zmienna $ suma. Więc po prostu uruchomić to przez tłumacza aby potwierdzić, że jest to, czego oczekujemy. php add1.php. Proszę daj mi numer, 3. Proszę dać mi drugą liczbę, 4. Suma tych dwóch liczb jest 7. To 3 oraz 4. OK? Więc nic strasznie ochotę tam. A teraz otwórzmy się add2.php. Tutaj, mam kilka PHP ograniczone zestawy tam, prawda? Linie 1, 3-- linie 1 i 3 nie mają ograniczniki PHP. Więc kiedy tłumacz widzi je, to tylko będzie wypluć dokładnie co mam wpisane tam. Więc to, gdzie jestem robi wszystkie moje pytania. Na liniach 2 i 4, widzimy bardzo zaznajomieni $? php rodzaju separatorów, więc te dwie linie są zamierza uruchomić w PHP. A następnie na linii 5, mam to Dziwne jest tutaj, prawda? Ten kątownik Znak zapytania znak równości. Ja nawet powiększyć trochę dalej. Możesz zobaczyć to co ja mówić o tam, to $? =. Okazuje się, że to jest tak powszechne, że dlatego, że otwieramy zestaw PHP ograniczniki jest do wydrukowania wartości. I to jest wszystko, co zamierzamy zrobić. Ale jest jeszcze skrótem, że. $ = Jest PHP skrótem mówiąc coś jak $? php echo suma z num1 i num2. Więc jest to tylko kolejny skrót do tego. Więc jeśli mogę uruchomić ten program, PHP add2.php. Będę przybliżyć się trochę. Proszę daj mi numer, 4. Proszę dać mi drugą liczbę. A ponieważ tak naprawdę nie obchodzi Typy danych w PHP, mogę powiedzieć, 4.8. Suma tych dwóch liczb jest 8,8. Ta funkcja zachowuje się dość dużo dokładnie tak samo, jak się spodziewaliśmy, równie dobrze. I mam jeszcze jedno otwarte tutaj nazywa dice.php. Spróbuj tego ponownie. Mam jeszcze jeden nazywany tutaj dice1.php, które również można znaleźć, ma ten kątownik pytanie zaznaczyć równe notacji Zaloguj się tam, ale zauważ, że w tym przypadku jestem wywołanie funkcji rand, który jak ty może spodziewać generuje liczbę losową. "Ty walcowane a", i to będzie obliczyć pewną liczbę losową, mod 6 + 1. Tak, że da mi numer w zakresie od 1 do 6. Pamiętaj, że mod 6 dałoby mnie liczbę w zakresie od 0 do 5, ale jeśli mam symulacji rolki kości, co jest, co tu robię, Nie chcę, żeby te kości, aby przejść od 0 do 5, chcę kości, które go od 1 do 6. A więc jest to sposób, aby uzyskać me mieści się w zakresie od 1 do 6. Robię to dwa razy. Więc widocznie jestem toczenia dwie kości w tym programie. Więc wyczyścić ekran, i zrobię php dice1.php. Ci przywalił 4 i 2. A jeśli uruchomić program Ponownie, walcowane 5 i 5. Więc za każdym razem uruchomić program, Dostaję różne numery, bo za każdym razem robię tak, to zaczyna się. To będzie generować nowy zestaw liczb losowych dla mnie. Jeśli więc jesteśmy przyzwyczajeni do uruchamianie programów z C, jesteśmy przyzwyczajeni do pisania ./ nazwa programu, prawda? Tak właśnie zrobiliśmy wszystko z naszych programów w C tak daleko. Możemy to zrobić w PHP, jak również dodając coś, co nazywa shebang do szczytu naszego pliku PHP. Wiem, że to trochę głupie słowa. Jest to skrót od skrótu hukiem. To dwa pierwsze znaki nie. Pamiętaj nazywamy wykrzyknik często huk w informatyce. To również może być dla ostrym hukiem. Istnieje kilka sposobów, aby go interpretują. Ale to w zasadzie specjalnego rodzaju dowodzenia, że ​​interpreter języka PHP rozumie się, oh, chcę można wykonać ten program, które jest najwyraźniej / user / bin / php, który jest w rzeczywistości, gdzie interpreter PHP specjalnie mieszka w naszym systemie. Więc co się dzieje tutaj it's-- jest interpreter rozumie, oh, Ja najwyraźniej powinien używać w tym programie, aby uruchomić ten plik. I tak to pozwala pominąć kroku posiadania powiedzieć php something.php. Jest jeszcze jeden haczyk Tutaj, która jest taka, że ​​jeśli chcemy nasze programy do działa zgodnie z oczekiwaniami, my trzeba zrobić coś, co nazywa zmiana dostępu do pliku. A my go-- i porozmawiać trochę bitowe więcej zmian uprawnień o pliku w naszym wideo na MVC, ale wystarczy powiedzieć, że to jest to, co trzeba zrobić, aby uczynić swoje .php pliki wykonywalne. Warto więc spojrzeć na to jako nasz ostatni przykład nad w CS50 IDE. Więc tutaj w IDE Mam dwa pliki w tym Katalog PHP, które nie wydają się być nazywa .php. Mam funkcja nazywa add-- Mam plik o nazwie ADD3 oraz plik o nazwie dice2. Więc weźmy szybkie wyglądać i otworzyć ADD3. I jak widać, na początku mojego pliku mam ten shebang, prawda? Ten punkt hash wykrzyknik. Teraz będziesz także może zauważyć, że z jakiegoś powodu, Nie mam żadnej składni podkreślając więcej, i to jest to, co wspomniałem wcześniej, co było, że jeśli nie nazwać mój plik .php, nie mam korzyści podświetlanie składni już. Plik ten jest nazywany po prostu ADD3. Tak, że można go uruchomić później z ./ ADD3 i nie ./ add3.php. Więc reason-- to jeszcze dobrze, że to nadal aktualne PHP, ale to nie Składnia podkreślił, ponieważ ten plik nie jest nazywany something.php. To jedyna prawdziwa różnica tutaj, plus shebang. Zobaczmy więc, co się dzieje, gdy Staram się uruchomić ten program. ./ ADD3, tak jak bym C. Bash. ./ Zgody ADD3 zaprzeczył. To jest to, co masz zamiar aby sprawdzić, czy można zapomnieć użyć polecenia chmod, aby zmienić uprawnienia do tego pliku. Jak się okazuje, regularne PHP pliki nie mogą po prostu być wykonane. Można je interpretować, ale jesteśmy robi coś innego tutaj. Mamy je wykonuje. I tak trzeba dodać uprawnienia egzekucji, chmod a + x do ADD3. Wtedy można powiedzieć ./ ADD3. Proszę dać mi numer. 5, 6. Suma tych dwóch liczb jest 11. Podobnie, już CHMOD dice2, więc mogę po prostu wpisz ./ dice2, ci przywalił 1 i 1, to walcowane 5 i 4, i tak dalej. Więc to jest dość dużo Pomysł składni PHP, prawda? Jest wiele, aby przejść, wiem. Ale mam nadzieję, że widziałeś już, że PHP Nie jest to, że różni się od C i naprawdę daje nam możliwość wziąć się w garść lub dwie. Naprawdę nie musisz się martwić zbyt wiele about-- naprawdę nie trzeba martwić się zbytnio o szczegóły niskopoziomowe my musiał martwić o C, prawda? Możemy skupić się na wyższe Poziom rzeczy, że PHP pozwala nam zrobić i wziąć na pewnik, że będzie pracować dla nas. Więc to daje nam możliwość teraz, przejście z C do PHP, do programów, które są o wiele bardziej skomplikowane i być może o wiele bardziej wytrzymałe. Więc mam nadzieję, że dobrze się bawić pracy PHP i jestem Doug Lloyd. To CS50.