[Powered by Google Translate] [PHP Syntax] [Tommy MacWilliam] [Harvard University] [Dette er CS50.] [CS50.TV] I denne video, vil vi introducere PHP - et af de sprog, vi skal bruge i CS50 som vi overgangen til webudvikling. PHP står for PHP Hypertext Processor, eller PHP Hypertext Processor Hypertext Processor, og jeg vil stoppe der. PHP er en rekursiv akronym, som jeg synes er virkelig fantastisk. Så lad os skrive 'hello verden "i PHP, som vil være en smule anderledes end den 'hello verden "i C, som vi er kommet til at kende og elske. I stedet for at skabe en fil kaldet hello.c, opretter vi hello.php. Alle vores PHP kode vil blive indeholdt mellem . Hvis vi har nogen PHP kode, der er placeret uden for disse afgrænsere, vil det ikke udføre. Vi kan have så mange af disse PHP blokke som vi ønsker i en enkelt PHP-fil. I PHP er der ikke behov for en hovedfunktion. I stedet vil vores PHP kode køres i den rækkefølge, det vises i vores PHP-fil. Både C og PHP har en 'printf' funktionen til udsendelse af data. Men i PHP, behøver vi ikke at # omfatte eventuelle header filer som standardIO.h. Det er fordi i PHP, vil vi ikke kompilere vores kode. Når vi skrev C-kode vores workflow tendens til at åbne op én eller flere. c eller. h filer, ændre dem, kompilering dem, og kører den resulterende binære. Tjek Compilere video for mere information om denne proces. I modsætning til C, er PHP et fortolket - snarere end kompileret - sprog. Det betyder, at PHP kode vi skriver vil blive kørt gennem et specielt program kaldet en tolk, hvilket igen vil gennemføre vores kode. Hvis du vil køre vores PHP-kode, sender vi det videre til PHP fortolkeren, som vil håndtere dets gennemførelse, snarere end kompilere det til maskinkode. Lad os se tolken i aktion. Vi åbner en terminal og køre PHP kommando efterfulgt af stien til PHP-fil, vi gerne vil køre. Vi vil sige, 'php hello.php ". Og der går vi. Der er produktionen af ​​vores PHP program. Vi behøvede ikke at kompilere vores PHP-fil på alle. I stedet havde vi et andet program - PHP tolk - udføre kildekode, som vi skrev. PHP kan gøre meget mere end blot printf. Lad os skrive nogle mere komplekse PHP-programmer. Syntaksen for konstruktioner - ligesom hvis, ellers, mens det for, og switch - er den samme i PHP og C. Ligesom C, bruger hver af disse konstruktioner seler til at afgrænse deres krop, og ligesom i C, hver linje, vi skriver skal ende med et semikolon; dog variabler håndteres lidt forskelligt i PHP. Først skal alle variabler i PHP starte med dollartegn. Det virker en lille smule underligt i starten, men du vil vænne sig til det. For det andet, PHP er et løst skrevet sprog hvilket betyder at du ikke behøver at eksplicit liste typen af ​​en variabel, når du opretter den. Hvor i C ville du nødt til at sige int x = 5; eller char y = 'a'; i PHP kan vi blot sige $ x = 5; og $ y = 'a';. Det samme gælder for funktioner. Snarere end at sige int f () {kroppen af ​​vores funktion} i PHP vi kommer til at sige funktion f () {kroppen af ​​vores funktion}. Vi behøver ikke eksplicit angive returtype vores funktion f. Funktioner i PHP heller ikke nødt til at returnere samme type hver gang de bliver henrettet. For eksempel kunne vi skrive en funktion, der returnerer falsk på en fejl og en anden type, hvis det lykkes. Dette kan også hjælpe os skrive mere generiske funktioner. For eksempel kunne vi skrive en enkelt add funktionen der kan returnere et heltal, hvis 2 heltal er givet eller en svømmer hvis 2 flydere er givet. I C, ville vi nødt til at skrive 2 separate funktioner til at gøre dette. Mens der i C vi bruger pejlemærker for et raise og strygere, Vi vil ikke være i stand til at bruge pejlemærker i PHP. I stedet både arrays og strygere er indbyggede typer i PHP. De er bygget lige ind i sproget. For at oprette et array i PHP, vi kan sige, $ A = array (1, 2, 3); eller blot $ a = [1, 2, 3]. Vi kan indekset i denne array ved hjælp af den samme syntaks, som vi er vant til fra C. For at få det første element, vi vil sige, $ a [0];. PHP har også indbygget understøttelse for associative arrays. Associative arrays er ligesom hash tabellen datastruktur vi allerede har set - de kortlægge en nøgle til en værdi. Lad os tage et kig på et eksempel. Vi kan sige, $ personale = ["instruktør" => "david", "tf" => "tommy"];. Her har jeg en associativt array med 2 nøgler - instruktør og tf. Den dobbelt-pil eller lig-større-end, bruges til at adskille en nøgle og dens tilsvarende værdi. Så værdien af ​​$ personale ["tf"] er strengen "tommy". Værdierne af en associativt array - ligesom enhver anden array - kan være af enhver type. For eksempel kunne vi sige, $ personale = ["instruktør" => "david", "TFS" => ["tommy", "rob"]];. Nu værdien af ​​»TFS« er et array. Det betyder, at værdierne inde i en associativ array kan være af forskellige typer. PHP arrays har heller ikke en fast længde, så vi kan tilføje eller fjerne elementer fra et array. Lad os sige, at vi har en simpel matrix som $ a = [1, 2, 3]. Hvis du vil tilføje et nyt element til dette array, kan vi sige, $ a [] = 4;. Nu er vores matrix består af fire elementer - [1, 2, 3, 4]. Husk på, at hvis vi ønskede at gøre noget som dette i C, ville vi nødt til at afsætte et helt nyt array, kopiere indholdet af vores første array i den, og derefter indstille det sidste element i den nye array til vores nye værdi. Det er meget lettere i PHP. Hvis vores matrix er en associativt array, Vi kan blot definere en ny nøgle til at skabe et element hvis det ikke eksisterer endnu. Hvis vi har vores tidligere array - $ personale - kan vi sige $ personale ["total"] = 3;. Nu har vi en ny nøgle med værdien på 3. For at få antallet af elementer i et array, kan vi bruge 'count' funktionen. Hvis vi siger, tælle ($ a), der vil have en værdi på 4. I PHP, kan vi skabe strenge ved hjælp dobbelt eller single citationstegn, så begge disse variable er strenge. $ S1 = "streng", $ s2 = 'anden streng «. Hvad er forskellen mellem disse to? Tja, det er ret almindeligt at ønsker at medtage værdien af ​​en variabel inde i en streng. En måde at gøre dette ville være at bruge PHP dot operatør, som sammenkæder strenge. Vi kunne gøre noget som dette - $ N = 5; $ s = 'n er' $ n..;. Her vores n variabel er et heltal. Men når vi sammenkæde det med en snor, PHP vil automatisk konvertere den til en streng for os. Eller vi kan blot bruge dobbelte anførselstegn til at sætte variablen ind i strengen selv. Vi kan sige, $ s = "n er $ n";. Nu værdien af ​​$ s vil være "n er 5 '. Hvis vi bruger enkle citationstegn i stedet som i $ s = 'n er $ n'; værdien af ​​s vil være 'n er $ n';. Værdien af ​​n vil ikke blive erstattet, hvis vi bruger enkelte anførselstegn, men det vil være, hvis vi bruger anførselstegn. Hvis vi ønsker at bruge dobbelte anførselstegn til at medtage værdien af ​​et array i en streng, Vi bliver nødt til at medtage krøllede parenteser omkring array, som denne - $ S = "{$ personale ['total']}";. Lad os nu tage et kig på en lille stump i C og oversætte det til PHP. Her, vi skaber en funktion der udskriver bogstaverne i en streng, et tegn per linje. Lad os gøre det samme i PHP. Først vil vi brug for vores PHP afgrænsere. Når vi skaber vores funktion, Vi behøver ikke at angive dens returtype eller typen for sin argumentation. Vores s variable skal også starte med et dollartegn. PHP strlen funktion giver os længden af ​​en streng, ligesom C'er strlen giver os længden af ​​en streng. Under hætten selvom disse funktioner er faktisk en smule anderledes da en streng er en indbygget type PHP. Syntaksen i vores 'for' loop er den samme. I PHP, kan vi også bruge matrix notation at få adgang til tegn i en streng. Vi kan nu bruge funktionen Udskriv til at udskrive hvert bogstav i strengen. Med PHP print-funktion, behøver vi ikke at bekymre sig om pladsholdere - Ligesom% d eller% c - når vi ønsker at udskrive en variabel, der ikke er en streng. I stedet kan vi simpelthen passere en variabel af enhver art på print-funktionen, og den vil blive konverteret til en streng og vises. Og det er det! Lad os nu køre vores fil med "php print.php". Og der er output vi så fra vores C-program. PHP understøtter også en konstruktion kaldet "foreach" loop. Den "foreach" loop er ligesom en 'for' loop, men det tilføjer en smule syntaktisk sukker at gøre tingene mere læsbar. Her, vi skaber et nyt array kaldet '$ matrix ". Nu kan vi sige, foreach ($ array som $ nummer) og vi kan printe ud $ nummer. Når vi kører denne fil - php foreach.php--kan vi se hvert nummer på hver sin linje. Når vi skrev C-kode, var det ofte nyttigt at organisere vores kode i separate filer. I PHP, kan vi gøre det samme. Lad os sige, vi har et par funktioner i en fil kaldet math.php. Hvis jeg ønsker at bruge disse funktioner i en anden PHP-fil, som calculator.php, Jeg kan bruge PHP require_once () funktion. Require_once er ligesom # include. Når det gives en sti til en fil, vil den væsentlige kopiere og indsætte indholdet af denne fil i den aktuelle fil. Require_once sikrer, at hver fil er inkluderet i den aktuelle fil én gang, som kan være nyttige, hvis du har en stor samling af PHP-filer kræver hinanden. Lad os tage et kig på et eksempel. Her har vi en samling af funktioner, som jeg gerne vil bruge i en anden fil. Lad os tage et kig på, hvordan vi kan bruge dem. På linje 3, vi kræver math.php. Den "__DIR__ 'er en særlig konstant, der repræsenterer den aktuelle mappe da math.php og calculator.php er placeret i samme bibliotek. Efter at vi kræver math.php, kan vi bruge funktionerne  som om vi har defineret dem i calculator.php. Lad os køre dette med "php calculator.php". Great! Det er det for vores introduktion til PHP syntaks. For at finde ud af mere, tjek PHP.net. PHP har en masse indbyggede funktioner, og heldigvis dens dokumentation er virkelig stor. Mit navn er Tommy, og dette er CS50. [CS50.TV] ... Beslag, jeg er ude af plads. Fandens! Dette er den sidste video, hvor jeg bruger store ord i koden.