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 video, vil vi introducere PHP - 5 00:00:10,080 --> 00:00:12,820 et af de sprog, vi skal bruge i CS50 6 00:00:12,820 --> 00:00:15,480 som vi overgangen til webudvikling. 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 vil stoppe der. 10 00:00:24,880 --> 00:00:29,280 PHP er en rekursiv akronym, som jeg synes er virkelig fantastisk. 11 00:00:29,280 --> 00:00:32,020 >> Så lad os skrive 'hello verden "i PHP, 12 00:00:32,020 --> 00:00:37,240 som vil være en smule anderledes end den 'hello verden "i C, som vi er kommet til at kende og elske. 13 00:00:37,240 --> 00:00:40,330 I stedet for at skabe en fil kaldet hello.c, 14 00:00:40,330 --> 00:00:42,990 opretter vi hello.php. 15 00:00:42,990 --> 00:00:52,430 Alle vores PHP kode vil blive indeholdt mellem . 16 00:00:52,430 --> 00:00:56,160 Hvis vi har nogen PHP kode, der er placeret 17 00:00:56,160 --> 00:00:59,140 uden for disse afgrænsere, vil det ikke udføre. 18 00:00:59,140 --> 00:01:01,740 Vi kan have så mange af disse PHP blokke 19 00:01:01,740 --> 00:01:05,090 som vi ønsker i en enkelt PHP-fil. 20 00:01:05,090 --> 00:01:09,000 I PHP er der ikke behov for en hovedfunktion. 21 00:01:09,000 --> 00:01:15,540 I stedet vil vores PHP kode køres i den rækkefølge, det vises i vores PHP-fil. 22 00:01:15,540 --> 00:01:20,970 Både C og PHP har en 'printf' funktionen til udsendelse af data. 23 00:01:20,970 --> 00:01:27,270 Men i PHP, behøver vi ikke at # omfatte eventuelle header filer som standardIO.h. 24 00:01:27,270 --> 00:01:31,830 Det er fordi i PHP, vil vi ikke kompilere vores kode. 25 00:01:31,830 --> 00:01:35,560 Når vi skrev C-kode vores workflow tendens til at åbne op 26 00:01:35,560 --> 00:01:39,560 én eller flere. c eller. h filer, ændre dem, kompilering dem, 27 00:01:39,560 --> 00:01:41,980 og kører den resulterende binære. 28 00:01:41,980 --> 00:01:45,800 Tjek Compilere video for mere information om denne proces. 29 00:01:45,800 --> 00:01:51,480 >> I modsætning til C, er PHP et fortolket - snarere end kompileret - sprog. 30 00:01:51,480 --> 00:01:54,080 Det betyder, at PHP kode vi skriver 31 00:01:54,080 --> 00:01:57,360 vil blive kørt gennem et specielt program kaldet en tolk, 32 00:01:57,360 --> 00:02:00,440 hvilket igen vil gennemføre vores kode. 33 00:02:00,440 --> 00:02:03,020 Hvis du vil køre vores PHP-kode, 34 00:02:03,020 --> 00:02:07,860 sender vi det videre til PHP fortolkeren, som vil håndtere dets gennemførelse, 35 00:02:07,860 --> 00:02:11,260 snarere end kompilere det til maskinkode. 36 00:02:11,260 --> 00:02:13,450 Lad os se tolken i aktion. 37 00:02:13,450 --> 00:02:17,010 Vi åbner en terminal og køre PHP kommando 38 00:02:17,010 --> 00:02:21,130 efterfulgt af stien til PHP-fil, vi gerne vil køre. 39 00:02:21,130 --> 00:02:25,690 Vi vil sige, 'php hello.php ". 40 00:02:25,690 --> 00:02:30,200 Og der går vi. Der er produktionen af ​​vores PHP program. 41 00:02:30,200 --> 00:02:33,460 Vi behøvede ikke at kompilere vores PHP-fil på alle. 42 00:02:33,460 --> 00:02:37,280 I stedet havde vi et andet program - PHP tolk - 43 00:02:37,280 --> 00:02:40,070 udføre kildekode, som vi skrev. 44 00:02:40,070 --> 00:02:43,280 >> PHP kan gøre meget mere end blot printf. 45 00:02:43,280 --> 00:02:46,490 Lad os skrive nogle mere komplekse PHP-programmer. 46 00:02:46,490 --> 00:02:52,240 Syntaksen for konstruktioner - ligesom hvis, ellers, mens det for, og switch - 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 Ligesom C, bruger hver af disse konstruktioner seler til at afgrænse deres krop, 49 00:03:01,180 --> 00:03:04,420 og ligesom i C, hver linje, vi skriver 50 00:03:04,420 --> 00:03:06,830 skal ende med et semikolon; 51 00:03:06,830 --> 00:03:10,700 dog variabler håndteres lidt forskelligt i PHP. 52 00:03:10,700 --> 00:03:15,630 Først skal alle variabler i PHP starte med dollartegn. 53 00:03:15,630 --> 00:03:18,700 Det virker en lille smule underligt i starten, men du vil vænne sig til det. 54 00:03:18,700 --> 00:03:22,150 For det andet, PHP er et løst skrevet sprog 55 00:03:22,150 --> 00:03:24,570 hvilket betyder at du ikke behøver at eksplicit liste 56 00:03:24,570 --> 00:03:27,640 typen af ​​en variabel, når du opretter den. 57 00:03:27,640 --> 00:03:33,430 Hvor i C ville du nødt til at sige int x = 5; 58 00:03:33,430 --> 00:03:38,650 eller char y = 'a'; 59 00:03:39,250 --> 00:03:44,790 i PHP kan vi blot sige $ 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 gælder for funktioner. 62 00:03:52,360 --> 00:04:01,290 Snarere end at sige int f () {kroppen af ​​vores funktion} 63 00:04:01,290 --> 00:04:12,160 i PHP vi kommer til at sige funktion f () {kroppen af ​​vores funktion}. 64 00:04:12,160 --> 00:04:17,579 Vi behøver ikke eksplicit angive returtype vores funktion f. 65 00:04:17,579 --> 00:04:22,070 Funktioner i PHP heller ikke nødt til at returnere samme type 66 00:04:22,070 --> 00:04:23,840 hver gang de bliver henrettet. 67 00:04:23,840 --> 00:04:27,940 For eksempel kunne vi skrive en funktion, der returnerer falsk på en fejl 68 00:04:27,940 --> 00:04:29,750 og en anden type, hvis det lykkes. 69 00:04:29,750 --> 00:04:33,060 >> Dette kan også hjælpe os skrive mere generiske funktioner. 70 00:04:33,060 --> 00:04:35,710 For eksempel kunne vi skrive en enkelt add funktionen 71 00:04:35,710 --> 00:04:39,200 der kan returnere et heltal, hvis 2 heltal er givet 72 00:04:39,200 --> 00:04:41,250 eller en svømmer hvis 2 flydere er givet. 73 00:04:41,250 --> 00:04:45,530 I C, ville vi nødt til at skrive 2 separate funktioner til at gøre dette. 74 00:04:45,530 --> 00:04:49,230 Mens der i C vi bruger pejlemærker for et raise og strygere, 75 00:04:49,230 --> 00:04:52,170 Vi vil ikke være i stand til at bruge pejlemærker i PHP. 76 00:04:52,170 --> 00:04:58,030 I stedet både arrays og strygere er indbyggede typer i PHP. 77 00:04:58,030 --> 00:04:59,660 De er bygget lige ind i sproget. 78 00:04:59,660 --> 00:05:02,270 For at oprette et array i PHP, vi kan sige, 79 00:05:02,270 --> 00:05:11,280 $ A = array (1, 2, 3); 80 00:05:11,280 --> 00:05:19,400 eller blot $ a = [1, 2, 3]. 81 00:05:19,400 --> 00:05:24,990 Vi kan indekset i denne array ved hjælp af den samme syntaks, som vi er vant til fra C. 82 00:05:24,990 --> 00:05:31,780 For at få det første element, vi vil sige, $ a [0];. 83 00:05:31,780 --> 00:05:36,290 PHP har også indbygget understøttelse for associative arrays. 84 00:05:36,290 --> 00:05:41,460 Associative arrays er ligesom hash tabellen datastruktur vi allerede har set - 85 00:05:41,460 --> 00:05:44,060 de kortlægge en nøgle til en værdi. 86 00:05:44,060 --> 00:05:46,070 >> Lad os tage et kig på et eksempel. 87 00:05:46,070 --> 00:06:14,740 Vi kan sige, $ personale = ["instruktør" => "david", "tf" => "tommy"];. 88 00:06:14,740 --> 00:06:21,020 Her har jeg en associativt array med 2 nøgler - instruktør og tf. 89 00:06:21,020 --> 00:06:24,910 Den dobbelt-pil eller lig-større-end, 90 00:06:24,910 --> 00:06:29,660 bruges til at adskille en nøgle og dens tilsvarende værdi. 91 00:06:29,660 --> 00:06:41,830 Så værdien af ​​$ personale ["tf"] er strengen "tommy". 92 00:06:41,830 --> 00:06:44,430 Værdierne af en associativt array - 93 00:06:44,430 --> 00:06:47,540 ligesom enhver anden array - kan være af enhver type. 94 00:06:47,540 --> 00:07:23,370 For eksempel kunne vi sige, $ personale = ["instruktør" => "david", "TFS" => ["tommy", "rob"]];. 95 00:07:23,370 --> 00:07:27,810 Nu værdien af ​​»TFS« er et array. 96 00:07:27,810 --> 00:07:33,030 Det betyder, at værdierne inde i en associativ array kan være af forskellige typer. 97 00:07:33,030 --> 00:07:36,750 >> PHP arrays har heller ikke en fast længde, 98 00:07:36,750 --> 00:07:40,200 så vi kan tilføje eller fjerne elementer fra et array. 99 00:07:40,200 --> 00:07:49,130 Lad os sige, at vi har en simpel matrix som $ a = [1, 2, 3]. 100 00:07:49,130 --> 00:07:51,860 Hvis du vil tilføje et nyt element til dette array, 101 00:07:51,860 --> 00:07:57,160 kan vi sige, $ a [] = 4;. 102 00:07:57,160 --> 00:08:03,630 Nu er vores matrix består af fire elementer - [1, 2, 3, 4]. 103 00:08:03,630 --> 00:08:06,980 Husk på, at hvis vi ønskede at gøre noget som dette i C, 104 00:08:06,980 --> 00:08:09,610 ville vi nødt til at afsætte et helt nyt array, 105 00:08:09,610 --> 00:08:12,400 kopiere indholdet af vores første array i den, 106 00:08:12,400 --> 00:08:15,870 og derefter indstille det sidste element i den nye array til vores nye værdi. 107 00:08:15,870 --> 00:08:18,390 Det er meget lettere i PHP. 108 00:08:18,390 --> 00:08:21,230 Hvis vores matrix er en associativt array, 109 00:08:21,230 --> 00:08:24,810 Vi kan blot definere en ny nøgle til at skabe et element 110 00:08:24,810 --> 00:08:26,250 hvis det ikke eksisterer endnu. 111 00:08:26,250 --> 00:08:30,010 Hvis vi har vores tidligere array - $ personale - 112 00:08:30,010 --> 00:08:38,679 kan vi sige $ personale ["total"] = 3;. 113 00:08:38,679 --> 00:08:43,330 Nu har vi en ny nøgle med værdien på 3. 114 00:08:43,330 --> 00:08:46,460 >> For at få antallet af elementer i et array, 115 00:08:46,460 --> 00:08:48,230 kan vi bruge 'count' funktionen. 116 00:08:48,230 --> 00:08:56,100 Hvis vi siger, tælle ($ a), der vil have en værdi på 4. 117 00:08:56,100 --> 00:09:01,930 I PHP, kan vi skabe strenge ved hjælp dobbelt eller single citationstegn, 118 00:09:01,930 --> 00:09:04,470 så begge disse variable er strenge. 119 00:09:04,470 --> 00:09:21,780 $ S1 = "streng", $ s2 = 'anden streng «. 120 00:09:21,780 --> 00:09:23,920 Hvad er forskellen mellem disse to? 121 00:09:23,920 --> 00:09:26,950 Tja, det er ret almindeligt at ønsker at medtage 122 00:09:26,950 --> 00:09:29,600 værdien af ​​en variabel inde i en streng. 123 00:09:29,600 --> 00:09:34,390 En måde at gøre dette ville være at bruge PHP dot operatør, 124 00:09:34,390 --> 00:09:36,630 som sammenkæder strenge. 125 00:09:36,630 --> 00:09:38,680 Vi kunne gøre noget 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 vores n variabel er et heltal. 128 00:09:57,430 --> 00:10:00,020 Men når vi sammenkæde det med en snor, 129 00:10:00,020 --> 00:10:04,110 PHP vil automatisk konvertere den til en streng for os. 130 00:10:04,110 --> 00:10:09,090 Eller vi kan blot bruge dobbelte anførselstegn til at sætte variablen ind i strengen selv. 131 00:10:09,090 --> 00:10:19,290 Vi kan sige, $ s = "n er $ n";. 132 00:10:19,290 --> 00:10:24,040 Nu værdien af ​​$ s vil være "n er 5 '. 133 00:10:24,040 --> 00:10:34,250 Hvis vi bruger enkle citationstegn i stedet som i $ s = 'n er $ n'; 134 00:10:34,250 --> 00:10:39,670 værdien af ​​s vil være 'n er $ n';. 135 00:10:39,670 --> 00:10:43,720 Værdien af ​​n vil ikke blive erstattet, hvis vi bruger enkelte anførselstegn, 136 00:10:43,720 --> 00:10:47,150 men det vil være, hvis vi bruger anførselstegn. 137 00:10:47,150 --> 00:10:51,800 Hvis vi ønsker at bruge dobbelte anførselstegn til at medtage værdien af ​​et array i en streng, 138 00:10:51,800 --> 00:10:55,060 Vi bliver nødt til at medtage krøllede parenteser omkring array, som denne - 139 00:10:55,060 --> 00:11:14,470 $ S = "{$ personale ['total']}";. 140 00:11:14,470 --> 00:11:20,350 >> Lad os nu tage et kig på en lille stump i C og oversætte det til PHP. 141 00:11:20,350 --> 00:11:25,410 Her, vi skaber en funktion der udskriver bogstaverne i en streng, 142 00:11:25,410 --> 00:11:27,310 et tegn per linje. 143 00:11:27,310 --> 00:11:32,250 Lad os gøre det samme i PHP. 144 00:11:32,250 --> 00:11:36,530 Først vil vi brug for vores PHP afgrænsere. 145 00:11:36,530 --> 00:11:39,000 Når vi skaber vores funktion, 146 00:11:39,000 --> 00:11:42,740 Vi behøver ikke at angive dens returtype eller typen for sin argumentation. 147 00:11:42,740 --> 00:11:46,890 Vores s variable skal også starte med et dollartegn. 148 00:11:46,890 --> 00:11:51,590 PHP strlen funktion giver os længden af ​​en streng, 149 00:11:51,590 --> 00:11:55,660 ligesom C'er strlen giver os længden af ​​en streng. 150 00:11:55,660 --> 00:11:59,060 Under hætten selvom disse funktioner er faktisk en smule anderledes 151 00:11:59,060 --> 00:12:03,010 da en streng er en indbygget type PHP. 152 00:12:03,010 --> 00:12:06,930 Syntaksen i vores 'for' loop er den samme. 153 00:12:06,930 --> 00:12:13,530 >> I PHP, kan vi også bruge matrix notation at få adgang til tegn i en streng. 154 00:12:13,530 --> 00:12:19,350 Vi kan nu bruge funktionen Udskriv til at udskrive hvert bogstav i strengen. 155 00:12:19,350 --> 00:12:23,080 Med PHP print-funktion, behøver vi ikke at bekymre sig om pladsholdere - 156 00:12:23,080 --> 00:12:28,200 Ligesom% d eller% c - når vi ønsker at udskrive en variabel, der ikke er en streng. 157 00:12:28,200 --> 00:12:33,590 I stedet kan vi simpelthen passere en variabel af enhver art på print-funktionen, 158 00:12:33,590 --> 00:12:36,810 og den vil blive konverteret til en streng og vises. 159 00:12:36,810 --> 00:12:43,430 Og det er det! Lad os nu køre vores fil med "php print.php". 160 00:12:43,430 --> 00:12:48,160 Og der er output vi så fra vores C-program. 161 00:12:48,160 --> 00:12:52,120 >> PHP understøtter også en konstruktion kaldet "foreach" loop. 162 00:12:52,120 --> 00:12:54,800 Den "foreach" loop er ligesom en 'for' loop, 163 00:12:54,800 --> 00:12:59,080 men det tilføjer en smule syntaktisk sukker at gøre tingene mere læsbar. 164 00:12:59,080 --> 00:13:03,690 Her, vi skaber et nyt array kaldet '$ matrix ". 165 00:13:03,690 --> 00:13:10,090 Nu kan vi sige, foreach ($ array som $ nummer) 166 00:13:10,090 --> 00:13:12,390 og vi kan printe ud $ nummer. 167 00:13:12,390 --> 00:13:20,650 Når vi kører denne fil - php foreach.php--kan vi se hvert nummer på hver sin linje. 168 00:13:20,650 --> 00:13:26,700 >> Når vi skrev C-kode, var det ofte nyttigt at organisere vores kode i separate filer. 169 00:13:26,700 --> 00:13:29,170 I PHP, kan vi gøre det samme. 170 00:13:29,170 --> 00:13:33,870 Lad os sige, vi har et par funktioner i en fil kaldet math.php. 171 00:13:33,870 --> 00:13:38,900 Hvis jeg ønsker at bruge disse funktioner i en anden PHP-fil, som calculator.php, 172 00:13:38,900 --> 00:13:44,110 Jeg kan bruge PHP require_once () funktion. 173 00:13:44,110 --> 00:13:47,110 Require_once er ligesom # include. 174 00:13:47,110 --> 00:13:52,050 Når det gives en sti til en fil, vil den væsentlige kopiere og indsætte indholdet 175 00:13:52,050 --> 00:13:54,930 af denne fil i den aktuelle fil. 176 00:13:54,930 --> 00:14:00,150 Require_once sikrer, at hver fil er inkluderet i den aktuelle fil én gang, 177 00:14:00,150 --> 00:14:05,680 som kan være nyttige, hvis du har en stor samling af PHP-filer kræver hinanden. 178 00:14:05,680 --> 00:14:07,750 Lad os tage et kig på et eksempel. 179 00:14:07,750 --> 00:14:12,620 Her har vi en samling af funktioner, som jeg gerne vil bruge i en anden fil. 180 00:14:12,620 --> 00:14:14,990 Lad os tage et kig på, hvordan vi kan bruge dem. 181 00:14:14,990 --> 00:14:20,700 På linje 3, vi kræver math.php. 182 00:14:20,700 --> 00:14:27,170 Den "__DIR__ 'er en særlig konstant, der repræsenterer den aktuelle mappe 183 00:14:27,170 --> 00:14:33,440 da math.php og calculator.php er placeret i samme bibliotek. 184 00:14:33,440 --> 00:14:38,010 Efter at vi kræver math.php, kan vi bruge funktionerne 185 00:14:38,010 --> 00:14:41,690  som om vi har defineret dem i calculator.php. 186 00:14:41,690 --> 00:14:47,440 Lad os køre dette med "php calculator.php". Great! 187 00:14:47,440 --> 00:14:50,880 >> Det er det for vores introduktion til PHP syntaks. 188 00:14:50,880 --> 00:14:53,700 For at finde ud af mere, tjek PHP.net. 189 00:14:53,700 --> 00:14:59,470 PHP har en masse indbyggede funktioner, og heldigvis dens dokumentation er virkelig stor. 190 00:14:59,470 --> 00:15:02,680 Mit 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 >> ... Beslag, jeg er ude af plads. Fandens! Dette er den sidste video, hvor jeg bruger store ord i koden.