1 00:00:00,000 --> 00:00:02,400 [Powered by Google Translate] [PHP Syntax] 2 00:00:02,400 --> 00:00:04,400 [Tommy MacWilliam] [Harvard University] 3 00:00:04,400 --> 00:00:07,400 [Dette er CS50.] [CS50.TV] 4 00:00:07,400 --> 00:00:10,080 >> I denne videoen vil vi introdusere PHP - 5 00:00:10,080 --> 00:00:12,820 ett av språkene vi skal bruke i CS50 6 00:00:12,820 --> 00:00:15,480 som vi overgangen til webutvikling. 7 00:00:15,480 --> 00:00:19,250 PHP står for PHP Hypertext Processor, 8 00:00:19,250 --> 00:00:23,440 eller PHP Hypertext Processor Hypertext Processor, 9 00:00:23,440 --> 00:00:24,880 og jeg skal stoppe der. 10 00:00:24,880 --> 00:00:29,280 PHP er et rekursivt akronym, som jeg tror er virkelig fantastisk. 11 00:00:29,280 --> 00:00:32,020 >> Så, la oss skrive "hello world" i PHP, 12 00:00:32,020 --> 00:00:37,240 som vil være litt annerledes enn den "hello world" i C som vi har lært å kjenne og elske. 13 00:00:37,240 --> 00:00:40,330 Istedenfor å lage en fil som heter hello.c, 14 00:00:40,330 --> 00:00:42,990 vi vil skape hello.php. 15 00:00:42,990 --> 00:00:52,430 Alle våre PHP-kode vil ligge mellom . 16 00:00:52,430 --> 00:00:56,160 Hvis vi har noen PHP-kode som ligger 17 00:00:56,160 --> 00:00:59,140 utenom disse skilletegn, vil det ikke kjøre. 18 00:00:59,140 --> 00:01:01,740 Vi kan ha så mange av disse PHP blokker 19 00:01:01,740 --> 00:01:05,090 som vi ønsker inne i et enkelt PHP-fil. 20 00:01:05,090 --> 00:01:09,000 I PHP er det ikke behov for en hovedfunksjon. 21 00:01:09,000 --> 00:01:15,540 I stedet vil vår PHP-koden kjøres i den rekkefølgen det vises i vår PHP-filen. 22 00:01:15,540 --> 00:01:20,970 Både C og PHP har en "printf-funksjonen for utmating av data. 23 00:01:20,970 --> 00:01:27,270 Men i PHP, trenger vi ikke å # include noen header-filer som standardIO.h. 24 00:01:27,270 --> 00:01:31,830 Det er fordi i PHP ikke vi skal samle vår kode. 25 00:01:31,830 --> 00:01:35,560 Da vi skrev C koden vår arbeidsflyt tendens til å være åpne opp 26 00:01:35,560 --> 00:01:39,560 én eller flere. c eller. h filer, endre dem, kompilere dem, 27 00:01:39,560 --> 00:01:41,980 og kjører den resulterende binære. 28 00:01:41,980 --> 00:01:45,800 Sjekk ut kompilatorer video for mer informasjon om denne prosessen. 29 00:01:45,800 --> 00:01:51,480 >> I motsetning til C, er PHP et tolket - snarere enn kompilert - språk. 30 00:01:51,480 --> 00:01:54,080 Det betyr at PHP-koden vi skriver 31 00:01:54,080 --> 00:01:57,360 vil bli kjørt gjennom et spesielt program kalt tolk, 32 00:01:57,360 --> 00:02:00,440 som igjen vil gjennomføre vår kode. 33 00:02:00,440 --> 00:02:03,020 Å kjøre vår PHP-kode, 34 00:02:03,020 --> 00:02:07,860 vi vil sende det sammen til PHP tolk som vil håndtere sin utførelse, 35 00:02:07,860 --> 00:02:11,260 heller enn å samle det til maskinkode. 36 00:02:11,260 --> 00:02:13,450 La oss se tolk i aksjon. 37 00:02:13,450 --> 00:02:17,010 Vi vil åpne opp en terminal og kjøre PHP-kommandoen 38 00:02:17,010 --> 00:02:21,130 etterfulgt av banen til PHP-filen vi ønsker å kjøre. 39 00:02:21,130 --> 00:02:25,690 Vi vil si: 'php hello.php'. 40 00:02:25,690 --> 00:02:30,200 Og der vi går. Det er resultatet av vår PHP program. 41 00:02:30,200 --> 00:02:33,460 Vi trengte ikke å kompilere vår PHP-filen i det hele tatt. 42 00:02:33,460 --> 00:02:37,280 I stedet hadde vi et annet program - PHP tolk - 43 00:02:37,280 --> 00:02:40,070 utføre kildekoden som vi skrev. 44 00:02:40,070 --> 00:02:43,280 >> PHP kan gjøre mye mer enn bare printf. 45 00:02:43,280 --> 00:02:46,490 La oss skrive noen mer komplekse PHP programmer. 46 00:02:46,490 --> 00:02:52,240 Syntaksen for konstruksjoner - som om, annet, mens for, og bryter - 47 00:02:52,240 --> 00:02:55,440 er den samme i PHP og C. 48 00:02:55,440 --> 00:03:01,180 Akkurat som C, bruker hver av disse konstruerer bukseseler å avgrense kroppen sin, 49 00:03:01,180 --> 00:03:04,420 og akkurat som i C, hver linje vi skriver 50 00:03:04,420 --> 00:03:06,830 må avsluttes med et semikolon; 51 00:03:06,830 --> 00:03:10,700 imidlertid variabler håndteres litt forskjellig i PHP. 52 00:03:10,700 --> 00:03:15,630 Først må alle variabler i PHP starte med dollartegn. 53 00:03:15,630 --> 00:03:18,700 Det virker litt rart i begynnelsen, men du blir vant til det. 54 00:03:18,700 --> 00:03:22,150 Sekund, er PHP et løst-skrevet språk 55 00:03:22,150 --> 00:03:24,570 som betyr at du ikke trenger å eksplisitt liste 56 00:03:24,570 --> 00:03:27,640 hvilken type en variabel når du oppretter den. 57 00:03:27,640 --> 00:03:33,430 Hvor i C ville du trenger å si int x = 5; 58 00:03:33,430 --> 00:03:38,650 eller røye y = 'a'; 59 00:03:39,250 --> 00:03:44,790 i PHP kan vi bare si $ x = 5; 60 00:03:44,790 --> 00:03:48,930 og $ y = 'a';. 61 00:03:48,930 --> 00:03:52,360 Det samme gjelder for funksjoner. 62 00:03:52,360 --> 00:04:01,290 Snarere enn å si int f () {legemet på funksjonen} 63 00:04:01,290 --> 00:04:12,160 i PHP skal vi si funksjon f () {kroppen vår funksjon}. 64 00:04:12,160 --> 00:04:17,579 Vi trenger ikke å eksplisitt angi avkastning type vår funksjon f. 65 00:04:17,579 --> 00:04:22,070 Funksjoner i PHP også ikke trenger å returnere samme type 66 00:04:22,070 --> 00:04:23,840 hver gang de blir henrettet. 67 00:04:23,840 --> 00:04:27,940 For eksempel kunne vi skrive en funksjon som returnerer false på en feil 68 00:04:27,940 --> 00:04:29,750 og en annen type hvis det lykkes. 69 00:04:29,750 --> 00:04:33,060 >> Dette kan også hjelpe oss skrive mer generelle funksjoner. 70 00:04:33,060 --> 00:04:35,710 For eksempel kunne vi skrive en eneste funksjonen add 71 00:04:35,710 --> 00:04:39,200 som kan returnere et heltall hvis to heltall er gitt 72 00:04:39,200 --> 00:04:41,250 eller en dupp hvis to flyter er gitt. 73 00:04:41,250 --> 00:04:45,530 I C, ville vi trenger å skrive to separate funksjoner for å gjøre dette. 74 00:04:45,530 --> 00:04:49,230 Mens i C bruker vi pekere for en raise og strykere, 75 00:04:49,230 --> 00:04:52,170 vi vil ikke være i stand til å bruke pekere i PHP. 76 00:04:52,170 --> 00:04:58,030 I stedet, begge matriser og strenger er innebygd typer i PHP. 77 00:04:58,030 --> 00:04:59,660 De er bygget rett inn i språket. 78 00:04:59,660 --> 00:05:02,270 Å lage en matrise i PHP kan vi si, 79 00:05:02,270 --> 00:05:11,280 $ A = matrise (1, 2, 3); 80 00:05:11,280 --> 00:05:19,400 eller enklere $ a = [1, 2, 3],. 81 00:05:19,400 --> 00:05:24,990 Vi kan indeksen inn denne array ved hjelp av den samme syntaksen som vi er vant til fra C. 82 00:05:24,990 --> 00:05:31,780 For å få det første elementet vi vil si, $ a [0];. 83 00:05:31,780 --> 00:05:36,290 PHP har også innebygd støtte for assosiative arrays. 84 00:05:36,290 --> 00:05:41,460 Assosiative arrays er akkurat som hash table datastruktur vi allerede har sett - 85 00:05:41,460 --> 00:05:44,060 de kartlegge en nøkkel til en verdi. 86 00:05:44,060 --> 00:05:46,070 >> La oss ta en titt på et eksempel. 87 00:05:46,070 --> 00:06:14,740 Vi kan si, $ stab = ["instruktør" => "david", "tf" => "Tommy"];. 88 00:06:14,740 --> 00:06:21,020 Her har jeg en assosiativ array med to nøkler - instruktør og tf. 89 00:06:21,020 --> 00:06:24,910 Den doble-pilen eller lik-større-enn, 90 00:06:24,910 --> 00:06:29,660 brukes til å separere en nøkkel, og den tilsvarende verdi. 91 00:06:29,660 --> 00:06:41,830 Så, er verdien av $ ansatte ["tf"] strengen "Tommy". 92 00:06:41,830 --> 00:06:44,430 Verdiene av en assosiativ array - 93 00:06:44,430 --> 00:06:47,540 mye som alle andre array - kan være av hvilken som helst type. 94 00:06:47,540 --> 00:07:23,370 For eksempel kan vi si, $ stab = ["instruktør" => "david", "tfs" => ["tommy", "rane"]];. 95 00:07:23,370 --> 00:07:27,810 Nå verdien av 'TFS' er en matrise. 96 00:07:27,810 --> 00:07:33,030 Det betyr at verdiene inne i et assosiativt arrayet kan være av forskjellige typer. 97 00:07:33,030 --> 00:07:36,750 >> PHP arrays også ikke har en fast lengde, 98 00:07:36,750 --> 00:07:40,200 slik at vi kan legge til eller fjerne elementer fra en matrise. 99 00:07:40,200 --> 00:07:49,130 La oss si vi har en enkel rekke som $ a = [1, 2, 3];. 100 00:07:49,130 --> 00:07:51,860 For å legge til et nytt element til denne tabellen, 101 00:07:51,860 --> 00:07:57,160 vi kan si, $ a [] = 4;. 102 00:07:57,160 --> 00:08:03,630 Nå vår rekke består av fire elementer - [1, 2, 3, 4]. 103 00:08:03,630 --> 00:08:06,980 Husk at hvis vi ønsket å gjøre noe som dette i C, 104 00:08:06,980 --> 00:08:09,610 vi måtte fordele en helt ny array, 105 00:08:09,610 --> 00:08:12,400 kopiere innholdet i vår første matrisen i det, 106 00:08:12,400 --> 00:08:15,870 og deretter sette det siste elementet for det nye utvalget til vår nye verdien. 107 00:08:15,870 --> 00:08:18,390 Dette er mye enklere i PHP. 108 00:08:18,390 --> 00:08:21,230 Hvis vår matrise er en assosiativ array, 109 00:08:21,230 --> 00:08:24,810 vi ganske enkelt definere en ny nøkkel for å skape et element 110 00:08:24,810 --> 00:08:26,250 hvis det ikke finnes ennå. 111 00:08:26,250 --> 00:08:30,010 Hvis vi har vår tidligere array - $ ansatte - 112 00:08:30,010 --> 00:08:38,679 vi kan si $ ansatte ["total"] = 3;. 113 00:08:38,679 --> 00:08:43,330 Nå har vi en ny nøkkel med verdien av tre. 114 00:08:43,330 --> 00:08:46,460 >> For å få antall elementer i en matrise, 115 00:08:46,460 --> 00:08:48,230 vi kan bruke "teller"-funksjonen. 116 00:08:48,230 --> 00:08:56,100 Hvis vi sier, telle ($ a);, som vil ha en verdi på 4. 117 00:08:56,100 --> 00:09:01,930 I PHP, kan vi skape strenger ved hjelp av doble eller enkle anførselstegn, 118 00:09:01,930 --> 00:09:04,470 så begge disse variablene er strenger. 119 00:09:04,470 --> 00:09:21,780 $ S1 = "streng"; $ s2 = 'annen streng';. 120 00:09:21,780 --> 00:09:23,920 Hva er forskjellen mellom disse to? 121 00:09:23,920 --> 00:09:26,950 Vel, det er ganske vanlig å ønske å inkludere 122 00:09:26,950 --> 00:09:29,600 verdien av en variabel inne i en streng. 123 00:09:29,600 --> 00:09:34,390 En måte å gjøre dette ville være å bruke PHP dot operatør, 124 00:09:34,390 --> 00:09:36,630 som setter sammen strenger. 125 00:09:36,630 --> 00:09:38,680 Vi kunne gjøre noe som dette - 126 00:09:38,680 --> 00:09:53,800 $ N = 5, $ s = 'n er' $ n.;. 127 00:09:53,800 --> 00:09:57,430 Her er vår n variable er et heltall. 128 00:09:57,430 --> 00:10:00,020 Men når vi sette sammen det med en streng, 129 00:10:00,020 --> 00:10:04,110 PHP vil automatisk konvertere den til en streng for oss. 130 00:10:04,110 --> 00:10:09,090 Eller vi kan bare bruke doble anførselstegn for å sette den variable i selve strengen. 131 00:10:09,090 --> 00:10:19,290 Vi kan si, $ s = "n er $ n";. 132 00:10:19,290 --> 00:10:24,040 Nå er den verdi av $ S skal 'n er 5'. 133 00:10:24,040 --> 00:10:34,250 Hvis vi bruker apostrof i stedet, som i $ s = 'n er $ n'; 134 00:10:34,250 --> 00:10:39,670 verdien på S skal 'n er n $';. 135 00:10:39,670 --> 00:10:43,720 Verdien av n vil ikke erstattes hvis vi bruker apostrof, 136 00:10:43,720 --> 00:10:47,150 men det vil være hvis vi bruker doble anførselstegn. 137 00:10:47,150 --> 00:10:51,800 Hvis vi ønsker å bruke anførselstegn for å inkludere verdien av en matrise i en streng, 138 00:10:51,800 --> 00:10:55,060 Vi må ta med klammeparentes rundt tabellen, som dette - 139 00:10:55,060 --> 00:11:14,470 $ S = "{$ ansatte ['total']}";. 140 00:11:14,470 --> 00:11:20,350 >> La oss nå ta en titt på en liten bit i C og oversette den til PHP. 141 00:11:20,350 --> 00:11:25,410 Her skaper vi en funksjon som skriver ut bokstavene i en streng, 142 00:11:25,410 --> 00:11:27,310 ett tegn per linje. 143 00:11:27,310 --> 00:11:32,250 La oss gjøre det samme i PHP. 144 00:11:32,250 --> 00:11:36,530 Først trenger vi vår PHP skilletegn. 145 00:11:36,530 --> 00:11:39,000 Når vi skaper vår funksjon, 146 00:11:39,000 --> 00:11:42,740 vi trenger ikke å spesifisere sin returtype eller type argument sin. 147 00:11:42,740 --> 00:11:46,890 Vårt s variable må også starte med et dollartegn. 148 00:11:46,890 --> 00:11:51,590 PHP strlen funksjon gir oss lengden på en streng, 149 00:11:51,590 --> 00:11:55,660 akkurat som Cs strlen gir oss lengden på en streng. 150 00:11:55,660 --> 00:11:59,060 Under panseret selv om disse funksjonene er faktisk litt annerledes 151 00:11:59,060 --> 00:12:03,010 siden en streng er en innebygd skriver i PHP. 152 00:12:03,010 --> 00:12:06,930 Syntaksen til vår 'for' sløyfe er den samme. 153 00:12:06,930 --> 00:12:13,530 >> I PHP, kan vi også bruke matrise notasjon for å få tilgang til tegnene i en streng. 154 00:12:13,530 --> 00:12:19,350 Vi kan nå bruke print-funksjonen til å skrive ut hver bokstav i strengen. 155 00:12:19,350 --> 00:12:23,080 Med PHP print funksjon, trenger vi ikke å bekymre deg for plassholdere - 156 00:12:23,080 --> 00:12:28,200 som% d eller% c - når vi ønsker å skrive ut en variabel som ikke er en streng. 157 00:12:28,200 --> 00:12:33,590 I stedet kan vi bare passere en variabel av alle typer til print funksjon, 158 00:12:33,590 --> 00:12:36,810 og det vil bli omdannet til en streng og vist. 159 00:12:36,810 --> 00:12:43,430 Og det er det! La oss nå kjøre vår fil med "php print.php '. 160 00:12:43,430 --> 00:12:48,160 Og det er den produksjonen vi så fra vår C-program. 161 00:12:48,160 --> 00:12:52,120 >> PHP støtter også en konstruksjon kalt "foreach løkke. 162 00:12:52,120 --> 00:12:54,800 The 'foreach løkke er akkurat som en "for" loop, 163 00:12:54,800 --> 00:12:59,080 men det legger litt syntaktisk sukker for å gjøre ting mer lesbar. 164 00:12:59,080 --> 00:13:03,690 Her skaper vi en ny rekke kalt '$ matrise'. 165 00:13:03,690 --> 00:13:10,090 Nå kan vi si, foreach ($ matrise som $ nummer), 166 00:13:10,090 --> 00:13:12,390 og vi kan skrive ut $ nummer. 167 00:13:12,390 --> 00:13:20,650 Når vi kjører denne filen - php foreach.php--kan vi se hvert tall på en egen linje. 168 00:13:20,650 --> 00:13:26,700 >> Da vi skrev C-kode, var det ofte nyttig å organisere vår kode i separate filer. 169 00:13:26,700 --> 00:13:29,170 I PHP, kan vi gjøre det samme. 170 00:13:29,170 --> 00:13:33,870 La oss si at vi har noen funksjoner i en fil som heter math.php. 171 00:13:33,870 --> 00:13:38,900 Hvis jeg ønsker å bruke disse funksjonene i en annen PHP-fil, som calculator.php, 172 00:13:38,900 --> 00:13:44,110 Jeg kan bruke PHP sin require_once ()-funksjonen. 173 00:13:44,110 --> 00:13:47,110 Require_once er akkurat som # include. 174 00:13:47,110 --> 00:13:52,050 Når den får en sti til en fil, vil det i hovedsak kopiere og lime inn innholdet 175 00:13:52,050 --> 00:13:54,930 av den filen til den aktuelle filen. 176 00:13:54,930 --> 00:14:00,150 Require_once sikrer at hver fil er inkludert i den gjeldende filen bare én gang, 177 00:14:00,150 --> 00:14:05,680 som kan være nyttig hvis du har en stor samling av PHP-filer som krever hverandre. 178 00:14:05,680 --> 00:14:07,750 La oss ta en titt på et eksempel. 179 00:14:07,750 --> 00:14:12,620 Her har vi en samling av funksjoner som jeg ønsker å bruke i en annen fil. 180 00:14:12,620 --> 00:14:14,990 La oss ta en titt på hvordan vi kan bruke dem. 181 00:14:14,990 --> 00:14:20,700 På linje 3, vi krever math.php. 182 00:14:20,700 --> 00:14:27,170 The '__DIR__' er en spesiell konstant representerer gjeldende katalog 183 00:14:27,170 --> 00:14:33,440 siden math.php og calculator.php ligger i samme katalog. 184 00:14:33,440 --> 00:14:38,010 Etter at vi krever math.php, kan vi bruke funksjonene 185 00:14:38,010 --> 00:14:41,690  som om vi har definert dem i calculator.php. 186 00:14:41,690 --> 00:14:47,440 La oss kjøre dette med 'php calculator.php'. Flott! 187 00:14:47,440 --> 00:14:50,880 >> Det er det for vår introduksjon til PHP syntaks. 188 00:14:50,880 --> 00:14:53,700 For å finne ut mer, sjekk ut PHP.net. 189 00:14:53,700 --> 00:14:59,470 PHP har en rekke innebygde funksjoner, og heldigvis sin dokumentasjon er virkelig flott. 190 00:14:59,470 --> 00:15:02,680 Mitt navn er Tommy, og dette er CS50. 191 00:15:02,680 --> 00:15:04,680 [CS50.TV] 192 00:15:04,680 --> 00:15:14,000 >> ... Brakett, jeg er ute av rommet. Faen! Dette er den siste videoen der jeg bruker store ord i koden.