1 00:00:00,000 --> 00:00:02,400 [Powered by Google Translate] [PHP Cystrawen] 2 00:00:02,400 --> 00:00:04,400 [Tommy MacWilliam] [Prifysgol Harvard] 3 00:00:04,400 --> 00:00:07,400 [Mae hyn yn CS50.] [CS50.TV] 4 00:00:07,400 --> 00:00:10,080 >> Yn y fideo, byddwn yn cyflwyno PHP - 5 00:00:10,080 --> 00:00:12,820 un o'r ieithoedd y byddwn yn eu defnyddio yn CS50 6 00:00:12,820 --> 00:00:15,480 wrth i ni newid i ddatblygu ar y we. 7 00:00:15,480 --> 00:00:19,250 PHP yn sefyll am PHP Prosesydd Hypertext, 8 00:00:19,250 --> 00:00:23,440 neu PHP Prosesydd Hypertext Hypertext Prosesydd, 9 00:00:23,440 --> 00:00:24,880 a byddaf yn stopio yno. 10 00:00:24,880 --> 00:00:29,280 PHP yn acronym ailadroddus, yr wyf yn credu yn wirioneddol awesome. 11 00:00:29,280 --> 00:00:32,020 >> Felly, gadewch i ni ysgrifennu 'helo byd' yn PHP, 12 00:00:32,020 --> 00:00:37,240 a fydd yn ychydig yn wahanol na'r 'byd hello' yn C ein bod wedi dod i wybod a chariad. 13 00:00:37,240 --> 00:00:40,330 Yn hytrach na creu ffeil o'r enw hello.c, 14 00:00:40,330 --> 00:00:42,990 byddwn yn creu hello.php. 15 00:00:42,990 --> 00:00:52,430 Bydd pob un o'n cod PHP yn cael ei gynnwys rhwng . 16 00:00:52,430 --> 00:00:56,160 Os oes gennym unrhyw god PHP sydd wedi ei leoli 17 00:00:56,160 --> 00:00:59,140 y tu allan i'r amffinyddion hyn, ni fydd yn gweithredu. 18 00:00:59,140 --> 00:01:01,740 Gallwn fod â chymaint o'r blociau PHP 19 00:01:01,740 --> 00:01:05,090 gan ein bod eisiau y tu mewn i ffeil PHP sengl. 20 00:01:05,090 --> 00:01:09,000 Yn PHP does dim angen am brif swyddogaeth. 21 00:01:09,000 --> 00:01:15,540 Yn lle hynny, bydd ein cod PHP yn cael ei redeg yn y drefn y mae'n ymddangos yn ein ffeil PHP. 22 00:01:15,540 --> 00:01:20,970 Mae C a PHP yn cael swyddogaeth 'printf' ar gyfer outputting data. 23 00:01:20,970 --> 00:01:27,270 Ond yn PHP, nid oes angen i ni # cynnwys unrhyw ffeiliau header fel standardIO.h. 24 00:01:27,270 --> 00:01:31,830 Mae hyn oherwydd yn PHP ni fyddwn yn llunio ein cod. 25 00:01:31,830 --> 00:01:35,560 Pan fyddwn yn ysgrifennu C côd ein llif gwaith yn tueddu i gael ei agor 26 00:01:35,560 --> 00:01:39,560 un neu fwy. c neu. ffeiliau h, eu newid, eu llunio, 27 00:01:39,560 --> 00:01:41,980 a rhedeg y binary deillio o hynny. 28 00:01:41,980 --> 00:01:45,800 Edrychwch ar y fideo Crynoadyddion am fwy o wybodaeth am y broses hon. 29 00:01:45,800 --> 00:01:51,480 >> Yn wahanol i C, PHP yn dehongli - iaith - yn hytrach na llunio. 30 00:01:51,480 --> 00:01:54,080 Mae hynny'n golygu bod y cod PHP yn ysgrifennu 31 00:01:54,080 --> 00:01:57,360 Bydd yn cael ei rhedeg drwy raglen arbennig o'r enw cyfieithydd ar y pryd, 32 00:01:57,360 --> 00:02:00,440 a fydd yn ei dro yn cyflawni ein cod. 33 00:02:00,440 --> 00:02:03,020 I redeg ein cod PHP, 34 00:02:03,020 --> 00:02:07,860 byddwn yn anfon draw i'r cyfieithydd PHP a fydd yn trin ei weithredu, 35 00:02:07,860 --> 00:02:11,260 yn hytrach na llunio i cod peiriant. 36 00:02:11,260 --> 00:02:13,450 Gadewch i ni weld y cyfieithydd ar waith. 37 00:02:13,450 --> 00:02:17,010 Byddwn yn agor terfynell a rhedeg y gorchymyn PHP 38 00:02:17,010 --> 00:02:21,130 ddilyn gan y llwybr at y ffeil PHP byddem yn hoffi rhedeg. 39 00:02:21,130 --> 00:02:25,690 Byddwn yn dweud, 'php hello.php'. 40 00:02:25,690 --> 00:02:30,200 A dyna ni. Mae allbwn ein rhaglen PHP. 41 00:02:30,200 --> 00:02:33,460 Nid oedd angen i lunio ein ffeil PHP o gwbl. 42 00:02:33,460 --> 00:02:37,280 Yn lle hynny, yr oedd gennym rhaglen arall - y cyfieithydd PHP - 43 00:02:37,280 --> 00:02:40,070 gweithredu y sourcecode yr ydym yn ysgrifennu. 44 00:02:40,070 --> 00:02:43,280 >> Gall PHP wneud llawer mwy na dim ond printf. 45 00:02:43,280 --> 00:02:46,490 Gadewch i ysgrifennu rhai rhaglenni PHP mwy cymhleth. 46 00:02:46,490 --> 00:02:52,240 Mae cystrawen ar gyfer elfennau - fel os, arall, tra, ar gyfer, a newid - 47 00:02:52,240 --> 00:02:55,440 yr un fath yn PHP a C. 48 00:02:55,440 --> 00:03:01,180 Yn union fel C, pob un o'r cysyniadau hyn yn defnyddio bresys i ddiffinio eu corff, 49 00:03:01,180 --> 00:03:04,420 ac yn union fel yn C, mae pob llinell yn ysgrifennu 50 00:03:04,420 --> 00:03:06,830 Rhaid gorffen gyda hanner colon; 51 00:03:06,830 --> 00:03:10,700 Fodd bynnag, newidynnau yn cael eu trin ychydig yn wahanol yn PHP. 52 00:03:10,700 --> 00:03:15,630 Yn gyntaf, mae'n rhaid i bob newidynnau mewn PHP dechrau gyda'r arwydd ddoler. 53 00:03:15,630 --> 00:03:18,700 Mae'n ymddangos ychydig yn od ar y dechrau, ond byddwch yn dod i arfer ag ef. 54 00:03:18,700 --> 00:03:22,150 Yn ail, PHP yn iaith llac-deipio 55 00:03:22,150 --> 00:03:24,570 sy'n golygu nad oes angen i chi restru'r benodol 56 00:03:24,570 --> 00:03:27,640 y math o newidyn pan fyddwch yn ei greu. 57 00:03:27,640 --> 00:03:33,430 Lle y byddai yn C bydd angen i chi ddweud int x = 5; 58 00:03:33,430 --> 00:03:38,650 neu torgoch y = 'a'; 59 00:03:39,250 --> 00:03:44,790 yn PHP gallwn ddweud yn syml $ x = 5; 60 00:03:44,790 --> 00:03:48,930 a $ y = 'a';. 61 00:03:48,930 --> 00:03:52,360 Mae'r un peth yn berthnasol i swyddogaethau. 62 00:03:52,360 --> 00:04:01,290 Yn hytrach na dweud f int () {corff ein swyddogaeth}, 63 00:04:01,290 --> 00:04:12,160 yn PHP rydym yn mynd i ddweud ffwythiant f () {corff ein swyddogaeth}. 64 00:04:12,160 --> 00:04:17,579 Nid oes angen inni nodi yn benodol y math dychwelyd ein swyddogaeth f. 65 00:04:17,579 --> 00:04:22,070 Hefyd, nid oes rhaid i swyddogaethau mewn PHP i ddychwelyd yr un fath 66 00:04:22,070 --> 00:04:23,840 bob tro y byddant yn cael eu gweithredu. 67 00:04:23,840 --> 00:04:27,940 Er enghraifft, gallem ysgrifennu swyddogaeth sy'n dychwelyd ffug ar gamgymeriad 68 00:04:27,940 --> 00:04:29,750 a'r math arall os bydd yn llwyddo. 69 00:04:29,750 --> 00:04:33,060 >> Gall hyn hefyd yn ein helpu i ysgrifennu swyddogaethau mwy cyffredinol. 70 00:04:33,060 --> 00:04:35,710 Er enghraifft, gallem ysgrifennu swyddogaeth ychwanegu un 71 00:04:35,710 --> 00:04:39,200 Gall bod yn dychwelyd yn gyfanrif os 2 gyfanrifau yn cael 72 00:04:39,200 --> 00:04:41,250 neu fflôt os 2 fflotiau cael eu rhoi. 73 00:04:41,250 --> 00:04:45,530 Yn C, byddai angen i ni ysgrifennu 2 swyddogaeth ar wahân i wneud hyn. 74 00:04:45,530 --> 00:04:49,230 Tra yn C rydym yn defnyddio awgrymiadau ar gyfer codi a llinynnau, 75 00:04:49,230 --> 00:04:52,170 ni fyddwn yn gallu defnyddio awgrymiadau yn PHP. 76 00:04:52,170 --> 00:04:58,030 Yn lle hynny, yn araeau a llinynnau yn adeiledig mewn mathau yn PHP. 77 00:04:58,030 --> 00:04:59,660 Maent yn adeiladu dde i mewn i'r iaith. 78 00:04:59,660 --> 00:05:02,270 Er mwyn creu amrywiaeth yn PHP gallwn ddweud, 79 00:05:02,270 --> 00:05:11,280 $ A array = (1, 2, 3); 80 00:05:11,280 --> 00:05:19,400 neu yn fwy syml $ a = [1, 2, 3];. 81 00:05:19,400 --> 00:05:24,990 Gallwn mynegai i'r amrywiaeth hwn gan ddefnyddio'r un gystrawen ein bod yn eu defnyddio i o C. 82 00:05:24,990 --> 00:05:31,780 I gael yr elfen gyntaf byddwn yn dweud, $ a [0];. 83 00:05:31,780 --> 00:05:36,290 PHP Mae gan adeiledig yn gymorth i araeau cysylltiadol. 84 00:05:36,290 --> 00:05:41,460 Araeau cysylltiadol yn union fel y strwythur data tabl hash rydym eisoes wedi gweld - 85 00:05:41,460 --> 00:05:44,060 maent yn mapio allwedd i werth. 86 00:05:44,060 --> 00:05:46,070 >> Gadewch i ni edrych ar enghraifft. 87 00:05:46,070 --> 00:06:14,740 Gallwn ddweud, $ staff = ["hyfforddwr" => "david", "tf" => "tommy"];. 88 00:06:14,740 --> 00:06:21,020 Yma, mae gennyf amrywiaeth cysylltiadol gyda 2 allweddi - hyfforddwr a tf. 89 00:06:21,020 --> 00:06:24,910 Y dwbl-saeth, neu'n hafal-fwy-nag, 90 00:06:24,910 --> 00:06:29,660 yn cael ei ddefnyddio i wahanu allweddol a'i werth cyfatebol. 91 00:06:29,660 --> 00:06:41,830 Felly, mae'r gwerth o $ staff ["tf"] yn y llinyn "tommy". 92 00:06:41,830 --> 00:06:44,430 Mae'r gwerthoedd o fyrdd cysylltiadol - 93 00:06:44,430 --> 00:06:47,540 yn debyg iawn i unrhyw amrywiaeth arall - gall fod o unrhyw fath. 94 00:06:47,540 --> 00:07:23,370 Er enghraifft, gallem ddweud, $ staff = ["hyfforddwr" => "david", "TFS" => ["tommy", "rob"]];. 95 00:07:23,370 --> 00:07:27,810 Nawr bod y gwerth o 'TFS yn arae. 96 00:07:27,810 --> 00:07:33,030 Mae hynny'n golygu y gall y gwerthoedd y tu mewn un amrywiaeth cysylltiadol fod o wahanol fathau. 97 00:07:33,030 --> 00:07:36,750 >> Rhesi PHP hefyd nad oes gan gyfnod penodol, 98 00:07:36,750 --> 00:07:40,200 fel y gallwn ychwanegu neu dynnu elfennau o amrywiaeth. 99 00:07:40,200 --> 00:07:49,130 Lets 'ddeud mae gennym amrywiaeth syml fel $ a = [1, 2, 3];. 100 00:07:49,130 --> 00:07:51,860 I ychwanegu elfen newydd i'r amrywiaeth hwn, 101 00:07:51,860 --> 00:07:57,160 gallwn ddweud, $ a [] = 4;. 102 00:07:57,160 --> 00:08:03,630 Nawr ein amrywiaeth yn cynnwys pedair elfen - [1, 2, 3, 4]. 103 00:08:03,630 --> 00:08:06,980 Dwyn i gof, os oeddem am wneud rhywbeth fel hyn yn C, 104 00:08:06,980 --> 00:08:09,610 byddai'n rhaid i ni ddyrannu amrywiaeth newydd sbon, 105 00:08:09,610 --> 00:08:12,400 copïo cynnwys ein amrywiaeth yn gyntaf i mewn iddo, 106 00:08:12,400 --> 00:08:15,870 ac yna gosod y elfen olaf y casgliad newydd at ein gwerth newydd. 107 00:08:15,870 --> 00:08:18,390 Mae hyn yn llawer haws yn PHP. 108 00:08:18,390 --> 00:08:21,230 Os yw ein amrywiaeth yn arae cysylltiadol, 109 00:08:21,230 --> 00:08:24,810 gallwn ni ddiffinio allwedd newydd i greu elfen 110 00:08:24,810 --> 00:08:26,250 os nad yw'n bodoli eto. 111 00:08:26,250 --> 00:08:30,010 Os ydym wedi ein amrywiaeth yn gynharach - $ staff - 112 00:08:30,010 --> 00:08:38,679 gallwn ddweud $ staff ["cyfanswm"] = 3;. 113 00:08:38,679 --> 00:08:43,330 Nawr mae gennym allwedd newydd gyda gwerth o 3. 114 00:08:43,330 --> 00:08:46,460 >> I gael y nifer o elfennau mewn amrywiaeth, 115 00:08:46,460 --> 00:08:48,230 gallwn ddefnyddio'r swyddogaeth 'cyfrif'. 116 00:08:48,230 --> 00:08:56,100 Os dywedwn, cyfrif ($ a);, a fydd yn cael werth o 4. 117 00:08:56,100 --> 00:09:01,930 Yn PHP, gallwn greu llinynnau defnyddio dyfynodau dwbl neu sengl, 118 00:09:01,930 --> 00:09:04,470 felly ddau o'r newidynnau hyn yn llinynnau. 119 00:09:04,470 --> 00:09:21,780 $ S1 = "llinyn"; $ a2 = 'llinyn arall';. 120 00:09:21,780 --> 00:09:23,920 Beth yw'r gwahaniaeth rhwng y ddau? 121 00:09:23,920 --> 00:09:26,950 Wel, mae'n eithaf cyffredin i am gynnwys y 122 00:09:26,950 --> 00:09:29,600 gwerth mewn amrywiol o gyfres. 123 00:09:29,600 --> 00:09:34,390 Un ffordd o wneud hyn fyddai defnyddio weithredwr dot PHP yn, 124 00:09:34,390 --> 00:09:36,630 pa llinynnau concatenates. 125 00:09:36,630 --> 00:09:38,680 Gallem wneud rhywbeth fel hyn - 126 00:09:38,680 --> 00:09:53,800 $ N = 5; $ s = 'n yw' $ n.;. 127 00:09:53,800 --> 00:09:57,430 Yma mae ein n newidyn yn gyfanrif. 128 00:09:57,430 --> 00:10:00,020 Ond pan fyddwn yn concatenate gyda llinyn, 129 00:10:00,020 --> 00:10:04,110 Bydd PHP trosi yn awtomatig i llinyn i ni. 130 00:10:04,110 --> 00:10:09,090 Neu gallwn yn syml yn defnyddio dyfynodau dwbl i roi'r newidyn yn y llinyn ei hun. 131 00:10:09,090 --> 00:10:19,290 Gallwn ddweud, $ s = "n yw $ n";. 132 00:10:19,290 --> 00:10:24,040 Yn awr, bydd y gwerth $ s yn 'n yw 5'. 133 00:10:24,040 --> 00:10:34,250 Os ydym yn defnyddio dyfynodau sengl yn lle hynny, fel yn $ s = 'n yn $ n'; 134 00:10:34,250 --> 00:10:39,670 bydd gwerth s fod yn 'n yn $ n';. 135 00:10:39,670 --> 00:10:43,720 Ni fydd y werth n yn lle os ydym yn defnyddio dyfynodau sengl, 136 00:10:43,720 --> 00:10:47,150 ond bydd yn cael ei os ydym yn defnyddio dyfynodau dwbl. 137 00:10:47,150 --> 00:10:51,800 Os ydym am ddefnyddio dyfynodau dwbl i gynnwys gwerth amrywiaeth mewn llinyn, 138 00:10:51,800 --> 00:10:55,060 bydd angen i ni gynnwys braces cyrliog o gwmpas y casgliad, fel hyn - 139 00:10:55,060 --> 00:11:14,470 $ S = "{$ staff ['cyfanswm']}";. 140 00:11:14,470 --> 00:11:20,350 >> Gadewch i ni yn awr yn cymryd golwg ar snippet bach yn C ac yn ei gyfieithu i PHP. 141 00:11:20,350 --> 00:11:25,410 Yma, rydym yn creu swyddogaeth sy'n argraffu allan y llythrennau o linyn, 142 00:11:25,410 --> 00:11:27,310 un cymeriad bob llinell. 143 00:11:27,310 --> 00:11:32,250 Gadewch i ni wneud yr un peth yn PHP. 144 00:11:32,250 --> 00:11:36,530 Yn gyntaf, bydd angen ein amffinyddion PHP arnom. 145 00:11:36,530 --> 00:11:39,000 Pan rydym yn creu ein swyddogaeth, 146 00:11:39,000 --> 00:11:42,740 Nid oes angen i ni nodi o'i bath ffurflen dreth, neu fath o ei ddadl. 147 00:11:42,740 --> 00:11:46,890 Rhaid i'n amrywiol s hefyd yn dechrau gydag arwydd doler. 148 00:11:46,890 --> 00:11:51,590 PHP yn strlen swyddogaeth yn rhoi hyd llinyn ni, 149 00:11:51,590 --> 00:11:55,660 yn union fel C strlen rhoi hyd llinyn i ni. 150 00:11:55,660 --> 00:11:59,060 O dan y cwfl fodd bynnag, mae'r swyddogaethau hyn mewn gwirionedd ychydig yn wahanol 151 00:11:59,060 --> 00:12:03,010 gan fod llinyn yn fath adeiladedig i mewn yn PHP. 152 00:12:03,010 --> 00:12:06,930 Mae cystrawen ein 'o blaid' loop yr un fath. 153 00:12:06,930 --> 00:12:13,530 >> Yn PHP, gallwn hefyd ddefnyddio nodiant amrywiaeth i gael mynediad at y cymeriadau mewn cyfres. 154 00:12:13,530 --> 00:12:19,350 Gallwn bellach yn defnyddio'r swyddogaeth argraffu i argraffu pob llythyren yn y llinyn. 155 00:12:19,350 --> 00:12:23,080 Gyda swyddogaeth print PHP, nid oes angen i ni boeni am bachau - 156 00:12:23,080 --> 00:12:28,200 fel% d neu% c - pan rydym am i argraffu newidyn nad yw'n llinyn. 157 00:12:28,200 --> 00:12:33,590 Yn lle hynny, gallwn yn syml basio amrywiol o unrhyw fath i'r swyddogaeth print, 158 00:12:33,590 --> 00:12:36,810 a bydd yn cael ei drosi i linyn a'u harddangos. 159 00:12:36,810 --> 00:12:43,430 A dyna ni! Gadewch i ni yn awr yn rhedeg ein ffeil gyda 'php print.php'. 160 00:12:43,430 --> 00:12:48,160 Ac mae allbwn welsom o'n rhaglen C. 161 00:12:48,160 --> 00:12:52,120 >> PHP hefyd yn cefnogi lluniad a elwir y ddolen 'foreach'. 162 00:12:52,120 --> 00:12:54,800 Dolen Mae'r 'foreach' yn union fel 'yn lle' ddolen, 163 00:12:54,800 --> 00:12:59,080 ond mae'n ychwanegu ychydig o siwgr cystrawennol i wneud pethau'n fwy darllenadwy. 164 00:12:59,080 --> 00:13:03,690 Yma, rydym yn creu amrywiaeth newydd o'r enw '$ array'. 165 00:13:03,690 --> 00:13:10,090 Nawr gallwn ddweud, foreach ($ array â $ rhif), 166 00:13:10,090 --> 00:13:12,390 a gallwn argraffu $ rhif. 167 00:13:12,390 --> 00:13:20,650 Pan rydym yn rhedeg y ffeil - gall php foreach.php--gwelwn pob rhif ar ei linell ei hun. 168 00:13:20,650 --> 00:13:26,700 >> Pan fyddwn yn ysgrifennu cod C, roedd yn aml yn ddefnyddiol i drefnu ein cod i mewn i ffeiliau ar wahân. 169 00:13:26,700 --> 00:13:29,170 Yn PHP, gallwn wneud yr un peth. 170 00:13:29,170 --> 00:13:33,870 Lets 'ddeud mae gennym ychydig o swyddogaethau mewn ffeil o'r enw math.php. 171 00:13:33,870 --> 00:13:38,900 Os ydw i am ddefnyddio swyddogaethau hynny yn y ffeil PHP arall, fel calculator.php, 172 00:13:38,900 --> 00:13:44,110 Gallaf ddefnyddio PHP yn require_once () swyddogaeth. 173 00:13:44,110 --> 00:13:47,110 Require_once yn union fel # gynnwys. 174 00:13:47,110 --> 00:13:52,050 Pan roddir llwybr i ffeil, bydd yn hanfod adysgrifia a bastio 'r cynnwys 175 00:13:52,050 --> 00:13:54,930 o'r ffeil i mewn i'r ffeil cyfredol. 176 00:13:54,930 --> 00:14:00,150 Require_once yn sicrhau bod pob ffeil yn cael ei gynnwys yn y ffeil cyfredol unwaith yn unig, 177 00:14:00,150 --> 00:14:05,680 a all fod yn ddefnyddiol os oes gennych chi gasgliad mawr o ffeiliau PHP angen ei gilydd. 178 00:14:05,680 --> 00:14:07,750 Gadewch i ni edrych ar enghraifft. 179 00:14:07,750 --> 00:14:12,620 Yma mae gennym gasgliad o swyddogaethau y byddwn i'n hoffi defnyddio yn y ffeil arall. 180 00:14:12,620 --> 00:14:14,990 Gadewch i ni edrych ar sut y gallwn eu defnyddio. 181 00:14:14,990 --> 00:14:20,700 Ar-lein 3, yr ydym yn ei gwneud yn ofynnol math.php. 182 00:14:20,700 --> 00:14:27,170 Mae'r '__DIR__' yn gysonyn arbennig yn cynrychioli y cyfeiriadur cyfredol 183 00:14:27,170 --> 00:14:33,440 ers math.php a calculator.php yn cael eu lleoli yn yr un cyfeiriadur. 184 00:14:33,440 --> 00:14:38,010 Ar ôl i ni ei gwneud yn ofynnol math.php, gallwn ddefnyddio'r swyddogaethau 185 00:14:38,010 --> 00:14:41,690  fel pe baem wedi diffinio nhw yn calculator.php. 186 00:14:41,690 --> 00:14:47,440 Gadewch i ni redeg hyn gyda 'php calculator.php'. Gwych! 187 00:14:47,440 --> 00:14:50,880 >> Dyna ni am ein cyflwyniad i gystrawen PHP yn. 188 00:14:50,880 --> 00:14:53,700 I gael gwybod mwy, edrychwch ar PHP.net. 189 00:14:53,700 --> 00:14:59,470 PHP Mae gan lawer o swyddogaethau adeiledig yn, ac yn ffodus ei dogfennaeth yn wirioneddol wych. 190 00:14:59,470 --> 00:15:02,680 Fy enw i yw Tommy, ac mae hyn yn CS50. 191 00:15:02,680 --> 00:15:04,680 [CS50.TV] 192 00:15:04,680 --> 00:15:14,000 >> ... Braced, ydw i allan o le. Damia! Mae hyn yn y fideo olaf lle yr wyf yn defnyddio geiriau mawr yn y cod.