[Powered by Google Translate] [Tydzień 8]
[David J Malan] [Harvard University]
[To jest CS50.] [CS50.TV]
>> Witamy z powrotem.
To CS50, i jest to początek 8 tygodni.
Kilka możliwości w tym tygodniu,
wśród nich ta rozmowa tutaj, w których niektóre jedzenie będzie serwowane.
Po więcej szczegółów zobacz slajdy, które są online.
A także inne wydarzenie w tym tygodniu przez naszą Thomas Carriero.
On jest jednym z byłych stypendystów CS50 nauczania głowy, który jest teraz w Dropbox,
a on jest facetem, który wciągnąła nas z wiesz co,
więc jeśli chcesz więcej tego głowy ich rozmów po południu dla Dropbox i więcej.
CS50 lunch jest w ten piątek.
Czy dołączyć do nas, jeśli jesteś w stanie, 1:15, jak zwykle, w ognia i lodu.
>> A teraz mamy zanurzyć coś zwane seminaria.
Nasze CS50 Seminaria, przypominam, są to zajęcia fakultatywne prowadzone przez stypendystów dydaktycznych
oraz asystenci kursu i przyjaciele oczywiście
ludzie z grupy na terenie kampusu nazwie ABCD, czyli grupa
technofile na kampusie, a także grupa o nazwie HCS,
Harvard Computer Society, Studenci, którzy są podobnie zainteresowani informatyki.
Tegoroczna lista seminariów obejmuje seminaria na temat Androida i iOS i JavaScript
i PHP, Unix, Vim, i więcej, więc sobie sprawę, że te seminaria idą w górę.
Jeśli chcesz, aby potwierdzić udział w którejkolwiek z nich udać się do tego adresu URL tam.
Będziemy wtedy zamieścić na stronie internetowej kursu czasy i miejsca, po ich sporządzeniu.
Ale wiem, że w 5 lat warto uprzednich seminariów dostępne online,
z których wiele jest wciąż bardzo aktualny w zakresie technologii Was może
chcesz grać z dla końcowych projektów, więc udać się tam na niektórych dostępnych filmów ich.
>> CSS, ci z was, którzy są zaznajomieni z CSS już,
co to jest w skrócie?
Co to jest CSS?
To kaskadowych arkuszy stylów, a co to znaczy?
Co to dla nas zrobić, CSS?
Dobra, niech rozgrzać łatwiejszy jeden, HTML HyperText Markup Language.
Co to dla nas zrobić?
Ktoś w ogóle?
Robi się naprawdę niezręcznie zadawać te pytania.
HTML, Hypertext Markup Language.
Tak? No?
[Niesłyszalne odpowiedź uczeń]
Dobra, dobra, to pozwala nam oznaczyć tekst do wyświetlenia w przeglądarce internetowej.
To nie język programowania jest.
To rzeczywiście język znaczników, co oznacza, że ​​instruuje przeglądarkę, jak wyświetlić
informacji, więc najprostszym wcielenie to jak widzieliśmy
jest coś super proste jak boldfacing, open bracket b uchwyt zamknięty mówi
aby ten tekst pogrubiony, i to właściwie tylko jeden z wielu sposobów
w którym możemy to zrobić, i rzeczywiście, te dni lepsze podejście
do stylizowania swoją stronę internetową, dzięki czemu rzeczy pogrubione i kursywa
i na środku i uzasadnione i podobne, nie dokonuje się za pomocą znaczników HTML sama
ale raczej w technice CSS, Cascading Style Sheets.
To jest język do siebie.
To też nie jest językiem programowania, ale-jest
wszyscy, to jest Dan, który trzyma przyłączenie się do nas już dziś.
Pewne trudności techniczne. Nie stanowi problemu.
>> CSS pozwala stylizować stronę
poprzez tak zwane właściwości, więc rzućmy okiem na to
drodze podstawowych przykładów.
Pozwól mi iść do urządzenia już dziś.
Mam źródłowy 8 katalogu poniedziałek tutaj,
i mam zamiar iść do katalogu o nazwie CSS, gdzie mamy całą masę
plików czeka na nas tutaj,
i w tym folderze mamy, na przykład, search0.html od ostatniego razu.
Teraz przypominam sobie z search0 wyszliśmy na tej notatce
przez rodzaj wykonania Google czy naprawdę tylko przód za to tydzień temu,
i zauważ, że mieliśmy kilka nowych znaczników tam.
Mieliśmy h1 na duży, pozycja śmiały
formę, która pozwoliła nam rzeczywiście formularz HTML na polecenie użytkownika.
Akcja, co było znaczenie atrybutu akcji
w tagu HTML formularza?
Jaki był sens tego, działania?
Po prostu zrobię to dzisiaj.
Action jest cel, gdzie forma ma być złożony.
Fakt, że akcja, która mówi = "google.com / search"
Oznacza to, że gdy użytkownik kliknie przycisk Prześlij lub równoważnik
niezależnie od formy ich pola wypełnione będą wysyłane nie do naszego serwera
lub naszego urządzenia, ale raczej do tego konkretnego adresu w Google.
A metoda to będzie używać nazywa dostać,
i inne, na razie, to tylko technika przekazywania informacji wraz z serwerem WWW
drodze URL, więc rzućmy okiem wstecz na jak to działa.
>> Zauważ, że jest wejście, którego nazwa jest q
którego typ jest tekst, a następnie drugie wejście typu przedstawienia
których wartość jest CS50 Search, i rzeczywiście, jeśli otwieramy ten plik tutaj
search0.html, jest super prosty formularz,
i jeśli szukam czegoś informatyki
a następnie wciśnij Enter lub kliknij na CS50 Szukaj
zauważyć, że to, co się dzieje, jest poza coraz to Google
Mam konkretnie skończyło się pod tym adresem URL na górze,
google.com / search? q = + komputer nauka,
i informatyka jest oczywiście to, co wpisane w.
+ Po prostu oznacza, że ​​tam była spacja,
i jest to zrobione przez przeglądarkę, żeby upewnić się, że nie ma
zamieszanie i białe miejsca w rzeczywistej URL.
A następnie q, oczywiście, jest nazwa parametru.
Nie widzieliśmy, jak programista, w rzeczywistości może przejść q jeszcze.
Możemy założyć, że Google wie, co zrobić z tym tutaj,
ale my się tam w odpowiednim czasie, dzisiaj.
>> Ale pozwól mi spojrzeć zamiast w search1.html,
który wygląda trochę inaczej, bo uznał, że ta forma tutaj było trochę kulawy.
Mam na myśli, to jest w lewym górnym rogu.
Naprawdę nie ma estetyka do niego, i tak chcę do stylizacji to
nieco bardziej jak Google, którego strona internetowa, przypominam,
nawet jeśli nie może go odwiedzić, że często, wygląda dziś na Halloween.
Gdybyśmy zamiast otworzyć wersję 1 tego pliku, 1.html search, ja koncentruje go.
Nadal bardzo brzydkie, ale przynajmniej teraz zacząłem kontrolować estetykę tej stronie
nie tylko ich zaznaczania.
Rzućmy okiem na wyszukiwanie 1, i jest tam naprawdę tylko jedna różnica tutaj
co może wyskoczyć na ciebie, a może nie,
ale co jeden wiersz lub fragment różnicy?
>> Jest to styl, atrybut, więc okazuje się, że w HTML
większość elementów, większość tagi mogą mieć atrybutu stylu na nich,
i wewnątrz tego atrybutu stylu jest w cudzysłowie,
i że w cudzysłowie jest CSS.
Możesz umieścić arkusz stylów kaskadowych tam
określając je jako nazwy właściwości
dwukropkiem następnie wartości.
Jest to rodzaj nieszczęśliwego decyzji projektowych kilka lat temu
że CSS jest językiem samym w sobie,
ale składniowo jest bardzo różni się od HTML.
W tym przypadku widzimy, że wewnątrz mojej stronie internetowej, która jest napisana w języku HTML
Mam CSS wewnątrz tych cytatów i konwencji dla CSS
jest to, że masz to, co nazywa obiekt następnie, ponownie, okrężnicy,
następnie wartości tej nieruchomości, więc nie ma znaku równości.
Nie ma żadnych dodatkowych cytatów.
To tylko ten dwukropek oddziela parę kluczy wartość,
i linii tekstu robi dokładnie to co mówi.
To wyrównanie tekstu w treści strony, co jest naprawdę odwagi strony,
w centrum.
>> Okay, wynik końcowy, a następnie, aby być jasne, to jest.
Nie wszystko, co bardziej seksowne, ale przynajmniej jest to na środku i trochę bardziej jak prawdziwy Google.
Ale co, jeśli zamiast otworzyć wersję 2 tego
i wskazać tu nowy tag w ogóle?
Teraz w głowie mojej strony, które wcześniej miały jedynie co tag
we wszystkich poprzednich przykładach?
To po prostu było to tytuł.
Chwilę temu tag głowa wyglądała tak.
Teraz zamiast ma styl wnętrza znacznikach niej
i to też przepraszam, składniowo wygląda bardzo różni się od HTML,
ale można się do tego przyzwyczaić, przy czym wewnątrz znacznika stylu
Mogę teraz czynnik poza to, co było przed chwilą
atrybut, atrybut style, i mogę umieścić go na samym szczycie mojej stronie.
>> Dlaczego?
Cóż, jest to krok w kierunku czyszczenia rzeczy, podobnie jak w pisanie kodu C
będziemy czasem pisać funkcje czynnik poza wspólną funkcjonalność.
To tylko trochę czystsze zacząć faktoringu z rzeczy jak estetyka
do jednej, centralnej lokalizacji zamiast wszystko intersperse całym HTML.
To też robi to, co mówi, chociaż jest trochę nowej składni.
To tutaj jest selektor, i ciało po prostu oznacza, wybierz element ciała
i stosuje się to następujące właściwości.
Cóż, nieruchomość jest dokładnie taka sama.
Na dokładkę dodałem średnik na końcu,
który wydaje się być konwencja, a ja cały ten obiekt owinięty
w nawiasach klamrowych, ponieważ mogłem rzeczywiście mają różne rzeczy.
Mogę naprawdę powiedzieć coś jak kolor: niebieski;
>> Teraz też nie będzie krokiem w kierunku czegokolwiek wszystko ładniejsze,
ale jeśli mam teraz wrócić do wersji 2 mam przynajmniej teraz uczynił ciało mojego
page text wszystkie niebieskie.
Przycisk pozostaje taka sama, ponieważ jest to wejście. To nie jest czysty tekst.
Ale wszystko inne, że jest to tekst, jak CS50 wyszukiwanie do góry, jest w kolorze niebieskim fakt.
Ponownie, wszystko zrobiliśmy teraz jest usunąć z znacznika body, zawiadomienia,
atrybut style, a my uwzględniamy go tutaj.
To nie jest ogromny postęp, ale jeśli weźmiemy ten jeden krok dalej
zauważyć, co możemy zrobić w tej trzeciej wersji tutaj.
>> W search3.html Strona jest prawie identyczna
z wyjątkiem tego, co nowy tag teraz?
Link, więc to nie jest bardzo trafnie nazwany
ponieważ nie masz połączenia w sensie klikalne hiperłącza.
Raczej, że jesteś rodzaju robi odpowiednik w C # include
którym Znacznik link z atrybutem href
i atrybut rel mówi śmiało
i kopia wklej zawartość pliku o nazwie search3.css tu zasadniczo.
To nie za bardzo to zrobić, ale to jest duch tego.
Mówi idź otworzyć dany plik, search3.css,
i traktować go tak, jakby użytkownik wpisał go tutaj w głowie strony
tak jak ja w poprzednim przykładzie.
Search3.css tymczasem jest całkiem proste.
To tak naprawdę zawiera dokładnie to, co było przed chwilą
w tagu stylu, ale mam uwzględnić go tutaj do własnego pliku.
>> Mimo, że nie spędził wiele czasu w ogóle programowania HTML lub internetowej
tylko intuicyjnie, co jest motywacją, być może, do faktoringu z
ten mały urywek nawet CSS do własnego pliku
a następnie włączenie go tym tagiem link tutaj?
[Niesłyszalne odpowiedź uczeń]
Okay, to jest łatwiejsze do odczytania w tym sensie, że masz swój CSS w pliku CSS.
Masz HTML w pliku HTML, więc to jest bardziej czytelna w tym sensie.
Co jeszcze może być atrakcyjne? Tak.
[Niesłyszalne odpowiedź uczeń]
Tak, więc można dołączyć go wiele razy, więc teraz robimy to
Prostymi przykładami z pojedynczych plików, ale załóżmy, że jesteś faktycznie dokonywania
prawdziwa strona jak ty będzie na Pset 7 lub ostatecznego projektu, być może,
i chcesz mieć wiele stron internetowych, jak to z pewnością wspólne na
Rzeczywista World Wide Web, a to byłby rodzaj lame
aby skopiować i wkleić ten sam niebieski kolor
i sam tekst wyrównany centrum w każdej z tych stron.
Raczej większy sens czynnik poza, tak jak zrobiliśmy w C
z pliku. h, umieścić go w jednym centralnym miejscu,
w tym przypadku search3.css, a następnie pozostawić dowolny plik
w witrynie, aby faktycznie to ten plik w drodze tego tagu tutaj w linii 16.
Jak to zwykle w przypadku, zaczęliśmy z wersji 0, jaki rodzaj prac
ale niekoniecznie jest najlepsze, a przy każdym kroku,
szukaj 1, szukaj 2, a teraz szukanie 3 podjęliśmy kroki dziecka
wobec projektów, które są trochę czystsze i bardziej przygotowawcze
dla bardziej skomplikowanych stron, które możemy zrobić w dół drogi.
>> Pozwól mi otworzyć ostatni przykład tutaj, aby pokazać
nawet bardziej stylizowany stronę, ale najpierw spójrzmy na HTML.
To search4.html, a zauważysz, że konstrukcyjnie jest to prawie to samo
wyjątkiem wprowadzenia nowego słowa, div.
Div jest tag, który wprowadza podział strony.
Można myśleć o tym, jako niewidzialny prostokąt.
To rodzaj tworzy bruzdę obszaru w internecie
które można stylizować na raz.
Co zrobiłem tutaj jest następujący.
Wewnątrz mojego znacznika body, która była tam przez cały czas,
Mówię stworzyć podział strony tutaj poprzez linie 45 do 47,
i oznacza, że ​​w zasadzie mi niewidzialny prostokąt wzdłuż górnej części strony.
Potem dał mi drugi prostokąt, aczkolwiek niewidzialny, poniżej, że
oraz identyfikuje je w treści nazwy, a następnie na koniec,
daj mi trzeciego podziału strony na dole
zwany ID.
Zobaczymy, dlaczego zrobiłem to na chwilę,
ale koncepcyjnie mam podział nagłówka.
Mam podział treści, i mam stopki podział strony
nawet jeśli są to tylko w adiustacji.
Użytkownik nie będzie patrz 3 prostokąty,
ale jakby strukturalnie tam za kulisami
one faktycznie obecna.
>> Teraz, kogo to obchodzi? Dlaczego właściwie to zrobić?
Wszystko na stronie jest taki sam, jak widzieliśmy wcześniej.
Oto moja forma. Oto mój program, mój wejście, koniec linii i tak dalej.
Oto obraz, chociaż, więc zobaczymy, skąd to pochodzi w chwilę.
Tu jest stopka, która jest nowa, tylko dlatego, że chciał wprowadzić
trochę więcej treści tutaj.
Jeśli zauważysz, że przewijanie w górę ID tego div jest nagłówek.
ID tego div jest treść i ID tego jednego jest stopka.
I jak sama nazwa wskazuje, gdy masz atrybut ID
w formacie HTML, z definicji musi jednoznacznie identyfikować
jeden z elementów, jeden z znaczników strony.
Obciążenie jest całkowicie na Ciebie, aby pamiętać, że masz już identyfikator nagłówka.
Masz stopkę. Masz identyfikator treści już.
Komputer nie będzie się dowiedzieć, co dostępne ID jest dla ciebie,
więc można przypadkowo dać 2 tagi identyfikator nagłówka,
i że po prostu źle.
>> Trzeba pamiętać, co zostało stworzone,
ale kiedy już to zrobisz zawiadomienie co możemy zrobić tutaj.
Mogę teraz określić w moim tagu stylu na szczycie
lub równoważnie w moim pliku CSS, jeśli nadal używać tej wersji,
Mogę powiedzieć, # header, i co to znaczy, że cokolwiek tag
w tej stronie ma identyfikator nagłówka
i #, po prostu ludzkiej konwencji reprezentuje identyfikator.
Ostry znak lub funt znak reprezentuje identyfikator.
Nagłówek jest nazwa, że ​​dałem go.
Oznacza to, że zastosowanie tej właściwości CSS
do tego, co na tej stronie tag nosi identyfikator z nagłówkiem.
Sama umowa tutaj.
Zastosuj tę nieruchomość, która dzieje się samo, do każdego elementu
którego ID jest treść, a następnie na dół
zauważyć Trochę hodowcy z stopce.
Dowolny element, którego ID jest stopka, w której nie może być tylko jedna z definicji
iść dalej i sprawić, aby rozmiar czcionki mniejsze,
jego śmiały waga czcionki, jego marża 20 pikseli.
>> Co to znaczy?
To tylko margines na górze, na dole, a lewa i prawa.
Oznacza to, że dają mi 20-pixel niewidoczny margines wokół niego
wystarczy wcisnąć wszystko inne od niej trochę, jak można zrobić w programie Word,
Microsoft Word lub stron lub jak.
A potem tekst wyrównać centrum.
Zobaczmy na końcowy wynik, a potem wrócimy do jednej pozostałej urywek CSS tam.
To jest wersja 4, nasza ostatnia dla przykładów wyszukiwania, i to o wiele, wiele bardziej sexy.
Teraz, w uczciwości, tylko Googled "font google generator logo."
A to pozwoliło mi stworzyć GIF, format obrazu, który wygląda tak jak tam.
W rzeczywistości, można to zrobić też.
Mamy "google logo czcionki generator".
>> Zobaczmy, czy uda nam się to zrobić.
Dobra, myślę, że to jest strona użyłem.
Można powiedzieć, WE 10, na przykład, i uczynić je samodzielnie.
Możesz grać z tym cały dzień, a następnie kliknij prawym przyciskiem myszy na nim
a następnie pobrać aktualną GIF, który jest wszystkim, co zrobiłem.
I rzeczywiście, to dlaczego w moim HTML, przypominam, tu
Miałem tag obrazu, co widzieliśmy w zeszłym tygodniu na krótko
którego źródłem jest logo.gif.
I co znowu było motywacją do posiadania tego atrybutu alt,
ta alternatywa atrybut?
Tak.
[Niesłyszalne odpowiedź uczeń]
Dobra, tak naprawdę 2 powody, jeśli przeglądarka nie może ciągnąć się na obraz
bo masz wolne połączenie sieciowe lub obraz jest uszkodzony
lub coś w tym przynajmniej człowiek może zobaczyć "CS50 wyszukiwanie"
a także ze względu na dostępności.
Jeśli użytkownik, który jest niewidomy i korzysta z czytnika ekranu
a więc oczywiście nie można zobaczyć obrazy mogą przynajmniej
usłyszeć tekst, jeśli ich komputer mówi im.
>> W ogóle, to najlepiej jest, gdy chodzi o dostępności stron
tak że nawet użytkownicy w tej sytuacji można usłyszeć lub zobaczyć, że tak powiem,
co to jest to, że znajduje się na stronie.
Jest jeszcze jedna rzecz, że ja tutaj
co jest mało ciekawe, a my zobaczymy, więcej na ten temat problemu ustawić 7
poprzez jeden z szortów czele jednego z kolegów nauczania.
# Zawartość ale odnosi się do zmiennej
którego ID jest zadowolony, ale potem jest spacja, a potem jest wejście słowo.
Cóż, co ciekawe o CSS jest to, że można
odnoszą się do znaczników w rodzaju strony hierarchicznie
i co to urywek pomocą CSS jest znaleźć tag
którego ID jest treść, a następnie zastosować następujące właściwości
do wszystkich tagów wejściowych, które są potomkami treści
, że jest to, że są wcięte w jej wnętrzu.
Wcięcie, ponownie jest niezbędny do komputera, nie człowieka,
ale umownie możemy tiret rzeczy jak idziemy w głąb strony,
więc oznacza to zastosowanie margines 5 pikseli do każdego elementu wejściowego
że gdzieś w środku lub zagnieżdżone wewnątrz
Element, którego ID jest zadowolony.
>> Kto to się odnosi do?
Cóż, jest właściwie tylko te 2 facetów tutaj.
Zauważ, że we wnętrzu postaci tam 2 wejścia,
a nie było dla wszystkich tych przykładów.
Ale zauważ, że te 2 wejścia zdarzyć być zagnieżdżone wewnątrz,
choć trochę głębiej, a warstw kilku wcięć,
wewnątrz znacznika, którego ID jest zadowolony.
Co to znaczy?
Jeśli idziemy do przeglądarki tutaj można zobaczyć nigdy tak lekko-
pozwól mi przybliżyć, że jest trochę wyściółki między przyciskiem
oraz między polem tekstowym.
>> Pozwól, że chwilowo to wyłączyć.
Pozwólcie mi iść do mojego CSS, i pozwól mi iść do przodu i po prostu
zmienić ten margines z 5 pikseli na 0 pikseli.
Pozwólcie mi iść do przodu, a następnie i zapisać plik, przejdź do wyszukiwarki
i ponownie, i oglądać na środku strony.
Wszystko dostałem skompresowane razem, a kiedy pierwszy raz bita ten przykład up
Myślałem, że wyglądał głupio w polu tekstowym, a następnie przycisk bezpośrednio pod nim.
Chciałem pad to trochę, więc wprowadzono marże.
To, czego nie zrobi w wykładzie jest przejść przez kilkadziesiąt
Właściwości CSS, które istnieją, ponieważ, ponownie, są rzeczy takie jak rozmiar czcionki,
waga czcionki, margines, tekst wyrównać, i kilka innych, kilkanaście,
a my odsyłamy w problemu ustawić 7 różnych samouczków internetowych
i odniesienia, które pozwalają na odbiór tych rzeczy.
Ale to, co naprawdę ważne, na koniec dnia,
>> jest zrozumienie, jak te rzeczy są stosowane.
Ponownie, jeśli mamy wewnątrz znacznika style, których
może pójść selektorów, sortowanie identyfikatorów, które określają
, do których chcesz zastosować te właściwości,
a następnie umieścić właściwości jako kluczowy pary wartości
oddzielone dwukropkiem, a następnie zakończył się średnikiem,
czy można zgrać wszystkie tego i umieścić ją w osobnym pliku CSS
samym w sobie.
Wszystko w porządku, wszelkie pytania na temat koncepcji
lub duży obraz z CSS?
Będziesz znów widzieć go więcej w Pset 7,
ale będziemy to zwykle bardzo proste.
No? Dobrze.
To jest czas dla rzeczywistego języka programowania,
i wrócimy do odrobiny CSS w formie przykładu.
PHP jest faktycznie cudownie przystępny język
w tym, że jest prawie równoważne składniowo C.
Innymi słowy, jeśli znasz C, wiesz, w przeważającej części PHP,
przynajmniej składniowo, choć istnieją pewne nowe funkcje
i niektóre nowe koncepcje musimy patrzeć.
>> Jednak dla większości, teraz, że przejście z C do PHP
większość nowych rzeczy jest naprawdę wielki obraz,
jak używać języka do programu w sieci, w przeciwieństwie do
w wierszu polecenia lub w migający znak zachęty jak robiliśmy do tej pory.
Dla porównania, w szczególności z Pset 7 i końcowego nowszym projektu,
nie skorzystać z tego adresu tutaj, jeśli chcesz przeczytać na formalności PHP.
To faktycznie lubię darmowy podręcznik skutecznie,
i znajdują się także, że to co jest naprawdę miłe o PHP
jest to, że nie są setki funkcji się z nią,
natomiast w C, że nie muszą mieć dostęp do
więcej funkcji niż były w bibliotece matematycznej, CS50 biblioteka.
W PHP i wiele współczesnych języków, Python i Ruby wśród nich,
można uzyskać dostęp do wielu innych funkcji, co oznacza, że ​​można dostać się do pisania
dużo mniej kodu, bo można stanąć na barkach innych ludzi
którzy już napisane pewne rzeczy dla Ciebie.
>> Weźmy szybkie zwiedzanie składni PHP i następnie napisać kilka przykładów.
Co jest ładne o PHP przede wszystkim
jest nie ma główną funkcją.
Jeśli chcesz napisać program w PHP, po prostu zacząć pisać kod,
i nie trzeba się martwić o main.
Nie ma int. Nie ma powrotu.
Nie ma argv, argc, co niezbędne podczas pisania programu.
Raczej można po prostu zacząć pisać kod, a jest to po części
ponieważ PHP jest to, co się nazywa językiem interpretowanym.
C został skompilowany i została sporządzona w tym sensie, że rozpoczęcie
z kodem źródłowym, uruchom go poprzez Clang, który jest kompilator,
i ostatecznie po pewnej liczbie kroków otrzymasz kod obiektu, 0s i 1s.
PHP i Python i Ruby i Pearl i inni
Są różne rodzaje języków, w które nie opracowują je.
Nie idź z kodu źródłowego na 0s i 1s.
Wystarczy uruchomić kod źródłowy i uruchomić kod źródłowy
pisząc w zwykłym pliku tekstowym z rozszerzeniem. php w tym przypadku
zamiast. c, i to, co robi program na komputerze
jest to dosłownie interpretuje wiersz kodu przez linia po linii.
>> Innymi słowy, zamiast napisać program i uruchom program
bezpośrednio zamiast tego napisać program z plikiem z rozszerzeniem. php.
Następnie uruchomić program o nazwie php.exe rzeczywistej, jeśli używasz systemu Windows,
lub po prostu PHP, jeśli jesteś na Mac OS lub Linux,
i podać jako wejście do programu PHP własny kod źródłowy,
a jego celem w życiu jest, aby przeczytać szczyt kod do dołu, od lewej do prawej,
i robić, co pan powiedział to zrobić.
>> Zobaczymy, co to będzie oznaczać syntaktycznie.
W PHP mamy warunki.
Ten slajd jest identyczny do tego, co zobaczyliśmy w tydzień 1
bo składniowo warunki, IFS i else IFS i else w PHP
wygląda dokładnie tak.
Jeśli chodzi o obsługę wyrażeń boolowskich, że będziemy wyglądać dokładnie tak.
Jeśli chodzi o Anding rzeczy razem jako zmienne logiczne typu boolean to będzie wyglądać dokładnie tak.
Przełączniki wyglądają tak samo, a otrzymasz dodatkowe korzyści w PHP
że przełączniki w C może tylko włączać char lub int.
Nie można przełączyć na wartość ciągu.
W PHP można rzeczywiście mieć wyrażenie
że jest to zmienna, której zawartość jest string,
i rzeczywiście można zrobić porównania ciągów w rzeczywistym intuicyjny sposób,
nie porównania wskaźnik, w celu podjęcia decyzji, czy należy zrobić sprawę i lub j lub coś innego.
Zobaczymy, że potencjalnie przed długi.
>> Pętle zbyt cudownie są takie same.
Na pętle mają inicjalizacja, warunek i pewną liczbę aktualizacji.
Chociaż istnieją także pętle w PHP.
Zrobić, gdy istnieją także pętle w PHP,
a tablice istnieje w PHP, ale tu, gdzie składnia zaczyna się trochę inaczej,
ale pojęcia są takie same, zaś pojęcia takie same bardzo
jak były w 0 tygodniu z Scratch.
Przede wszystkim jest to znak $.
To był projekt decyzji w PHP przy czym każda zmienna
w PHP przez projekt rozpoczyna się znakiem $.
Nie ma więcej X, Y, Z. To teraz $ x, $ y, $ Z tylko dlatego.
To coś, o których warto pamiętać, a teraz na prawej stronie
to wygląda podobnie do tablicy,
ale jesteśmy w nawiasach kwadratowych, tutaj.
W PHP i JavaScript, a my w końcu zobaczyć,
zadeklarowania tablicy zrobić otwarty nawias kwadratowy i zamknięty nawias kwadratowy,
a potem masz oddzieloną przecinkami listę wartości, czy ints
lub ciągi znaków, lub cokolwiek chcesz, wewnątrz tego wyrażenia tam.
>> Teraz, jak robiliśmy coś takiego w C?
Co było składnia statycznie deklarując tablicę znanych liczb?
Było nawiasy klamrowe, tak niewielka różnica tutaj, ale w obu PHP
i ostatecznie JavaScript po prostu używa nawiasów kwadratowych, tak naprawdę
tylko Ciekawostką tutaj jest znak $ dla nazwy zmiennej
oraz nawiasy kwadratowe, a tam jeden Ciekawostką
, że został pominięty, a z lewej strony znaku =.
Czego brakuje, że już za tydzień wymaga teraz? Tak.
[Niesłyszalne odpowiedź uczeń]
Rozmiar, więc nie ma wzmianki o wielkości tablicy.
Prawdę mówiąc, nie ma żadnej wzmianki o nawiasach po lewej stronie
od znaku =, a co jeszcze brakuje linii?
Tak. >> [Niesłyszalne odpowiedź uczeń]
Typ, więc co jest interesujące w szczególności o PHP
jest to, że nie jest w silnie typami języka C,
i to zdecydowanie wpisane w tym sensie, że trzeba powiedzieć, char,
trzeba powiedzieć, int, musisz powiedzieć pływak.
>> Kiedy tylko chcesz zmienną musisz powiedzieć, co jej Clang typ.
PHP jest trochę leniwy.
Jest luźno wpisane w tym sensie, że
można mieć pływaków i znaków i ciągów
i ints i tak dalej, ale sam język
tak naprawdę nie obchodzi, co można umieścić wewnątrz zmiennej.
Nie musisz informować o tym wcześniej, jakiego rodzaju dane
będzie w zmiennej.
To zależy wyłącznie od Ciebie, więc to jest miły
na tym, że nie musisz się martwić, jak dużo o wpisanie danych
i niepokojące co twoje argumenty są i tak dalej.
Oznacza to również, ewentualnie PHP funkcje będą w stanie powrócić
albo int przez większość czasu, a może raz na jakiś czas
oni zwracają bool, logiczną false, na przykład oznaczać, że coś poszło nie tak.
To daje nam jakieś upsides, ale również będzie nas jakby przez projekt
trochę leniwy, jeśli chodzi o wpisywanie danych.
>> Co jeszcze jest, aby pamiętać, tutaj?
Zmienne wyglądają bardzo to lubi, więc $ s = "hello, world".
To może inferable z poprzedniego przykładu,
i mamy inny rodzaj pętli.
Ten będziemy rzeczywiście zobaczyć raz na jakiś czas, ponieważ jest to bardzo przydatny,
konstrukcji foreach.
W tym przypadku, wykonuje się wewnątrz pętli foreach jego nawiasów 3 słowa zazwyczaj
$ Najpierw coś, co jest, co tablica chcesz iteracyjne nad członkami,
następnie dosłownie słowo kluczowe jako, a następnie w końcu,
inna nazwa zmiennej, że masz do wyboru.
To może być foo, bar, lub element,
i to, co robi ten konstrukt
jest, jeśli $ tablica zawiera 10 elementów
na każdej iteracji tablica ta-przepraszam, na każdej iteracji tej pętli
Zmienna zwany element być aktualizowana
być pierwszy element tablicy, a następnie drugi element w tablicy,
wówczas trzeci element tablicy, tym samym unika się potrzeby
robić lekko irytujący kwadratowy notacji i wspornika
$ I aby wskaźnik do tablicy.
PHP to wszystko tej pracy dla siebie i na każdej iteracji
tylko da ci kolejny element z tablicy
bez konieczności wie lub dba o jej numerycznym indeksem.
>> I wtedy wreszcie, teraz, jest jeszcze jedna cecha PHP
że będzie to niezwykle przydatne, zwłaszcza kiedy rozpocząć programowanie w Internecie,
i że jest znany jako tablicy asocjacyjnej.
Tablice, które znamy do tej pory z 20 sekund temu
i przez ostatnie 8 tygodni indeksowane numerycznie tablice,
rodzaj tradycyjnych tablic gdzie wskaźniki są wskazówki,
0, 1, 2, aż do dnia.
Tablice asocjacyjne są dużo bardziej wydajne.
Pozwalają one mieć dowolne klucze,
arbitralne wskaźniki i arbitralne wartości.
Podczas gdy w tradycyjnej tablicy jest 0, 1, 2,
w tablicy asocjacyjnej można mieć indeks
lub klucz foo, którego wartość jest bar.
Następnie można mieć inny klucz, którego nazwa jest baz i których wartość jest qux.
>> Znowu głupie informatyka rodzajowe nazwy zmiennych tutaj,
ale chodzi o to, że ta tablica nie ma wspornika 0 lub wsporniku 1.
To zamiast będziemy mieć przerzutki foo i wspornik baz.
To jest dużo bardziej wszechstronny, że będziemy w stanie powiązać
słowa, innymi słowy, klucze z wartościami całkowicie arbitralnie,
a my będziemy w stanie uzyskać te wartości z powrotem w czasie stałym
bo pod maską co asocjacyjna
naprawdę jest to hash table.
Przypomnijmy, że hash table pozwala umieścić w jakimś wejściem
jak umieścić w słowa Dawida, jeśli chcesz wstawić Dawida w jakiś słownik,
a następnie wrócić jakąś wartość zazwyczaj.
W przypadku Speller, prawda czy fałsz.
David lub cokolwiek słowo jest lub nie jest w słowniku.
Asocjacyjna jest naprawdę tylko hash table,
ale jest znacznie bardziej przyjazny dla użytkownika wcielenie niego.
Jak zobaczymy, to będzie, co pozwala nam zrobić kilka rzeczy
bardzo, bardzo łatwo.
>> Rzućmy okiem na kilka podstawowych PHP
przykłady i zobaczyć, co możemy zrobić z tego języka.
Pozwólcie mi iść do przodu i otworzyć się w naszym katalogu źródłowego dziś
Plik o nazwie hello1.php.
Ten plik jest bardziej komentarz niż jest rzeczywisty kod,
więc pozwól mi faktycznie usunąć wszystkie komentarze z pliku
i obecnie do Ciebie chyba najprostszym programem PHP tutaj.
5 linii, a niektóre z nich są białe miejsca,
więc zauważyć kilka kluczowych różnic tutaj.
Plik nazywa hello1.php.
Pierwszy wiersz, choć jest <? Php.
W duchu podobnym do HTML,
że sekwencja znaków powoduje, że komputer
"Hej, komputer, oto program, w którym jesteśmy w PHP".
To sprawia, że ​​na pewno to nie mylić, że to jakiś inny język.
Linia 2 jest ciekawa biała przestrzeń.
Linia 3 to nasz stary przyjaciel printf,
tym razem w kontekście PHP.
PHP ma swoją wersję printf która zachowuje się dokładnie tak samo,
więc jest to po prostu będzie drukować "Hello, World".
A potem ta naprzeciwko tag tutaj>, oznacza, że ​​jest to dla mojego kodu PHP.
>> Przyjrzyjmy się, jak uruchomić to.
Mam zamiar wrócić do mojego okna terminala tutaj.
Mam zamiar iść do mojego PHP katalogu.
Zauważ, że mamy całą masę plików, pierwszy z nich jest hello.php.
Pozwólcie mi iść do przodu i uruchamiania tego, hello1.php, ENTER.
Permission denied. Okay.
W jaki sposób możemy ustalić takie rzeczy w przeszłości?
Co to jest? >> [Niesłyszalne odpowiedź uczeń]
Potrzebujemy do odczytu i zapisu, ale pozwól mi zrobić ls-l.
Zapamiętaj to trochę tajemnicze wyjście podstawie której hello1
wydaje się być do odczytu i zapisu przez mnie
ale odczytane przez każdy inny.
Okazuje się, to rzeczywiście nie jest to krok w dobrym kierunku.
Różnica, ponownie z interpretowanym języku
jest nie uruchomić program bezpośrednio.
Zamiast tego uruchomić tłumacza i oddać go kodu
że napisałeś więc może zinterpretować to linia po linii.
W tym przypadku interpreter lub program faktycznie chcę uruchomić
dosłownie nazywane PHP.
>> Gdzieś na dysku z urządzenia jest program
Ktoś inny napisał o nazwie PHP, lub Windows php.exe.
Co mam zamiar zrobić o to będę rzeczywiście uruchomić PHP
ale daj go jako argument wiersza poleceń kod, który napisałem,
i wtedy pomniejszyć i wciskamy Enter.
To działa mój program dla mnie, od góry do dołu, od lewej do prawej.
Pozwólcie mi iść do przodu i otworzyć lekkie odchylenia tego.
W hello2.php ogłoszeniu, że to zbyt
jest w większości komentarzy, więc pozwól mi się pozbyć tych, jako rozrywkę,
i co wyraźnie różni się o tym pliku?
Jest to nowa linia, trochę tajemnicze na szczycie.
W linii 1 to #! / Bin / php.
Bin jest konwencja na Linuksie i Mac OS dla plików binarnych,
tak / bin oznacza to folder zawierający kilka plików binarnych
, który jest zaprogramowany, z których jeden jest PHP.
#! nazywany jest shebang,
który jest szybki sposób na powiedzenie, i co to oznacza
jest to, że po uruchomieniu tego programu teraz jest wskazówka na początku pliku
które mówi komputerowi, co do korzystania z tłumacza.
>> Robi się trochę irytujące, jeśli trzeba było poinformować użytkowników i Twoi klienci
"Hej, napisałem ten program o nazwie hello1.php".
Wszystko co musisz zrobić, to zawsze uruchomić PHP, a następnie nazwę tego programu.
Szczerze mówiąc, to po prostu być lepszy do uruchomienia hello1.php,
i rzeczywiście, możemy, jeśli wykonaj następujące czynności.
Pozwólcie mi iść do przodu i robić ls-l, i zauważ, w hello2 to nadal tylko czytać pisać
a potem przeczytaj czytać, więc nie mogę jeszcze zrobić, hello2.php.
Ale to zawsze tak przedstawił krótko ostatni raz, polecenie chmod.
Jeśli zrobić chmod + x, co oznacza wszystkie plusa wykonalności,
a następnie hello2.php a następnie wykonaj ls-l ponownie zauważyć, co zmienić.
One, Linux pokazuje mi nazwę pliku, w zieleni, aby przekazać ideę
twierdzą, że plik wykonywalny, ale co ważniejsze, po stronie lewej
zauważyć, że bit reprezentujący x dla pliku wykonywalnego został ustawiony.
Co to oznacza teraz to mogę uruchomić ./hello2.php jak zwykle,
wcisnąć klawisz enter, a ze względu na shebang na samej górze pliku
To wskazówka, ponownie, do Linuksa, który mówi
używać tłumacza, aby uruchomić ten plik.
Nie martw się o zmuszanie użytkownika do faktycznie wpisywać.
>> A co jest ładne to to rodzaj znaczenia dla moich klientów lub moich znajomych
jaki język Napisałem ten program w, więc mogę iść do przodu z mv
i zmienić tę rzecz do hello2, na przykład.
A teraz, jeśli mam zrobić ./hello2
i pomniejszyć mój program nadal działa.
Te rozszerzenia plików są ludzkie konwencja jest konieczne
na coś takiego i zrobić Clang którzy patrzą na nich.
Ale dla PHP, można nazwać to coś rozszerzenie pliku chcę.
Mógłbym oszukać świat do myślenia, że ​​jestem naprawdę dobry w Ruby,
i mógłbym napisać hello2.rb a następnie uruchomić tego
i voila, teraz mam wersję Ruby, który jest kompletnym kłamstwem.
Ale rozszerzenia plików są bezsensowne
jeśli plik jest wykonywalny i ma tę szczególną wskazówkę na początku pliku.
>> Teraz, jak na bok, pokażę Ci szybko wersję 3,
który jest rodzajem użytecznego sztuczki wiedzieć.
W hello3 zrobiłem coś nieco niewłaściwy
że będę aktualizować w Internecie kodu źródłowego.
W wersji 3 Okazuje się, że na większości komputerów linuksowych
istnieje program o nazwie env dla środowiska,
i co można zrobić, o to, jeśli nie masz pojęcia, gdzie PHP
jest zainstalowany na lokalnym dysku twardym, bo rzeczywiście może to zależy od komputera
że ktoś używa, env prostu mówi env,
który jest na większości systemów, i dowiedzieć się, gdzie PHP jest.
Tylko sztuczka wspólne więc nie musisz się martwić o znalezienie się, gdzie program jest.
Ale jeśli nie uważać, aby dowiedzieć się, gdzie program jest i nie obchodziło dotąd
można użyć, które cieszą.
>> Pozwól, pomniejszyć i typu, które php,
i zauważ, to mówi mi, że to faktycznie w usr / bin / php.
Jest to rodzaj kłamstwa. Jest to także w kosza.
To tylko pokazuje mi pierwsze trafienie.
Jeśli kiedykolwiek zastanawialiście się, gdzie jest Clang, które Clang, to w usr / bin / dzyń,
które sprawiają, usr / bin / zrobić, a co to oznacza to cały czas
Mogłeś być wpisanie usr / bin / dzyń dzyń wprowadzić do uruchomienia,
ale to trochę uciążliwe, aby to zrobić, więc niektóre foldery
jak usr / bin i bin są traktowane jako domyślne
więc komputer wie, szukać w nich dla Ciebie.
Wszelkie pytania dotyczące pisania super, super proste Hello World
w PHP, a następnie uruchomić go?
Bo teraz zaczniemy wprowadzać bardziej przekonujące składni.
Dobra, jedziemy.
Programy te widzieliśmy w rzeczywistości wszystkie z nich wcześniej.
>> Jeśli otworzyć się, na przykład, zróbmy beer1.php,
nie przechodzi przez kilka wersji, ale to, co zrobiłem
została usiadłem i wylał ją lub przekształcone
mój kod C do kodu PHP, tutaj.
Większość z góry pliku jest komentarzy tutaj.
Okazuje się, że jedna nowa funkcja o nazwie readline musimy.
GetString, recall, począwszy od tygodnia 0 był CS50 rzeczą.
PHP posiada własny przyjazny dla użytkownika funkcji o nazwie readline
, który ma 1 argument, który określa polecenia
że chcesz pokazać użytkownikowi, a co robi readline
jest to zwraca co użytkownik wpisze w.
W tym przypadku, jestem deklarując zmienną o nazwie $ n.
Jestem przechowywania w nim wartości zwracanej readline
po proponując użytkownikowi tego łańcucha.
Wystarczy kopii zapasowej, aby faktycznie uruchomić tę rzecz, pozwól mi iść do przodu
i uruchomić beer1.php php.
Ile butelek czy będzie? Zróbmy 2 tym razem.
Enter. To wszystko.
>> Program jest funkcjonalnie identyczne do wersji C z tydzień temu.
Ale składniowo zobaczmy, co się zmieniło.
Po tym, jak dostać int od powiadomienia użytkownika, że ​​robię sprawdzanie błędów,
a jeśli n jest mniejsza niż 1 rzuciłem i wydrukować
Przepraszam wiadomość do użytkownika i wyjeździe z 1.
To też jest trochę inaczej.
W C, co zrobiliśmy? W C wróciliśmy 1.
W PHP można wyjść z 1, który jest szczerze myślę trochę bardziej intuicyjny
bo jesteś dosłownie opuszczania programu.
Wszystko w porządku, a potem tu irytujące piosenki jest identyczny składniowo
wyjątkiem zmiennej, więc tutaj w linii 24 i nowsze
dostrzega moje dla pętli jest prawie taka sama,
ale mam $ przed I i N,
a co brakuje również z linii 26, które mieliśmy w przeszłości
podczas deklarowania zmiennej i?
Nie ma typu.
Błędne jest w PHP powiedzieć int.
Po prostu nie trzeba tego robić.
Komputer, interpreter PHP jest wystarczająco inteligentny, aby zrozumieć
że jeśli umieścić numer w $ I będzie traktować
jak numer dla Ciebie.
A następnie w dół tu wtyczka w $ i, $ i, $ i - 1.
Wszystko to jest tak samo, a potem tu robimy "Wow, to jest irytujące" printf
i wyjdź (0).
>> Ponownie, jest to, że na wynos choć mamy zamiar spędzić stosunkowo
mało czasu na PHP, na pewno w porównaniu z tego, co zrobiliśmy na C,
to prawie to samo, a więc to, co będziemy robić dziś i następny tydzień
i poza nią jest naprawdę skupić się na niektóre z nowych pomysłów.
Wystarczy zobaczyć, że jedna rzecz nie przekłada się od C,
to był bardzo prosty program, my w tygodniu 1
lub 2, że wartość kostkę.
Ale to, co było interesujące w tym czasie o tym programie jest to, że
wprowadził pojęcie funkcji niestandardowej pisemnej, że my sami napisał.
Składnia PHP jest prawie taka sama.
Oto mój program do góry.
Zauważcie nieobecne jest jakiekolwiek pojęcie main.
Zaczynam pisanie kodu, a to, co się zostanie wykonany przez interpreter.
Mogę wydrukować wynosi teraz 2, prawdopodobnie.
Potem twierdzą cubing ...
Wtedy wywołanie funkcji modułu i przejść w $ x
i przypisać zwróconą wartość do $ x.
Potem twierdzi, że to jest do sześcianu, a potem powiedzieć, że to, co mam nadzieję, że
powie wynosi teraz 8.
Składnia funkcji w PHP jest bardzo nieznacznie inna.
Znowu brakuje to typ zwracany.
Znowu brakuje jest zwracany typ a także brakuje co innego typu?
[Niesłyszalne odpowiedź uczeń]
No dobrze, to dobrze. Wróćmy do tego za sekundę.
>> Nie ma, na przykład, o int.
Nie, na przykład dlatego, że tutaj int znowu w PHP
po prostu nie trzeba i nie należy, że
ale raczej nie ma to nowe hasła nazwie funkcji.
W PHP jest to prawie trochę jaśniejsze, bo kiedy chcesz funkcji
dosłownie znaczy funkcji, nadać mu nazwę, a następnie listę oddzielonych przecinkami
jeśli którekolwiek z jej argumentów.
Nie trzeba mówić nieważne, czy coś takiego, a potem powrót jest taki sam,
$ * $ * $.
Co jest również brakuje? Sammy wskazał to tutaj.
W górnej części w pliku PHP nieobecne prototyp jest również.
To też jest zgodne z projektem.
Języki i tłumacze jak PHP są lepsze niż C kiedykolwiek
w kompilatory jak Clang.
>> Przypomnijmy, że brzęk, jeśli nie powiedzieć, to w ten sześcian istnieje,
jeśli nie powiedzieć to, że printf istnieje jako z prototypem
lub # include, dobrze, że to będzie krzyczeć na ciebie, a nie nawet skompilować kod.
PHP i bardziej nowoczesne języki są dużo lepsze, jeśli chodzi o to.
Wezmą na siebie na przeczytanie wszystkich kodów
i krzyczeć na ciebie tylko wtedy, gdy uzna, nigdzie kostki.
To nie ma znaczenia, czy kostka jest na dole lub na górze, a nawet w jakimś oddzielnym pliku.
PHP i podobne języki są teraz na tyle sprytny, aby spojrzeć w przyszłość
na wszystko przed uznając Cię jako popełnienia błędu.
Gdzie to nas opuścić?
>> Zróbmy jeden ostatni przykład tutaj, w warunkach,
i jeśli mogę otworzyć conditions2.php anons zbyt
syntax jest prawie taka sama.
Używam readline zamiast getString, ale linia jest taka sama jak wcześniej,
"Chciałbym całkowitą proszę."
Mam następnie if warunek else if, a potem jeszcze,
ale funkcjonalnie program ten jest również identyczna, co zrobiliśmy tydzień temu
więc jeśli mogę uruchomić tę rzecz, php, z conditions2
i nadaje jej numer np. 23 -
Wybrałem liczbę dodatnią. Jeśli dam to -1 wybrałem ujemną.
Jeśli dam to 0 I rzeczywiście wybrał 0.
Więc, kto troszczy się o to wszystko?
Cóż, jeden z zabawy w rodzaju ćwiczeń tutaj
przynajmniej dla mnie było, aby wrócić i zobaczyć jak szybko mogłaby wdrożyć Pset 5,
pset ortograficzne.
Przypomnijmy, że był to plik o nazwie speller.c,
i był tam plik o nazwie dictionary.c.
Co zrobiłem było I rodzaju spędził kilka minut i przekształcić kod C
do kodu PHP, a my nie będziemy spędzać dużo czasu na Speller
bo tak jak w zbior 5 tak naprawdę nie trzeba
spędzają dużo czasu na samą Speller ponieważ uwaga była na słowniku.
>> Wystarczy powiedzieć, że jeśli przeczytać Speller,
ten plik tutaj, to dość dużo odpowiednikiem kodu C
daliśmy za Pset 5.
Właśnie dodałem trochę $ w miejscach.
Zmieniłem niektóre nazwy funkcji, jeśli nie istnieje w PHP.
Jest jeszcze jedna dodatkowa rzecz tutaj, preg_match,
który jest trochę bardziej elegancki sposób robienia czegoś, ale wrócimy do tego w końcu.
Ale w skrócie, ortografii jest niemal identyczne, a jeśli spojrzeć na samym dole
co to w końcu wypluwa to jest tutaj,
słowa błędnie, słowa w słowniku, słów w tekście.
Dobra, więc co ciekawe teraz jest następujące.
Na górze mojego pliku jestem wymagająca dictionary.php.
Podobnie jak C jest # include PHP posiada specjalną funkcję o nazwie wymagają
że prawie robi to samo, wymagają plik o nazwie dictionary.php.
Jak można przejść o implementowaniu Pset 5?
Pozwólcie mi iść do przodu i otworzyć plik tutaj.
Pozwól mi zająć trochę odniesienie tutaj.
I pozwól mi utworzyć nowy plik i rozpocząć wywołanie tej dictionary.php.
Powiem to w innym folderze, więc możemy to zrobić na żywo.
A teraz będę powiększyć
Mam zamiar rozpocząć mój plik PHP z otwartym uchwytem php zamknięty uchwyt.
I wtedy tu było kilka funkcji musiałem wdrożyć dla Pset 5,
więc zacznę od realizacji niektórych z nich,
więc kontrola funkcjonowania, która miała podjąć słowo jako argument.
Zrobimy to i wrócić do niej w jednej chwili.
>> Nie było obciążenie funkcja, która miała w czym jako argument?
Słownik, więc plik, że faktycznie chciał załadować.
Było rozmiar funkcja, która nie miała żadnych argumentów
i nie było funkcja-co było inne?
Zwolnij, która nie miała żadnych argumentów, albo.
Są to 4 funkcje, które muszę teraz wdrożyć w PHP,
i co mam zamiar zrobić, to zrób to.
Wielu z was używał tabeli mieszania w Pset 5,
więc pozwól mi iść dalej i utworzyć tabeli mieszania w PHP.
Gotowe.
To daje mi tabeli mieszania. No, dlaczego?
One, zmienna o nazwie $ table, żeby wyczarować pomysł tabeli mieszania.
Nawiasy kwadratowe, choć przypominam, reprezentują co?
Tablicy, ale w tablice PHP nie muszą być indeksowane numerycznie.
Mogą to być również tablice asocjacyjne,
co oznacza, że ​​możesz mieć dowolne klucze i wartości.
>> Podobnie jak w zbior 5, ci z was, którzy nie hash implementacje tabeli
pewnie wstawione słowo, a następnie umieszczono je w łańcuchu połączonych list,
lub przechowywane wartości prawdziwej gdzieś, czy coś w tej sprawie.
Jakoś pamiętać, że słowo było.
Teraz, że to będzie mój hash table,
i tak teraz go o realizacji funkcji wyboru
Po prostu trzeba zajrzeć do tej tabeli mieszania
i sprawdzić, czy słowo ma.
Co mam zamiar zrobić, to mam zamiar powiedzieć, czy-
powiedzmy isset, która jest funkcja PHP, która dosłownie oznacza po prostu jest zestaw kluczy,
tak isset ($ tabela [$ word]
a jeśli tak, zwraca true.
To jest to. To pset 5 w PHP.
Cóż, w uczciwości, w porządku.
Else return false, więc to nie ma.
Co naprawdę się dzieje?
Cóż, jeśli stół lub hash tutaj bardziej ogólnie
jest tablicą asocjacyjną, która oznacza, że ​​można do niego index
słowem, jak "słowo", a trzeba wrócić jakąś wartość.
>> Jesteśmy trochę się o jeden krok przed siebie.
To byłoby miłe, jeśli faktycznie załadowana najpierw plik,
więc obciążenie nie jest tak proste, ale pozwól mi iść do przodu i wzbudzać
naprawdę szybkie wdrożenie obciążenia.
Pozwól mi iść dalej i powiedzieć słowa dostaje słownik pliku.
Funkcja plików w PHP otwiera plik
i wraca do ciebie tablicę wszystkich słów w tym pliku,
tylko podaje je do Ciebie.
To był duży ból też, prawda?
Teraz foreach, to jest nasz nowy konstrukt, foreach ($ wyrazy jak $ słowo).
Ta pętla ruszy iterowanie słowa tablicy
i przypisać do zmiennej $ słowo każde słowo w pliku
z pierwszego do drugiego i trzeciego w czwartej całej drodze
więc nie trzeba robić irytujące [i] zapis i tym podobne.
I co mi po prostu zrobię dla każdego z tych słów
jest przechowywać go w moim stoliku indeksowania do tabeli
a następnie robi prawdziwe, ponieważ pamiętać
że słowo jest w moim słowniku wszystko co naprawdę trzeba zrobić
jest rodzajem przerzucić trochę i powiedzieć, że to słowo w mojej tabeli mieszania jest tam, prawda.
A jeśli go nie ma, to nie trzeba jawnie umieścić fałszywe,
inaczej musiałbym postawić false dla wszystkich możliwych słów w wszechświecie.
>> Wystarczy dla mnie tylko, aby ustawić wartość indeksu
true, jeśli słowo jest rzeczywiście w mojej tabeli mieszania.
Teraz jestem cięcia parę rogów tutaj będę machać rękami na teraz,
ale teraz funkcja obciążenia jest wykonywana.
Załadować wszystkie słowa z pliku do tablicy.
I iteracyjne nad tej tablicy i dla każdego słowa w tablicy
Podłączam go do mojego tabeli mieszania z 1 linii kodu.
To jest zabawa. Wiesz jak możemy realizować rozmiar teraz?
Cóż, rozmiar jest zawsze bardzo proste, w uczciwości.
Tutaj właśnie należy zwracać liczbę tabeli.
To całkiem łatwe, policzyć rzeczy w tabeli.
To właściwie rodzaj nie jest najbardziej efektywny.
Chyba powinienem mieć zmienną wielkość więc możemy to zrobić
w stałym czasie, ale jest to całkiem proste.
Oh, a następnie zwolnić, jeśli naprawdę chcemy być tutaj anal
możemy powiedzieć, że to, w jaki sposób rozładować coś.
Wystarczy ustawić zmienną równą pustej tablicy,
i pozbywa się wszystkiego, co było.
Nie trzeba dzwonić za darmo.
>> Znowu mam wyciąć kilka zakrętów, i przepraszam za zestaw przypisywania problemu 5
chyba w C, ale jeśli teraz idź i uruchomić to,
Zamierzam rzeczywiście uruchomić wersję, że napisałem wcześniej
właśnie tak, że nie popełniłem żadnych błędów składniowych w ogóle.
Pozwólcie mi iść do przodu i uruchamiania Speller. Wykorzystanie jest takie samo.
Tutaj jest plik słownika, który właśnie zawiera słowo foo.
Tutaj jest plik tekstowy, który zawiera tylko foo bar.
Chodźmy sprawdzić pisownię tego, więc Speller, przy użyciu tego pliku słownika na tym pliku tekstowym.
Jest jeden błędnie napisane słowo, bar, i voila.
Sporządzono z Pset 5.
Zróbmy sobie 5-minutową przerwę, tutaj, i wrócimy i nie tylko na PHP.
Dobra, jesteśmy z powrotem.
Zróbmy-Nienawidzisz mnie na chwilę.
Zróbmy teraz faktycznie zobaczyć, czy to nie był pozytywny
faktycznie realizacji tej rzeczy w PHP.
To prawda, zajęło 45 sekund do wykonania.
>> Ale wróćmy teraz do przodu i uruchamiania rzeczy.
Pozwól mi iść dalej i uruchomić wersji C
z Speller, a my uruchomić go na jednym z największych plików,
co jest Biblia Króla Jakuba.
I tak o to w-chodźmy do naszego folderu C,
ortografii na króla Jakuba 5-ga.
Wielu błędnie napisanych wyrazów.
Okay, więc to, że prawdopodobnie masz wyjścia, nawet jeśli czasy są trochę inaczej,
jeśli masz wszystko działa prawidłowo, a więc czas, w sumie, aby sprawdzić pisownię
Biblia Króla Jakuba był 0,38 sekundy, więc dość dobre użyciu tego wdrożenia.
Teraz pozwól mi przejść do wersji PHP, który właśnie napisał.
Pozwólcie mi biegać Speller na króla Jakuba.
Ups, zignorować ten błąd. Jestem w złym katalogu.
Speller na króla Jakuba 5-ga.
Prawie gotowe.
>> Okay, bystry obserwator sobie sprawę, że było więcej niż 3 sekundy tam.
To jest prawda, czas pracy.
Okazuje się, że potrzeba czasu, aby splunąć dużo tekstu z
z powodu buforowania kwestii, ale długie opowiadanie,
to był 3,15 sekundy czasu maszyny, czas procesora,
wobec tego, co było przed chwilą?
Jak 0.3.
Mam na myśli, że to rząd wielkości wolniejsze, więc gdzie to jest
śmieszne spowolnienie pochodzi?
Cóż, tak jak to miało miejsce w przypadku niemal każdej decyzji projektowych zrobiliśmy
w klasie w ciągu ostatnich 9 tygodni nie ma prawie zawsze ten kompromis.
Czasami między tylko przestrzeni, czasami między czasie i przestrzeni,
Przestrzeń, czas i wysiłek na rzecz rozwoju, a nawet tutaj, nawet jeśli
zaoszczędziliśmy mnóstwo czasu, może potencjalnie 20.10.30 godzina
czasu rozwoju wykonawczej do sprawdzania pisowni
przez biczowanie go w zaledwie 45 sekund z tego języka
Cena zwracamy jest to, że aby z wolniejsze w wyniku,
i jest to zazwyczaj w przypadku większości dowolnym języku interpretowane,
PHP, Python, Ruby, Pearl lub inne, zgodnie z którą
jeśli masz zamiar go uruchomić przez tłumacza i go odczytać kod
linia po linii, od góry do dołu, od lewej do prawej,
że pośrednik zajmie trochę czasu, własne,
i co czuli tutaj w 3 sekundy, w przeciwieństwie do 0.3 sekund
jest fakt, że nie jest to pośrednik, który ma dosłownie interpretują nasz kod
linia po linii, a broń Boże, jeśli jesteś wewnątrz pętli
z ogromnym pliku zawierającego setki tysięcy słów.
>> Że narzut będzie dodawać i dodawać i dodawać i dodać.
Narzędzie, jak to prawdopodobnie nie jest najlepszym językiem, aby użyć do implementacji
sprawdzania pisowni czy bezpośredniości jest interesujące dla użytkowników i dla ciebie.
Ale luksus mamy w tej chwili jest, jeśli
używać języka jak PHP lub wiele języków tłumaczeń
w ramach sieci, o to chodzi, masz korzyści
że internet jest dużo wolniejsza niż większości komputerów.
Masz GHz CPU w komputerze, 2 GHz, a może nawet więcej tych dni.
Ale rzeczywistość jest w Internecie istnieje duża ilość opóźnień
przy czym dla przeglądarki, aby porozmawiać na serwerze, chociaż widzieliśmy w zeszłym tygodniu
, że to jest dość szybko, pół milisekundy lub tak,
że zbyt dodaje się, a jeśli ściągniesz rzeczy, jak na obrazku
lub zdjęcia Facebook lub uzyskanie wiadomości na paplaniny Facebook
Gchat lub podobne, wszystkie te czasy podróży
między przeglądarką a początkiem serwera zsumować,
co sprawia, że ​​wybór danego języka, w wielu przypadkach
nie wszystko, co istotne, a więc jesteś w porządku z wykorzystaniem nieco wolniejszy język
jak PHP lub Python i Ruby
ale dla których istnieją ogromne upsides do ty i twoi koledzy
i znajomych, ponieważ można wdrożyć rzeczy tak o wiele szybciej.
A poza tym, masz o wiele mniejsze ryzyko niektórych wad bezpieczeństwa.
Nie ma żadnych wskazówek, w PHP.
Nie ma seg usterek, które można łatwo indukują
w ten sam sposób, w jaki mógłby w C.
Z C, że jesteś bardzo blisko sprzętu.
Z języków PHP i podobna jesteś jakby wyższym poziomie, że tak powiem,
z dużo obrony między tobą, a co faktycznie dzieje
wewnątrz maszyny, i to tylko kompromis.
>> Musimy zdobyć do punktu obecności tych bardziej nowoczesnych, języków wysokiego poziomu
jak PHP, ponieważ z wniosków wyciągniętych w językach takich jak PHP, w C.
Ale jeśli nie rozumieją, co się dzieje pod maską cały czas
na pewno nie można podejmować właściwe decyzje projektowe,
i na pewno, jeśli chodzi o pracę w miejscu, takich jak Facebook czy Google
lub w tych miejscach, które są coraz bardziej gry z zestawów danych dużych
nawet jeśli wrócę i nie premed i pracuje z pewnym MD
na niektórych dużych zestaw danych z udziałem pacjentów i lekarzy
i jak za pomocą odpowiednich narzędzi, jest niezwykle atrakcyjne
bo w przeciwnym wypadku analiza pewnego zbioru danych może trwać sekundy,
lub może to dosłownie wiele godzin.
To tylko jeden przykład, nie naruszyć Ci jak wiele więcej wysiłku
było to w C, ale aby pomóc Ci zrozumieć, że kiedy się zaimplementować coś w C
naprawdę zrozumieć, czy w teorii, naprawdę zrozumieć
jak wszystko jest i powinno działać, i masz prawie pełną kontrolę
nad tym, co się dzieje pod maską, a także z tych języków na poziomie wyższym
musisz zrezygnować z większą kontrolę nad ludźmi, którzy je wymyślili
i podlegają bardziej do ich decyzji projektowych niż twoje.
Ale jeśli przyjąć, że wydajność
nie jest tak ważna w sieci z powodu tych innych sprawach,
zaledwie prędkości sieci są nieco wolniejsze niż prędkość CPU tak,
abyśmy mogli sobie pozwolić na korzystania z nieco wolniejszym język
jeśli upsides to możemy rozwijać rzeczy 10 razy szybciej, a nawet więcej.
>> Zobaczmy, jak możemy zacząć korzystać z tego.
Pozwól mi iść do folderu
wśród dzisiejszych przykładów nazywa frosh.ims,
i to było rzeczywiście osobiście motywowane faktem, że pierwszą rzeczą,
Napisałem dla WWW lata temu po zażyciu CS50 i CS51
była strona programu IM Frosh, Freshman stacjonarne sport,
, które w tym czasie był wystarczająco lat, że w czasie
nie było strona internetowa programu, mimo, że było Web,
i zamiast tego był proctor w Wigglesworth której gdybyś
zarejestrować się w siatkówkę lub piłkę nożną lub cokolwiek chcesz wypełnić kawałek papieru.
Będziesz wtedy przejść przez podwórko.
Wtedy możesz pukać do ich drzwi i zjeżdżalnią w ich drzwi lub rękę do Proctor
kawałek papieru z nazwą na nim, czy nie chcesz być kapitanem zespołu,
Jaki sport chciał zrobić, i co dorm byłeś w.
To było coś w rodzaju starej szkoły sposób robienia rzeczy, i to było głównym
okazja, aby zautomatyzować wiele tego procesu.
Wystarczy wejść na stronę. Wpiszesz coś w.
Otrzymasz e-mail z potwierdzeniem, a boom, jesteś skończony.
>> To była pierwsza rzecz, którą zrobiłem, choć w języku zwanym Pearl,
ale jest to stosunkowo łatwe do wykonania w PHP, i to jest coś w rodzaju przedstawiciela
problemów można rozpocząć rozwiązywanie kiedy można wyrazić siebie
programowo i nie liczyć na takie rzeczy jak stron Google
lub Excel lub narzędzi, które są przekazywane do Ciebie.
Chłopaki mają teraz możliwość, aby robić rzeczy jak to.
To jest bardzo brzydkie wersja postaci
ale niech po prostu użyj go na początku rozmowy, zgodnie z którą jest to
z grubsza to, co postać wyglądała jak rok temu dla nas
aby ludzie w sieci, aby się zarejestrować Frosh IM.
Poprosiliśmy o nazwie, a pole wyboru, czy chcą być kapitanem,
mężczyzna czy kobieta, i co wtedy byli w akademiku,
i wtedy oni wysłać formularz.
Niech najpierw sprawdzić pod maską na HTML, który reprezentuje ten serwis.
Pozwólcie mi iść do froshims0,
i tak na marginesie, dla zbior 7 biorę za pewnik
katalogi i foldery, które Kładę rzeczy w.
Będziemy Cię przez dokładnie, gdzie rzeczy musi pójść w urządzenie,
jakie komendy mod musisz uruchomić, więc nie martw się o wszystkich
głupie szczegóły synchronizacji od get-go tutaj.
>> Dobra, tu jest froshims0.php.
Pozwól, przewiń w dół, a co ciekawe tutaj
jest to plik PHP, ale to co jest w środku niej, wyraźnie?
To jest całe mnóstwo HTML, i rzeczywiście, PHP Początki
naprawdę były za to Web-centric język.
Chwilą użyliśmy go do wdrożenia przykład piwa,
warunki przykład cześć przykład, i to dobrze.
Możesz użyć PHP jako języka skryptowego
gdy skrypt jest naprawdę tylko nazewnictwo podane do programu szybkiego i brudne
lub coś, co można pisać w skryptów lub bardziej ogólnie o języku interpretowane.
PHP jest bardzo przydatna do tego, bo widziałem, jak szybko
stosunkowo możemy wzbudzać programów w PHP.
Ale naprawdę przeznaczone do stosowania w sieci,
, przeznaczonych do sieci w tym sensie, że tu zauważyć na początku pliku
Mam zacząć <? Php.
Potem mam kilka niepotrzebnych komentarzy, przyznane, ale następnie zamknąć tryb PHP.
Ale potem wpaść do trybu HTML.
>> Co ciekawe o PHP to nawet jeśli plik ma rozszerzenie. Php
Jest to generalnie ma być wymieszane z HTML,
jakiś kod PHP, niektóre HTML.
I zobaczymy, w końcu, że możemy zacząć drażnić tych, oprócz
i utrzymać nasz HTML oddzielony od naszego PHP całkowicie,
ale początki PHP naprawdę było dać tej elastyczności,
że jeśli chcesz niektóre HTML wystarczy napisać, i że będzie
wypluć identycznie w przeglądarce.
Ale jeśli potrzebujesz trochę techniki programowania,
niektóre kodu programowania, można także umieścić go w tym samym pliku, dokładnie, jak się wkrótce przekonamy.
Tu jest mój HTML.
Mam tytuł to dla Frosh IM.
Mam znacznika body, który dostał kilka CSS na nim wszystkiego centrum w środku,
i tu mam formularz, który najwyraźniej ma zamiar złożyć
do nowego pliku o nazwie register0.php, więc widzimy, że w jednej chwili.
Jest metodą, która po nazwie wrócimy, jak również.
Potem mam kilka wejść tworzy, jeden o nazwie name, którego typem jest text,
ten, którego nazwa jest kapitanem, którego typ jest checkbox,
a to, że nie widziałem go wcześniej, ale robi dokładnie to co mówi.
Otrzymasz wyboru zamiast pola tekstowego.
Tu masz opcję, która jest jedną z tych okrągłych przycisków
że możesz wybrać ten lub że jedno.
>> Zauważ, że to celowe, że dałem obu przycisków radiowych nazwę płci.
W ten sposób można uzyskać wzajemne wykluczanie w którym musisz kliknąć
albo to, że jeden lub jeden, i inne kliknięcie
to unchecks inne, więc trzeba dać im tę samą nazwę
jeśli chcesz, żeby się wzajemnie wykluczać takiego.
A następnie na akademiku, nie sądzę, że to jeszcze nie widziałem, ale to jest wybór menu, rozwijane menu.
Tag bo to select.
Następnie dać menu rozwijanego nazwę,
i wtedy masz całą masę tych opcji.
Pierwszy z nich, tylko dla estetyki, jest pusty.
Chciałem tylko rozwijane być domyślnie puste,
i potem jest Apley, Canaday, Grays, i tak dalej.
I zwróć uwagę na dychotomię tutaj.
Opcja w rozwijanym ma wartość,
ale ma nazwę przyjazny człowieka, który w tym przykładzie
jest identyczna, ale jeśli naprawdę chce być anal mogliśmy
Wartość tej rozwijanej być tylko wersja skrócona,
Grays, ale możemy naprawdę powiedzieć Grays Hall że ludzki rzeczywiście widzi,
ale to nie wszystko, co ciekawe, więc po prostu ciągle to proste i uczynił je identyczne.
Następnie w dół na dole mamy przycisk Submit
co widzieliśmy wcześniej, ale zauważ, Właśnie dałem mu inny wyraz.
Zamiast CS50 wyszukiwanie dałem etykietę "Register".
>> Wynik końcowy jest ta strona tutaj, i jeszcze raz,
skąd to się przedłożyć?
To staje się złożone w jakimś pliku, wartość atrybutu akcji,
który był register0.php.
Zobaczmy, co faktycznie dzieje się tutaj.
Pozwól mi iść dalej i wypełnij ten formularz, powiedzieć David,
mężczyzna, Matthews, a następnie powiem zarejestrować.
Pozwól oddalić i kliknij zarejestruj.
Ok, więc niby nic, ale zobaczymy, co się rzeczywiście dzieje.
Zauważ, że adres URL zmienił się register0.php.
Co to jest dziwnie nieobecny w adresie URL, ale, mimo że właśnie złożył formularz?
[Niesłyszalne odpowiedź uczeń]
Dobrze, że to tylko Chrome jest przyjazny dla użytkownika w tych dniach.
To faktycznie istnieje. Oni po prostu ukryć, aby zaoszczędzić miejsce.
Ale dobre myśli, dobre myśli.
W kierunku do drugiego końca URL, jednak brakuje co? Tak.
[Student] query string.
Query string, więc przypominam od naszych prostych przykładów wyszukiwania Google.
Jak tylko kliknij przycisk Submit URL
zabrał mnie do Google, ale wtedy nie było? q = ekonomia lub cokolwiek wpisał w.
To dlatego, że stosowane metody GET na przykładzie wyszukiwania.
>> Tym razem za pomocą jakiej metody zamiast?
Pisać, jeden z bezpośrednich wyróżnień
między GET i POST, że post nie umieścić wprowadzane przez użytkownika w adresie URL.
Ukrywa go. Nadal wysyła go.
W rzeczywistości, to co widzimy w przeglądarce, tutaj, jak się ujawnić w chwili
patrząc na register0 jest Ja tylko zobaczyć zawartość
z tablicy, które zostały przedłożone z przeglądarki do serwera.
Ale URL nie posiada?, Nie ma żadnych słów kluczowych
lub wartości w nim, a to dlaczego?
Cóż, po pozwala nadal przesyłać dane z formularza do serwera,
ale nie umieścić go w URL, więc jaki rodzaj informacji jest post
szczególnie odpowiedni dla być może, gdy jesteś z prośbą o
wpisz w wejściu do formy?
Coś jak hasło, coś, co jeszcze?
Numery kart kredytowych.
Wszystko, co znajduje się średnio wrażliwe pewnie nie chcesz kończący się w adresie URL
choćby dlatego, że oznacza to, że twój współlokator lub członek rodziny może po prostu troll przez
historia Internetu, a następnie dosłownie zobaczyć hasła,
dosłownie zobaczyć swoje numery kart kredytowych, ponieważ większość przeglądarek
Pamiętam, jak w historii, co używać byłaś przy,
więc jeśli tylko dlatego, że byłby to zły pomysł.
Korzystanie skór post, który szczegółowo od użytkownika.
>> Ponadto, jak można przesłać zdjęcia do Facebook?
Cóż, tylko 2 mechanizmy naprawdę można użyć,
choć jest kilka innych, bardziej tajemnicze nich jest GET i POST.
Jak można ewentualnie załadować zdjęcie za pośrednictwem URL?
Rzeczywiście można to zrobić.
Możesz wziąć JPEG lub bitmapę lub GIF i można ją reprezentować w systemie szesnastkowym
lub coś, co nazywa baza 64.
Zamiast bazy 16 użyć 64 bazowej, która w istocie wygląda
ASCII, i można faktycznie załadować zdjęcie za pośrednictwem adresu URL
po znaku zapytania, ale są zazwyczaj limity rozmiaru.
Większość przeglądarek zmusić używać do nie więcej niż 1000 znaków,
Może 2.000 znaków lub podobne, więc nie można załadować
10 MB Facebook zdjęcie.
Na korzystanie stanowiska, tak więc teraz się podnosi parametry w URL,
co jest miłe i przydatne czasami, ale za nic wrażliwej lub duże
post jest droga.
Co to jest register0 faktycznie tu robisz?
Cóż, gdybym otwarcie register0 informuje, że jest to super proste strony,
ale to świadczy o tym, że mogę współpracować mieszają, na dobre i na złe,
HTML z PHP.
Cały ten plik, z wyjątkiem uwag na górze, to HTML
oprócz tego faceta tutaj.
>> Zawiadomienie w środku mojego kodu PHP,
w środku mojego HTML, mam niejakie tymczasowo
wszedł do trybu PHP.
Dzwonię specjalną funkcję o nazwie print r.
Oznacza to wydrukować recursive, a co to robi to rekursywnie drukuje
cokolwiek zmienna oddać go, średnik, exit tryb PHP.
I pre tag daje wstępnie sformatowane,
text space mono tak, że każda przestrzeń rzeczywiście zobaczyć.
To nie zniknie. Czym jest post?
Cóż, co ciekawe i przekonujące o PHP
jest to, że w dowolnym momencie złożyć formularz używając GET lub POST
wszystko, co jest przekazywane do ciebie przez przeglądarkę
PHP sam wymyśli, co te pary wartości są najważniejsze,
Liczby się, czy jest równe znaki, figury, czy nie ma znaku zapytania.
To nie wszystkie ciężkiej pracy dla Ciebie, a następnie wręcza ci tablicy asocjacyjnej
zawierający wszystko, co użytkownik wpisze do formularza.
Cóż, co pola nie ta forma ma?
>> Miał 4 pola.
Jeden był polu tekstowym Nazwa.
Jeden był checkbox nazywa kapitan.
Jeden był przycisk radiowy nazywa płeć,
a jedno było rozwijane menu o nazwie akademiku,
więc zauważyć podczas drukowania rekurencyjnie
Zawartość tej zmiennej specjalnej.
Jest to specjalna zmienna globalna o nazwie dosłownie $ _POST, we wszystkich czapkach.
Jest to specjalna zmienna globalna, że ​​PHP tylko tworzy dla Ciebie
i ręce do Ciebie tak, że można uzyskać dostęp do wszystkiego
, że został przedstawiony za pomocą formy, przez użytkownika.
Oraz wzywając r drukowania na nim-nie byłoby to zrobić w normalnym stosowaniu.
Robimy to, aby zobaczyć wnętrze tej zmiennej,
i co jest w jej środku, dobrze, 4 klucze,
4 parametry HTTP, by tak rzec,
nazwa, kapitan, płeć, dorm, a następnie wartości, które użytkownik
wpisane z jednym wyjątkiem.
Zrobiłem typ D--V-I-D.
Sprawdziłem pole, choć dla mężczyzny, który najwyraźniej przedstawione wartości
po prostu m być zwięzłe.
>> Kiedy wybrany Matthews to wartość, która mnie wybrana,
i to jest trochę głupie, ale to konwencja.
Gdy zaznaczone jest pole wyboru, wartość na ", na", ale wniosek o pole wyboru.
Gdybym nie sprawdził, brak wartości zostałyby wysłane w ogóle.
To tylko daje nam wgląd w to, co jest w środku tego specjalnej zmiennej globalnej,
i to jest tak wyjątkowa, że ​​to się nazywa bardzo zmienną globalną.
To istnieje wszędzie na Ciebie w kodzie tak, że rzeczywiście można do niego dostęp.
To nie jest to, że atrakcyjne, więc niech to faktycznie używać super Globalna
i rzeczywiście spróbować zarejestrować kogoś.
W froshims1 zamierzam zrobić jedną zmianę.
Zmieniam skargi za register1.php,
i robię jedno.
Byłam trochę zażenowana jakością mojej stronie tam.
Jest to dość ohydny, szczerze, więc okazuje się,
że można użyć bardzo łatwo w internecie
JavaScript innych ludzi kodu, CSS innych ludzi
że już napisane i open source i udostępniony jako biblioteki,
że tak powiem, i na przykład, tutaj używam swobodnie dostępne biblioteki,
masa kodu, że ktoś inny napisał.
>> Twitter się napisać ten kod, a to się nazywa Biblioteka bootstrap,
i to tylko kilka arkuszy stylów CSS, pęczek. css
że ktoś inny napisał i zorientowali się, jak się wszystko ładnie i dość
tak, że ludzie tacy jak my mogą martwić trochę mniej o estetyce i skupić się bardziej
na logice i programowania rzeczywistych.
Łącząc go z tym znacznikiem, który jest taki sam tag Kiedyś pamiętam na styles3.css wcześniej,
I mają teraz dostęp do pliku o nazwie bootstrap.min.css.
Min po prostu oznacza, że ​​już go minified a oni pozbyć wszystkich białej przestrzeni i tak dalej
by upewnić się, że nie wysyłasz mi więcej bajtów, niż faktycznie potrzebujemy.
Ale tam jest cała masa CSS, więc jeśli teraz otworzyć wersję 1 Frosh IM
Zauważ, że mój plik jest zdecydowanie ładniejsza.
Teraz to jest wciąż tylko czarne i białe, ale zauważ, że tylko przy użyciu ich arkusz stylów
i korzystania z określonych funkcji to na moim formularzu, że nie jest niesamowite,
ale to zdecydowanie czystsze niż to było wcześniej, a projektor nie robi sprawiedliwości.
Jest małe szare linie wokół przycisków i wokół pola tekstowego właśnie tutaj,
ale to zdecydowanie czystsze niż to było wcześniej.
>> Teraz, w uczciwości, ja musiałem zmienić mój markup trochę.
To jest w wersji 1, i zauważ, że użyłem kilka nowych znaczników,
i szczerze mówiąc, nie miałem pojęcia, jak to zrobić, dopóki nie przeczytałem w dokumentacji
dla biblioteki bootstrap Twittera, i powiedzieli mi, jeśli chcesz korzystać z naszej biblioteki
wykorzystać element fieldset wewnątrz formularza,
umieścić słowo, które chcesz pokazać obok pola wewnątrz znacznika etykiety,
następnie dać wprowadzić nazwę, podobnie jak poprzednio,
a następnie do wyboru, nie tylko pan zawinąć go w element etykiety,
używać czegoś, co nazywa klasa, więc nie widziałem tego wcześniej,
ale zobaczysz to w jednym z jego szorty Pset 7.
Klasy w CSS pozwala zrobić coś bardzo podobnego do identyfikatora,
ale wcześniej, kiedy mieliśmy ID z symbolem #
to było dla jednego i tylko jednego elementu.
Co jest ładne o klasie jest to, że wiele elementów może posiadać tę samą klasę
lub tego samego materiału CSS stosowana.
>> Ale znowu, nie tylko na te, w skrócie, a reszta to po prostu skopiować i wkleić
z ich dokumentacją, gdzie dodałem etykietę tu i tam.
I na koniec, bo Podaję link tag na górze,
wszystko wygląda ładniej automatycznie
po prostu po oznaczony moją stronę w sposób, który
Twitter spodziewać, i nie ma tak wiele różnych sposobów
w ten sposób, i to jest rzeczywiście bardzo odpowiednie.
W tym momencie w semestrze, jak zobaczysz w specyfikacji Pset 7 w,
Googling wokół, czytania na bibliotek, za pomocą CSS cudze
i JavaScript do rozwiązywania dodatkowych problemów
do zestawu, sam problem jest z pewnością zachęcać i jest droga
Sieć zbudowana jest w tych dniach, stojąc na barki innych ludzi
tak aby można było się skupić na problemach nowe i ciekawe.
Ale niech się teraz skupić na, ponownie, logiki.
>> To był szybki objazd na estetykę tylko pokazać kierunek, w którym można przejść.
Zamierzam powrócić do brzydsze jeden na teraz, tylko dlatego,
nie ma żadnych rozrywek z rzeczy Twitter, i pozwól mi iść do przodu i otworzyć
froshims2, które ponownie, różni się tylko w działania, register2.php,
i rzućmy okiem na to, co efekt jest tutaj.
Pozwólcie mi iść do przodu i wpisać Dawida.
I nie będzie kapitan tym razem.
Powiem mężczyzna, Matthews, zarejestruj się.
Cholera. Dobra, to śruba się z mojej strony.
Stand by.
Rejestr2, line 22, jeśli pusty lub-przepraszam.
Miejmy przeładować.
Okay, po złożeniu tego formularza, co się stało?
Wpisałem w David, sprawdzane mężczyzna, kliknął Matthews, zarejestruj się.
Jesteś zarejestrowany. (No, nie do końca.)
Jest to wyraźnie krok poza tylko drukowanie zawartości jakiejś zmiennej,
Ale co to za plik rzeczywiście robi?
W register2.php
zauważyć, że mam jakiś nowy kod.
Wewnątrz mojego znacznika body mam zasadniczo jeśli jeszcze budowy,
ale dlatego, że jestem jednocześnie mieszając to z jakiegoś języka HTML
Muszę wejść i wyjść z trybu PHP iz powrotem, więc zobaczymy, co robię.
>> W pierwszym wierszu tutaj mówię, jeśli to jest w przypadku
że post bardzo globalny jest pusty dla klucza nazwy,
więc, innymi słowy, jeśli użytkownik nie dał mi wartość dla nazwy w formularzu,
pusta będzie zwracać wartość true, ponieważ wartość jest pusta.
Or-zauważyć kreski pionowe-jeśli płeć jest pusty
Wnętrze tego specjalnego Super Globalna, która ponownie stanowi zawartość formy
lub akademik jest pusty, to mam zamiar iść dalej i krzyczeć na użytkownika.
W jaki sposób? Cóż, zauważ Zamierzam powiedzieć musisz podać swoje imię i nazwisko, płeć, i akademika.
Miejmy faktycznie wywołać tego błędu.
Pozwól mi wrócić do mojej postaci. Pozwól, przeładować, aby je wyczyścić.
A ja po prostu się im Dawida, a oni nie muszą wiedzieć, gdzie mieszkam.
Zarejestruj. Widocznie trzeba im powiedzieć, gdzie mieszkam.
Musisz podać swoje imię i nazwisko, płeć i akademika. Wróć.
>> I mógłbym kliknij, aby powrócić do tej postaci, ale dlaczego tak jest?
Cóż, w tej nazwie przypadku nie był pusty, ale płci był, a akademik był,
więc całe wyrażenie ocenione na true, i mimo, że składnia jest trochę nowego,
ponownie, tryb PHP, znajomy if,
ale nowa część o to właśnie w tym jelita grubego, a ja nie przejmował się, pomijając nawias
przez przypadek, ale zauważ, dwukropek, a to oznacza
mimo wszystko jesteśmy wyjściu tryb PHP
który następuje należy wypluć verbatim do przeglądarki
, aż pojawi się inny blok, jak my tutaj,
w takim przypadku należy zamiast pluć na to uwagę
aż zobaczysz endif, więc niektóre lekko nowa składnia
która pozwala mi przełączyć pomiędzy HTML i PHP.
Możemy oczyścić ten fakt w końcu, ale teraz,
to rodzaj niekwestionowany sposób sprawdzania błędów formularz.
>> Teraz mogę powiedzieć, że nie jesteś naprawdę zarejestrowane bo oczywiście zrobiliśmy nic, ale dane,
więc niech to faktycznie spróbować zrobić coś fajnego.
W froshims3 Jedyna różnica to mam zamiar przedstawić register3,
tak HTML nie jest taki sam.
W register3 to zauważyć.
Ten jest trochę sexy.
Na górze używam require oświadczenie, więc jest to jak # include.
Tym razem to nie stdio.h czy coś w tym jest.
Jest to biblioteka PHP, a ten jest nazywany PHPMailer.
Skąd wiem, że do włączenia się dokładnie takiego w cudzysłowie?
Czytałem w dokumentacji, więc gdy powiedziano założę to na początku pliku
jeśli chcesz użyć specjalnego biblioteki o nazwie PHPMailer który robi to co mówi.
To pozwala na wysyłanie wiadomości e-mail za pomocą PHP.
Teraz przewijać dalej.
>> Wskazówka zacząć Jestem w trybie PHP to cały czas,
tak teraz tu zauważyć, że po zaimportowaniu biblioteki
że tak powiem, robię jakieś testy sprawdzające.
Jeśli jest tak, że nazwa nie jest pusta
i płeć nie jest pusty-zauważyć wykrzykniki-
i akademik nie jest pusta, a następnie użytkownik logicznie wypełnieniu formularza, przynajmniej tyle.
Nie obchodzi mnie to, czy są, czy nie kapitan. Muszę tylko swoje nazwisko, płeć oraz w akademiku.
Jeśli te wypełniły się tak, że żaden z tych pól jest pusta
jest to nieco nowa składnia.
PHP, jak na bok, to obiektowy język programowania
co niektórzy z was mogą pamiętać z APC lub podobnych.
Na razie, jeśli znają, po prostu wiem, że aby korzystać z tej biblioteki
trzeba napisać wiersz kodu podobnego używając nowego słowa kluczowego,
dosłownie nowy keyword nazywa nowy.
Ale poza tym, mamy kilka znanych składni.
To operator strzałka, która jest podobna do tego, co stosuje elemencie w kontekście wskaźników.
Na dzień dzisiejszy nie ma PHP wskaźniki,
ale wiem teraz, że wewnątrz zmiennej poczty
jest w istocie rodzajem wskaźnika do specjalnej biblioteki
że ktoś napisał, a jeśli chcesz uzyskać dostęp do określonej funkcji
wewnątrz tej biblioteki ja, tak jak w C, należy użyć operatora strzałki
nawet jeśli nie są one faktycznie wskaźnikami.
To coś w rodzaju własnej wersji PHP nim.
Oznacza to, idź do biblioteki i wywołać IsSMTP funkcję.
SMTP, recall, od naszych wojowników Net odnosi się do nadawcy,
i że po prostu oznacza użycie serwera pocztowego dla tego Frosh IM rejestracji.
>> Co gospodarz chcę użyć?
Cóż, Harvard, jeśli Google wokół, posiada serwer pocztowy o nazwie smtp.fas.harvard.edu.
Jeśli grasz razem w domu lub mieszkasz na Comcast sieci
to może być coś jak smtp.comcast.net.
To całkowicie zależy od tego, gdzie mieszkasz i kto jest Twoim ISP.
Potem mam zamiar ustawić mój od adresu arbitralnie być jharvard@cs50.net.
Jestem wtedy zamiar ustawić zająć się jharvard@cs50.net.
Tylko w ten sposób wiedziałem, że funkcje te nazywane były setFrom i AddAddress
jest, ponownie, przeczytaj dokumentację.
To nie jest rodzaj magii znane wszystkim programistów jest.
Potem ustawić obiekt do "rejestracji".
A teraz ta linia jest nieco brzydki, bo co to znaczy, operator kropki w PHP?
Ktoś wie?
Złączyć.
W języku C jest to ból w szyi złączyć 2 ciągi razem.
Masz do czynienia z malloc lub realloc lub wszystkie z tych rzeczy
tylko w celu wydłużenia łańcucha.
W PHP w JavaScript i innych języków
zazwyczaj można to zrobić z jednego znaku.
W tym przypadku, kropka oznacza wziąć ten ciąg tutaj
i dołączyć do niego ten ciąg.
>> Aha, i przy okazji, dołączyć do niego ten ciąg,
co dzieje się wewnątrz tej zmiennej super-Global.
Następnie dodać do niej nową linię, więc wszystkie z tych punktów oznacza tylko
popełniają większy i większy i większy ciąg,
i nie musisz się martwić w ogóle o malloc lub podobnego w języku takim jak ten,
i nie ma innych sposobów, aby to zrobić, ale jest to jeden z najszybszych
sposoby, aby położyć go na zewnątrz.
Co to robi?
To tworzenie e ciało, które się dzieje powiedzieć Imię: Kapitan: Płeć: Dorm:
Wszystkie na oddzielnych linii, a następnie na koniec,
jedna linia kodu, i mam zamiar zignorować to teraz.
Jeśli == false oznacza po prostu, jeśli coś poszło nie tak,
ale magia dzieje się tutaj.
Mail Wyślij oznacza wysłać tę wiadomość.
Zobaczmy, co wynik netto jest.
Na dole pliku, zauważysz to powiedzieć jesteś zarejestrowany naprawdę
jeśli mam tak daleko.
Jeśli jednak użytkownik śruby się zauważyć, że zaczęliśmy ten
jeśli stan się tutaj, jeśli nie jest pusty i nie jest pusty
i nie opróżnienia wysyłamy maila.
W przeciwnym razie będziemy wysłać ten wiersz kodu,
która będzie mieć wpływ, jak zobaczysz w Pset 7, przekierowywać użytkownika
powrotem skąd przyszli, froshims3.php.
>> Kciuki, inaczej to będzie najbardziej rozczarowujące demo już dziś.
Jedziemy.
Pozwól mi otworzyć moje skrzynkę mailową dla jharvard w Gmailu.
No e teraz. Dobrze.
Teraz pozwól mi otworzyć froshims3, który jest trzeci i ostatni przykład przyjrzymy się tutaj.
Dobra, jedziemy.
Nate, on będzie kapitanem, mężczyzna, od, powiedzmy, Apley.
Zarejestruj. Dobra, jesteś zarejestrowany naprawdę.
Teraz jeśli przewijać do mnie e-mail, oh, mój Boże.
Właśnie dynamicznie wysłany e-mail w sieci Web.
>> Zostawmy na tej notatce.
Film jest w przygotowaniu na wykład przeoczyliśmy. Do zobaczenia w przyszłym tygodniu.
[CS50.TV]