1 00:00:00,000 --> 00:00:02,400 [Powered by Google Translate] [Sintaxe PHP] 2 00:00:02,400 --> 00:00:04,400 [Tommy MacWilliam] [Harvard University] 3 00:00:04,400 --> 00:00:07,400 [É dicir CS50.] [CS50.TV] 4 00:00:07,400 --> 00:00:10,080 >> Neste vídeo, imos presentar PHP - 5 00:00:10,080 --> 00:00:12,820 unha das linguas estaremos usando en CS50 6 00:00:12,820 --> 00:00:15,480 como transición para o desenvolvemento web. 7 00:00:15,480 --> 00:00:19,250 PHP significa PHP Hypertext Procesador, 8 00:00:19,250 --> 00:00:23,440 ou PHP Hypertext Procesador Hipertexto Procesador, 9 00:00:23,440 --> 00:00:24,880 e eu vou deixar por aí. 10 00:00:24,880 --> 00:00:29,280 PHP é un acrónimo recursivo, o que eu creo que é realmente incrible. 11 00:00:29,280 --> 00:00:32,020 >> Entón, imos escribir "Ola Mundo" en PHP, 12 00:00:32,020 --> 00:00:37,240 que será un pouco diferente do que o 'Ola Mundo' en C que vimos a coñecer e amar. 13 00:00:37,240 --> 00:00:40,330 No canto de crear un ficheiro chamado hello.c, 14 00:00:40,330 --> 00:00:42,990 imos crear hello.php. 15 00:00:42,990 --> 00:00:52,430 Todo o noso código PHP será contido entre . 16 00:00:52,430 --> 00:00:56,160 Si temos un código PHP que está situada 17 00:00:56,160 --> 00:00:59,140 fóra destes delimitadores, non será executada. 18 00:00:59,140 --> 00:01:01,740 Podemos ter como moitos destes bloques PHP 19 00:01:01,740 --> 00:01:05,090 como queremos dentro dun único arquivo PHP. 20 00:01:05,090 --> 00:01:09,000 En PHP non hai ningunha necesidade para unha función principal. 21 00:01:09,000 --> 00:01:15,540 Pola contra, o noso código PHP será executado na orde en que aparece no noso arquivo PHP. 22 00:01:15,540 --> 00:01:20,970 Ambos C e PHP ten unha función 'printf "para saída de datos. 23 00:01:20,970 --> 00:01:27,270 Pero, en PHP, non necesitamos # include os ficheiros de cabeceira como standardIO.h. 24 00:01:27,270 --> 00:01:31,830 Isto porque en PHP non será compilar noso código. 25 00:01:31,830 --> 00:01:35,560 Cando escribimos código C noso fluxo de traballo tende a ser a apertura 26 00:01:35,560 --> 00:01:39,560 un ou máis. c ou. arquivos h, transformándose as, recompila-los, 27 00:01:39,560 --> 00:01:41,980 e executar o binario resultante. 28 00:01:41,980 --> 00:01:45,800 Escribe o vídeo Compiladores para obter máis información sobre este proceso. 29 00:01:45,800 --> 00:01:51,480 >> A diferenza de C, PHP é unha interpretación - lingua - ao contrario de compilada. 30 00:01:51,480 --> 00:01:54,080 Isto significa que o código PHP que escribimos 31 00:01:54,080 --> 00:01:57,360 levará a cabo a través dun programa especial chamado un intérprete, 32 00:01:57,360 --> 00:02:00,440 que á súa vez pode executar o noso código. 33 00:02:00,440 --> 00:02:03,020 Para realizar o noso código PHP, 34 00:02:03,020 --> 00:02:07,860 imos envialo xunto co intérprete PHP que enfrontará a súa execución, 35 00:02:07,860 --> 00:02:11,260 ao contrario de recompila-lo a código de máquina. 36 00:02:11,260 --> 00:02:13,450 Imos ver o intérprete en acción. 37 00:02:13,450 --> 00:02:17,010 Imos abrir un terminal e executar o comando PHP 38 00:02:17,010 --> 00:02:21,130 e no camiño para o ficheiro PHP que quere realizar. 39 00:02:21,130 --> 00:02:25,690 Nós diremos, 'php hello.php. 40 00:02:25,690 --> 00:02:30,200 E alí imos nós. Hai a saída do noso programa PHP. 41 00:02:30,200 --> 00:02:33,460 Non ten que compilar noso arquivo PHP en todo. 42 00:02:33,460 --> 00:02:37,280 Pola contra, tivemos outro programa - o intérprete PHP - 43 00:02:37,280 --> 00:02:40,070 Executando o código fonte que escribimos. 44 00:02:40,070 --> 00:02:43,280 >> PHP pode facer moito máis do que simplemente printf. 45 00:02:43,280 --> 00:02:46,490 Imos escribir algúns programas PHP máis complexas. 46 00:02:46,490 --> 00:02:52,240 A sintaxe para construcións - como if, else, while, for e rede - 47 00:02:52,240 --> 00:02:55,440 é a mesma en PHP e C. 48 00:02:55,440 --> 00:03:01,180 Así como C, cada unha destas construcións utiliza claves para demarcar o seu corpo, 49 00:03:01,180 --> 00:03:04,420 E, así como en C, cada liña que escribimos 50 00:03:04,420 --> 00:03:06,830 debe terminar cun punto e coma, 51 00:03:06,830 --> 00:03:10,700 Con todo, as variables son tratadas un pouco diferente en PHP. 52 00:03:10,700 --> 00:03:15,630 En primeiro lugar, as variables en PHP debe comezar co sinal de dólar. 53 00:03:15,630 --> 00:03:18,700 Parece un pouco raro no comezo, pero vai se acostumar con iso. 54 00:03:18,700 --> 00:03:22,150 En segundo lugar, o PHP é unha linguaxe feblemente tipada 55 00:03:22,150 --> 00:03:24,570 o que significa que non precisa incluír explicitamente 56 00:03:24,570 --> 00:03:27,640 o tipo dunha variable ao crealo. 57 00:03:27,640 --> 00:03:33,430 Onde en C que ten que dicir int x = 5; 58 00:03:33,430 --> 00:03:38,650 ou char y = 'a'; 59 00:03:39,250 --> 00:03:44,790 en PHP, podemos simplemente dicir $ x = 5; 60 00:03:44,790 --> 00:03:48,930 e $ = y 'a',. 61 00:03:48,930 --> 00:03:52,360 O mesmo se aplica ás funcións. 62 00:03:52,360 --> 00:04:01,290 En vez de dicir int f () {corpo da nosa función} 63 00:04:01,290 --> 00:04:12,160 en PHP, imos dicir a función f () {corpo da nosa función}. 64 00:04:12,160 --> 00:04:17,579 Non ten que especificar explicitamente o tipo da nosa función f retorno. 65 00:04:17,579 --> 00:04:22,070 Funcións en PHP tampouco ten que devolver o mesmo tipo 66 00:04:22,070 --> 00:04:23,840 cada vez que son executados. 67 00:04:23,840 --> 00:04:27,940 Por exemplo, poderiamos escribir unha función que devolve false en caso de erro 68 00:04:27,940 --> 00:04:29,750 e outro tipo de ser exitoso. 69 00:04:29,750 --> 00:04:33,060 >> Isto tamén pode axudarnos a escribir funcións máis xenéricas. 70 00:04:33,060 --> 00:04:35,710 Por exemplo, poderiamos escribir unha única función add 71 00:04:35,710 --> 00:04:39,200 que pode voltar un enteiro, se dous enteiros son dadas 72 00:04:39,200 --> 00:04:41,250 ou unha boia dous coches alegóricos son dadas. 73 00:04:41,250 --> 00:04:45,530 En C, necesitariamos escribir dúas funcións separadas para facelo. 74 00:04:45,530 --> 00:04:49,230 Mentres en C usan punteiros a un aumento e cordas, 75 00:04:49,230 --> 00:04:52,170 non poderá usar punteiros en PHP. 76 00:04:52,170 --> 00:04:58,030 Pola contra, os dous arrays e strings son built-in tipo en PHP. 77 00:04:58,030 --> 00:04:59,660 Son construídos para a dereita para a lingua. 78 00:04:59,660 --> 00:05:02,270 Para crear unha matriz en PHP, podemos dicir, 79 00:05:02,270 --> 00:05:11,280 $ = Unha matriz (1, 2, 3); 80 00:05:11,280 --> 00:05:19,400 ou, máis simplemente un $ = [1, 2, 3]. 81 00:05:19,400 --> 00:05:24,990 Podemos índice para esa matriz usando a mesma sintaxe que estamos afeitos de C. 82 00:05:24,990 --> 00:05:31,780 Para obter o primeiro elemento, imos dicir, $ a [0];. 83 00:05:31,780 --> 00:05:36,290 PHP tamén ten soporte embutido para arrays asociativos. 84 00:05:36,290 --> 00:05:41,460 As matrices asociativas son como a estrutura de datos táboa hash que xa vimos - 85 00:05:41,460 --> 00:05:44,060 eles mapear unha clave a un valor. 86 00:05:44,060 --> 00:05:46,070 >> Imos dar un ollo a un exemplo. 87 00:05:46,070 --> 00:06:14,740 Podemos dicir, $ staff = ["instrutor" => "david", "tf" => "Tommy"];. 88 00:06:14,740 --> 00:06:21,020 Aquí, eu teño unha matriz asociativa con 2 chaves - instrutor e tf. 89 00:06:21,020 --> 00:06:24,910 A frecha dobre, o igual, maior que, 90 00:06:24,910 --> 00:06:29,660 emprégase para separar unha chave e o valor correspondente. 91 00:06:29,660 --> 00:06:41,830 Así, o valor de US $ persoal ["tf"] é a cadea "Tommy". 92 00:06:41,830 --> 00:06:44,430 Os valores dunha matriz asociativa - 93 00:06:44,430 --> 00:06:47,540 así como calquera outra matriz - pode ser de calquera tipo. 94 00:06:47,540 --> 00:07:23,370 Por exemplo, poderiamos dicir, $ staff = ["instrutor" => "david", "TFS" => ["Tommy", "roubo"]];. 95 00:07:23,370 --> 00:07:27,810 Agora, o valor de 'TFS' é unha matriz. 96 00:07:27,810 --> 00:07:33,030 É dicir, que os valores dentro dunha matriz de asociación pode ser de distintos tipos. 97 00:07:33,030 --> 00:07:36,750 >> Matrices PHP tampouco teñen unha lonxitude fixa, 98 00:07:36,750 --> 00:07:40,200 para que poidamos engadir ou eliminar elementos dunha matriz. 99 00:07:40,200 --> 00:07:49,130 Digamos que temos unha matriz simple como $ a = [1, 2, 3]. 100 00:07:49,130 --> 00:07:51,860 Para engadir un novo elemento a esta matriz, 101 00:07:51,860 --> 00:07:57,160 podemos dicir, $ a [] = 4;. 102 00:07:57,160 --> 00:08:03,630 Agora, a nosa gama está composta por catro elementos - [1, 2, 3, 4]. 103 00:08:03,630 --> 00:08:06,980 Lembre que se quería facer algo coma isto en C, 104 00:08:06,980 --> 00:08:09,610 nós teriamos que reservar unha nova matriz, 105 00:08:09,610 --> 00:08:12,400 copiar o contido da nosa primeira matriz para el, 106 00:08:12,400 --> 00:08:15,870 e logo, establecer o último elemento da nova matriz para o noso novo valor. 107 00:08:15,870 --> 00:08:18,390 Isto é moito máis fácil en PHP. 108 00:08:18,390 --> 00:08:21,230 Se a nosa matriz é unha matriz asociativa, 109 00:08:21,230 --> 00:08:24,810 podemos simplemente establecer unha nova clave para crear un elemento 110 00:08:24,810 --> 00:08:26,250 se aínda non existe. 111 00:08:26,250 --> 00:08:30,010 Se temos a nosa disposición máis cedo - $ staff - 112 00:08:30,010 --> 00:08:38,679 podemos dicir $ persoal ["total"] = 3;. 113 00:08:38,679 --> 00:08:43,330 Agora temos unha nova clave co valor de 3. 114 00:08:43,330 --> 00:08:46,460 >> Para obter o número de elementos nunha matriz, 115 00:08:46,460 --> 00:08:48,230 podemos utilizar a función 'count'. 116 00:08:48,230 --> 00:08:56,100 Se dicimos, count ($ a);, que terá un valor de 4. 117 00:08:56,100 --> 00:09:01,930 En PHP, podemos crear secuencias usando comiñas dobres ou simple, 118 00:09:01,930 --> 00:09:04,470 para ambas variables son cadeas. 119 00:09:04,470 --> 00:09:21,780 $ S1 = "cadea"; $ s2 = 'outra cadea';. 120 00:09:21,780 --> 00:09:23,920 Cal é a diferencia entre estes dous? 121 00:09:23,920 --> 00:09:26,950 Ben, é moi común querer incluír o 122 00:09:26,950 --> 00:09:29,600 valor dunha variable dentro dunha cadea. 123 00:09:29,600 --> 00:09:34,390 Unha forma de facelo sería usar o operador punto do PHP, 124 00:09:34,390 --> 00:09:36,630 que concatena cadeas. 125 00:09:36,630 --> 00:09:38,680 Poderiamos facer algo así - 126 00:09:38,680 --> 00:09:53,800 $ N = 5; $ s = 'n é «n $.,. 127 00:09:53,800 --> 00:09:57,430 Aquí a variable n é un número enteiro. 128 00:09:57,430 --> 00:10:00,020 Pero cando concatenar-lo con unha corda, 129 00:10:00,020 --> 00:10:04,110 PHP pode convertelo la automaticamente a unha cadea para nós. 130 00:10:04,110 --> 00:10:09,090 Ou podemos simplemente usar comiñas dobres para poñer a variable dentro da propia cadea. 131 00:10:09,090 --> 00:10:19,290 Podemos dicir, $ s = "n é de R $ n";. 132 00:10:19,290 --> 00:10:24,040 Agora, o valor de $ s 'n é 5'. 133 00:10:24,040 --> 00:10:34,250 Usar aspas no seu lugar, como en $ s = 'n é de R $ n'; 134 00:10:34,250 --> 00:10:39,670 o valor de s 'n é n $',. 135 00:10:39,670 --> 00:10:43,720 O valor de n non ser substituído, se usarmos plicas, 136 00:10:43,720 --> 00:10:47,150 pero será usar comiñas dobres. 137 00:10:47,150 --> 00:10:51,800 Se queremos usar comiñas dobres para incluír o valor dunha matriz nunha cadea, 138 00:10:51,800 --> 00:10:55,060 imos ter incluír claves de todo o conxunto, como este - 139 00:10:55,060 --> 00:11:14,470 $ S = "{$ persoal ['total']}";. 140 00:11:14,470 --> 00:11:20,350 >> Imos agora dar un ollo a un pequeno fragmento en C e traducir-lo para PHP. 141 00:11:20,350 --> 00:11:25,410 Aquí, nós estamos creando unha función que imprime as letras dunha cadea, 142 00:11:25,410 --> 00:11:27,310 un carácter por liña. 143 00:11:27,310 --> 00:11:32,250 Imos facer o mesmo en PHP. 144 00:11:32,250 --> 00:11:36,530 En primeiro lugar, imos ter que nosos delimitadores do PHP. 145 00:11:36,530 --> 00:11:39,000 Cando creamos a nosa función, 146 00:11:39,000 --> 00:11:42,740 non precisa especificar o seu tipo de retorno ou o tipo de argumento. 147 00:11:42,740 --> 00:11:46,890 Nosa variable s tamén deben comezar cun signo de dólar. 148 00:11:46,890 --> 00:11:51,590 Función de PHP strlen dános a lonxitude dunha corda, 149 00:11:51,590 --> 00:11:55,660 así como C do strlen dános a lonxitude dunha cadea. 150 00:11:55,660 --> 00:11:59,060 Baixo o capó, porén, estas funcións son realmente un pouco diferente 151 00:11:59,060 --> 00:12:03,010 desde unha cadea é un tipo built-in en PHP. 152 00:12:03,010 --> 00:12:06,930 A sintaxe do noso lazo 'for' é o mesmo. 153 00:12:06,930 --> 00:12:13,530 >> En PHP, tamén podemos utilizar a notación de matriz para acceder aos caracteres dunha cadea. 154 00:12:13,530 --> 00:12:19,350 Podemos agora utilizar a función de impresión para imprimir cada letra da cadea. 155 00:12:19,350 --> 00:12:23,080 Coa función de impresión do PHP, non se preocupe con espazos reservados - 156 00:12:23,080 --> 00:12:28,200 como% d ou% c - cando queremos imprimir unha variable que non é unha cadea. 157 00:12:28,200 --> 00:12:33,590 Pola contra, pode simplemente pasar unha variable de calquera tipo para a función de impresión, 158 00:12:33,590 --> 00:12:36,810 e ela será convertida a unha cadea e exhibido. 159 00:12:36,810 --> 00:12:43,430 E é iso! Imos agora realizar o noso arquivo con 'php print.php. 160 00:12:43,430 --> 00:12:48,160 E hai a saída vimos do noso programa C. 161 00:12:48,160 --> 00:12:52,120 >> PHP tamén soporta unha construción chamada de loop 'foreach'. 162 00:12:52,120 --> 00:12:54,800 Loop 'foreach' é como un 'for' loop, 163 00:12:54,800 --> 00:12:59,080 senón que engade un pouco de azucre sintático para facer as cousas máis lexible. 164 00:12:59,080 --> 00:13:03,690 Aquí, estamos creando unha nova matriz chamada "$ array. 165 00:13:03,690 --> 00:13:10,090 Agora podemos dicir, foreach ($ array como $ number), 166 00:13:10,090 --> 00:13:12,390 e podemos imprimir $ number. 167 00:13:12,390 --> 00:13:20,650 Cando executar o ficheiro - php-foreach.php-vemos cada número na súa propia liña. 168 00:13:20,650 --> 00:13:26,700 >> Cando escribimos código C, que moitas veces era útil para organizar o noso código en arquivos separados. 169 00:13:26,700 --> 00:13:29,170 En PHP, podemos facer o mesmo. 170 00:13:29,170 --> 00:13:33,870 Digamos que temos algunhas funcións nun arquivo chamado math.php. 171 00:13:33,870 --> 00:13:38,900 Se quere usar estas funcións noutro ficheiro PHP, como calculator.php, 172 00:13:38,900 --> 00:13:44,110 Podo usar require_once () do PHP función. 173 00:13:44,110 --> 00:13:47,110 Require_once é como # include. 174 00:13:47,110 --> 00:13:52,050 Cando dada unha ruta a un ficheiro, será, esencialmente, copiar e pegar o contido 175 00:13:52,050 --> 00:13:54,930 daquel ficheiro ao arquivo actual. 176 00:13:54,930 --> 00:14:00,150 Require_once asegura que cada ficheiro está incluído no arquivo actual só unha vez, 177 00:14:00,150 --> 00:14:05,680 que pode ser útil se ten unha gran colección de arquivos PHP que precisan uns dos outros. 178 00:14:05,680 --> 00:14:07,750 Imos dar un ollo a un exemplo. 179 00:14:07,750 --> 00:14:12,620 Aquí temos un conxunto de funcións que quere empregar en outro arquivo. 180 00:14:12,620 --> 00:14:14,990 Imos dar un ollo a como podemos usalos. 181 00:14:14,990 --> 00:14:20,700 Na liña 3, que están esixindo math.php. 182 00:14:20,700 --> 00:14:27,170 O '__DIR__' é unha constante especial que representa o directorio actual 183 00:14:27,170 --> 00:14:33,440 desde math.php e calculator.php están localizados no mesmo directorio. 184 00:14:33,440 --> 00:14:38,010 Despois esiximos math.php, podemos utilizar as funcións 185 00:14:38,010 --> 00:14:41,690  coma se tivésemos definido los calculator.php. 186 00:14:41,690 --> 00:14:47,440 Imos correr con este 'php calculator.php. Great! 187 00:14:47,440 --> 00:14:50,880 >> Isto é todo para a nosa introdución a sintaxe do PHP. 188 00:14:50,880 --> 00:14:53,700 Para saber máis, confía PHP.net. 189 00:14:53,700 --> 00:14:59,470 PHP ten unha morea de funcións internas e, por sorte, a súa documentación é realmente grande. 190 00:14:59,470 --> 00:15:02,680 O meu nome é Tommy, e este é o CS50. 191 00:15:02,680 --> 00:15:04,680 [CS50.TV] 192 00:15:04,680 --> 00:15:14,000 >> Soporte ..., eu estou fóra da sala. Drogas! Este é o último vídeo onde eu uso palabras grandes no código.