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 [Isto é CS50.] [CS50.TV] 4 00:00:07,400 --> 00:00:10,080 >> Neste vídeo, vamos apresentar PHP - 5 00:00:10,080 --> 00:00:12,820 uma das línguas estaremos usando em CS50 6 00:00:12,820 --> 00:00:15,480 como transição para o desenvolvimento web. 7 00:00:15,480 --> 00:00:19,250 PHP significa PHP Hypertext Processor, 8 00:00:19,250 --> 00:00:23,440 ou PHP Hypertext Processor Hypertext Processor, 9 00:00:23,440 --> 00:00:24,880 e eu vou parar por aí. 10 00:00:24,880 --> 00:00:29,280 PHP é um acrônimo recursivo, o que eu acho que é realmente incrível. 11 00:00:29,280 --> 00:00:32,020 >> Então, vamos escrever "Olá mundo" em PHP, 12 00:00:32,020 --> 00:00:37,240 que vai ser um pouco diferente do que o 'Olá mundo' em C que temos vindo a conhecer e amar. 13 00:00:37,240 --> 00:00:40,330 Em vez de criar um arquivo chamado hello.c, 14 00:00:40,330 --> 00:00:42,990 vamos criar hello.php. 15 00:00:42,990 --> 00:00:52,430 Todo o nosso código PHP será contido entre . 16 00:00:52,430 --> 00:00:56,160 Se temos qualquer código PHP que está localizada 17 00:00:56,160 --> 00:00:59,140 fora destes delimitadores, não será executada. 18 00:00:59,140 --> 00:01:01,740 Podemos ter como muitos desses blocos PHP 19 00:01:01,740 --> 00:01:05,090 como queremos dentro de um único arquivo PHP. 20 00:01:05,090 --> 00:01:09,000 Em PHP não há nenhuma necessidade para uma função principal. 21 00:01:09,000 --> 00:01:15,540 Em vez disso, nosso código PHP será executado na ordem em que aparece em nosso arquivo PHP. 22 00:01:15,540 --> 00:01:20,970 Ambos C e PHP tem uma função 'printf' para saída de dados. 23 00:01:20,970 --> 00:01:27,270 Mas, em PHP, não precisamos de # include quaisquer arquivos de cabeçalho como standardIO.h. 24 00:01:27,270 --> 00:01:31,830 Isso porque em PHP não será compilar nosso código. 25 00:01:31,830 --> 00:01:35,560 Quando escrevemos código C nosso fluxo de trabalho tende a ser a abertura 26 00:01:35,560 --> 00:01:39,560 um ou mais. c ou. arquivos h, transformando-as, compilá-los, 27 00:01:39,560 --> 00:01:41,980 e executar o binário resultante. 28 00:01:41,980 --> 00:01:45,800 Confira o vídeo Compiladores para obter mais informações sobre esse processo. 29 00:01:45,800 --> 00:01:51,480 >> Ao contrário de C, PHP é uma interpretação - língua - ao invés de compilada. 30 00:01:51,480 --> 00:01:54,080 Isso significa que o código PHP que nós escrevemos 31 00:01:54,080 --> 00:01:57,360 será executado através de um programa especial chamado um intérprete, 32 00:01:57,360 --> 00:02:00,440 que por sua vez irá executar nosso código. 33 00:02:00,440 --> 00:02:03,020 Para executar nosso código PHP, 34 00:02:03,020 --> 00:02:07,860 vamos enviá-lo juntamente com o interpretador PHP que vai lidar com a sua execução, 35 00:02:07,860 --> 00:02:11,260 ao invés de compilá-lo para código de máquina. 36 00:02:11,260 --> 00:02:13,450 Vamos ver a intérprete em ação. 37 00:02:13,450 --> 00:02:17,010 Vamos abrir um terminal e executar o comando PHP 38 00:02:17,010 --> 00:02:21,130 seguido do caminho para o arquivo PHP que gostaria de executar. 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 lá vamos nós. Há a saída do nosso programa PHP. 41 00:02:30,200 --> 00:02:33,460 Nós não precisa compilar nosso arquivo PHP em tudo. 42 00:02:33,460 --> 00:02:37,280 Em vez disso, tivemos um outro programa - o interpretador PHP - 43 00:02:37,280 --> 00:02:40,070 executar o código fonte que escrevemos. 44 00:02:40,070 --> 00:02:43,280 >> PHP pode fazer muito mais do que simplesmente printf. 45 00:02:43,280 --> 00:02:46,490 Vamos escrever alguns programas PHP mais complexas. 46 00:02:46,490 --> 00:02:52,240 A sintaxe para construções - como if, else, while, for e switch - 47 00:02:52,240 --> 00:02:55,440 é o mesmo em PHP e C. 48 00:02:55,440 --> 00:03:01,180 Assim como C, cada uma dessas construções utiliza chaves para demarcar o seu corpo, 49 00:03:01,180 --> 00:03:04,420 E, assim como em C, cada linha que escrevemos 50 00:03:04,420 --> 00:03:06,830 deve terminar com um ponto e vírgula; 51 00:03:06,830 --> 00:03:10,700 No entanto, as variáveis ​​são tratadas um pouco diferente em PHP. 52 00:03:10,700 --> 00:03:15,630 Em primeiro lugar, todas as variáveis ​​em PHP deve começar com o sinal de dólar. 53 00:03:15,630 --> 00:03:18,700 Parece um pouco estranho no começo, mas você vai se acostumar com isso. 54 00:03:18,700 --> 00:03:22,150 Em segundo lugar, o PHP é uma linguagem fracamente tipada 55 00:03:22,150 --> 00:03:24,570 o que significa que você não precisa listar explicitamente 56 00:03:24,570 --> 00:03:27,640 o tipo de uma variável ao criá-lo. 57 00:03:27,640 --> 00:03:33,430 Onde em C que você precisa dizer 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 em PHP, podemos simplesmente dizer $ 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 funções. 62 00:03:52,360 --> 00:04:01,290 Ao invés de dizer int f () {corpo da nossa função} 63 00:04:01,290 --> 00:04:12,160 em PHP, vamos dizer a função f () {corpo da nossa função}. 64 00:04:12,160 --> 00:04:17,579 Nós não precisa especificar explicitamente o tipo da nossa função f retorno. 65 00:04:17,579 --> 00:04:22,070 Funções em PHP também não tem que devolver o mesmo tipo 66 00:04:22,070 --> 00:04:23,840 cada vez que são executados. 67 00:04:23,840 --> 00:04:27,940 Por exemplo, poderíamos escrever uma função que retorna false em caso de erro 68 00:04:27,940 --> 00:04:29,750 e outro tipo se for bem sucedido. 69 00:04:29,750 --> 00:04:33,060 >> Isso também pode nos ajudar a escrever funções mais genéricas. 70 00:04:33,060 --> 00:04:35,710 Por exemplo, poderíamos escrever uma única função add 71 00:04:35,710 --> 00:04:39,200 que pode retornar um inteiro, se dois inteiros são dadas 72 00:04:39,200 --> 00:04:41,250 ou uma bóia se dois carros alegóricos são dadas. 73 00:04:41,250 --> 00:04:45,530 Em C, precisaríamos escrever duas funções separadas para fazer isso. 74 00:04:45,530 --> 00:04:49,230 Enquanto em C usamos ponteiros para um aumento e cordas, 75 00:04:49,230 --> 00:04:52,170 não será capaz de usar ponteiros em PHP. 76 00:04:52,170 --> 00:04:58,030 Em vez disso, ambos os arrays e strings são built-in tipos em PHP. 77 00:04:58,030 --> 00:04:59,660 Eles são construídos para a direita para a língua. 78 00:04:59,660 --> 00:05:02,270 Para criar uma matriz em PHP, podemos dizer, 79 00:05:02,270 --> 00:05:11,280 $ = Uma matriz (1, 2, 3); 80 00:05:11,280 --> 00:05:19,400 ou, mais simplesmente um $ = [1, 2, 3]. 81 00:05:19,400 --> 00:05:24,990 Podemos índice para essa matriz usando a mesma sintaxe que estamos acostumados a de C. 82 00:05:24,990 --> 00:05:31,780 Para obter o primeiro elemento, vamos dizer, $ a [0];. 83 00:05:31,780 --> 00:05:36,290 PHP também tem suporte embutido para arrays associativos. 84 00:05:36,290 --> 00:05:41,460 As matrizes associativas são como a estrutura de dados tabela hash que já vimos - 85 00:05:41,460 --> 00:05:44,060 eles mapear uma chave a um valor. 86 00:05:44,060 --> 00:05:46,070 >> Vamos dar uma olhada em um exemplo. 87 00:05:46,070 --> 00:06:14,740 Podemos dizer, $ staff = ["instrutor" => "david", "tf" => "tommy"];. 88 00:06:14,740 --> 00:06:21,020 Aqui, eu tenho uma matriz associativa com 2 chaves - instrutor e tf. 89 00:06:21,020 --> 00:06:24,910 A seta dupla, ou igual, maior que, 90 00:06:24,910 --> 00:06:29,660 é usada para separar uma chave e o valor correspondente. 91 00:06:29,660 --> 00:06:41,830 Assim, o valor de US $ pessoal ["tf"] é a string "tommy". 92 00:06:41,830 --> 00:06:44,430 Os valores de uma matriz associativa - 93 00:06:44,430 --> 00:06:47,540 bem como qualquer outra matriz - pode ser de qualquer tipo. 94 00:06:47,540 --> 00:07:23,370 Por exemplo, poderíamos dizer, $ staff = ["instrutor" => "david", "TFS" => ["Tommy", "roubar"]];. 95 00:07:23,370 --> 00:07:27,810 Agora, o valor de 'TFS' é uma matriz. 96 00:07:27,810 --> 00:07:33,030 Isto significa que os valores dentro de uma matriz de associação pode ser de diferentes tipos. 97 00:07:33,030 --> 00:07:36,750 >> Matrizes PHP também não têm um comprimento fixo, 98 00:07:36,750 --> 00:07:40,200 para que possamos adicionar ou remover elementos de uma matriz. 99 00:07:40,200 --> 00:07:49,130 Digamos que temos uma matriz simples como $ a = [1, 2, 3]. 100 00:07:49,130 --> 00:07:51,860 Para adicionar um novo elemento a essa matriz, 101 00:07:51,860 --> 00:07:57,160 podemos dizer, $ a [] = 4;. 102 00:07:57,160 --> 00:08:03,630 Agora, a nossa gama é composta por quatro elementos - [1, 2, 3, 4]. 103 00:08:03,630 --> 00:08:06,980 Lembre-se que se queria fazer algo parecido com isso em C, 104 00:08:06,980 --> 00:08:09,610 nós teríamos que alocar uma nova matriz, 105 00:08:09,610 --> 00:08:12,400 copiar o conteúdo de nossa primeira matriz para ele, 106 00:08:12,400 --> 00:08:15,870 e, em seguida, definir o último elemento da nova matriz para o nosso novo valor. 107 00:08:15,870 --> 00:08:18,390 Isto é muito mais fácil em PHP. 108 00:08:18,390 --> 00:08:21,230 Se a nossa matriz é uma matriz associativa, 109 00:08:21,230 --> 00:08:24,810 podemos simplesmente definir uma nova chave para criar um elemento 110 00:08:24,810 --> 00:08:26,250 se ele ainda não existe. 111 00:08:26,250 --> 00:08:30,010 Se nós temos a nossa disposição mais cedo - $ staff - 112 00:08:30,010 --> 00:08:38,679 podemos dizer $ pessoal ["total"] = 3;. 113 00:08:38,679 --> 00:08:43,330 Agora temos uma nova chave com o valor de 3. 114 00:08:43,330 --> 00:08:46,460 >> Para obter o número de elementos em uma matriz, 115 00:08:46,460 --> 00:08:48,230 podemos usar a função 'count'. 116 00:08:48,230 --> 00:08:56,100 Se dissermos, count ($ a);, que terá um valor de 4. 117 00:08:56,100 --> 00:09:01,930 Em PHP, podemos criar seqüências usando aspas duplas ou simples, 118 00:09:01,930 --> 00:09:04,470 para ambas as variáveis ​​são strings. 119 00:09:04,470 --> 00:09:21,780 $ S1 = "string"; $ s2 = 'outra string';. 120 00:09:21,780 --> 00:09:23,920 Qual é a diferença entre esses dois? 121 00:09:23,920 --> 00:09:26,950 Bem, é muito comum querer incluir o 122 00:09:26,950 --> 00:09:29,600 valor de uma variável dentro de uma string. 123 00:09:29,600 --> 00:09:34,390 Uma maneira de fazer isso seria usar o operador ponto do PHP, 124 00:09:34,390 --> 00:09:36,630 que concatena strings. 125 00:09:36,630 --> 00:09:38,680 Poderíamos fazer algo assim - 126 00:09:38,680 --> 00:09:53,800 $ N = 5; $ s = 'n é «n $.,. 127 00:09:53,800 --> 00:09:57,430 Aqui a variável n é um número inteiro. 128 00:09:57,430 --> 00:10:00,020 Mas quando concatenar-lo com uma corda, 129 00:10:00,020 --> 00:10:04,110 PHP irá convertê-la automaticamente para uma string para nós. 130 00:10:04,110 --> 00:10:09,090 Ou podemos simplesmente usar aspas duplas para colocar a variável dentro da própria cadeia. 131 00:10:09,090 --> 00:10:19,290 Podemos dizer, $ s = "n é de R $ n";. 132 00:10:19,290 --> 00:10:24,040 Agora, o valor de $ s será 'n é 5'. 133 00:10:24,040 --> 00:10:34,250 Se usar aspas simples em vez disso, como em $ s = 'n é de R $ n'; 134 00:10:34,250 --> 00:10:39,670 o valor de s será 'n é n $',. 135 00:10:39,670 --> 00:10:43,720 O valor de n não ser substituído, se usarmos plicas, 136 00:10:43,720 --> 00:10:47,150 mas será se usar aspas duplas. 137 00:10:47,150 --> 00:10:51,800 Se quisermos usar aspas duplas para incluir o valor de uma matriz em uma string, 138 00:10:51,800 --> 00:10:55,060 vamos precisar incluir chaves de todo o conjunto, como este - 139 00:10:55,060 --> 00:11:14,470 $ S = "{$ pessoal ['total']}";. 140 00:11:14,470 --> 00:11:20,350 >> Vamos agora dar uma olhada em um pequeno trecho em C e traduzi-lo para PHP. 141 00:11:20,350 --> 00:11:25,410 Aqui, nós estamos criando uma função que imprime as letras de uma string, 142 00:11:25,410 --> 00:11:27,310 um caractere por linha. 143 00:11:27,310 --> 00:11:32,250 Vamos fazer a mesma coisa em PHP. 144 00:11:32,250 --> 00:11:36,530 Primeiro, vamos precisar de nossos delimitadores do PHP. 145 00:11:36,530 --> 00:11:39,000 Quando criamos a nossa função, 146 00:11:39,000 --> 00:11:42,740 não precisa especificar seu tipo de retorno ou o tipo de argumento. 147 00:11:42,740 --> 00:11:46,890 Nossa variável s também devem começar com um sinal de dólar. 148 00:11:46,890 --> 00:11:51,590 Função do PHP strlen nos dá o comprimento de uma corda, 149 00:11:51,590 --> 00:11:55,660 assim como C do strlen nos dá o comprimento de uma string. 150 00:11:55,660 --> 00:11:59,060 Sob o capô, porém, essas funções são realmente um pouco diferente 151 00:11:59,060 --> 00:12:03,010 desde uma string é um tipo built-in em PHP. 152 00:12:03,010 --> 00:12:06,930 A sintaxe do nosso laço 'for' é o mesmo. 153 00:12:06,930 --> 00:12:13,530 >> Em PHP, também podemos usar a notação de matriz para acessar os caracteres de uma string. 154 00:12:13,530 --> 00:12:19,350 Podemos agora usar a função de impressão para imprimir cada letra da string. 155 00:12:19,350 --> 00:12:23,080 Com a função de impressão do PHP, não precisa se preocupar com espaços reservados - 156 00:12:23,080 --> 00:12:28,200 como% d ou% c - quando queremos imprimir uma variável que não é uma string. 157 00:12:28,200 --> 00:12:33,590 Em vez disso, podemos simplesmente passar uma variável de qualquer tipo para a função de impressão, 158 00:12:33,590 --> 00:12:36,810 e ela será convertida para uma string e exibido. 159 00:12:36,810 --> 00:12:43,430 E é isso! Vamos agora executar o nosso arquivo com 'php print.php. 160 00:12:43,430 --> 00:12:48,160 E há a saída vimos do nosso programa C. 161 00:12:48,160 --> 00:12:52,120 >> PHP também suporta uma construção chamada de loop 'foreach'. 162 00:12:52,120 --> 00:12:54,800 Loop 'foreach' é como um 'for' loop, 163 00:12:54,800 --> 00:12:59,080 mas adiciona um pouco de açúcar sintático para tornar as coisas mais legível. 164 00:12:59,080 --> 00:13:03,690 Aqui, estamos criando uma nova matriz chamada "$ array. 165 00:13:03,690 --> 00:13:10,090 Agora podemos dizer, foreach ($ array quanto $ number), 166 00:13:10,090 --> 00:13:12,390 e podemos imprimir $ number. 167 00:13:12,390 --> 00:13:20,650 Quando executar esse arquivo - php-foreach.php-podemos ver cada número em sua própria linha. 168 00:13:20,650 --> 00:13:26,700 >> Quando escrevemos código C, que muitas vezes era útil para organizar nosso código em arquivos separados. 169 00:13:26,700 --> 00:13:29,170 Em PHP, podemos fazer a mesma coisa. 170 00:13:29,170 --> 00:13:33,870 Vamos dizer que temos algumas funções em um arquivo chamado math.php. 171 00:13:33,870 --> 00:13:38,900 Se eu quiser usar essas funções em outro arquivo PHP, como calculator.php, 172 00:13:38,900 --> 00:13:44,110 Eu posso usar require_once () do PHP função. 173 00:13:44,110 --> 00:13:47,110 Require_once é como # include. 174 00:13:47,110 --> 00:13:52,050 Quando dada um caminho para um arquivo, ele será, essencialmente, copiar e colar o conteúdo 175 00:13:52,050 --> 00:13:54,930 daquele arquivo para o arquivo atual. 176 00:13:54,930 --> 00:14:00,150 Require_once garante que cada arquivo é incluído no arquivo atual somente uma vez, 177 00:14:00,150 --> 00:14:05,680 que pode ser útil se você tiver uma grande coleção de arquivos PHP que necessitam uns dos outros. 178 00:14:05,680 --> 00:14:07,750 Vamos dar uma olhada em um exemplo. 179 00:14:07,750 --> 00:14:12,620 Aqui temos uma coleção de funções que eu gostaria de usar em outro arquivo. 180 00:14:12,620 --> 00:14:14,990 Vamos dar uma olhada em como podemos usá-los. 181 00:14:14,990 --> 00:14:20,700 Na linha 3, que estão exigindo math.php. 182 00:14:20,700 --> 00:14:27,170 O '__DIR__' é uma constante especial que representa o diretório atual 183 00:14:27,170 --> 00:14:33,440 desde math.php e calculator.php estão localizados no mesmo diretório. 184 00:14:33,440 --> 00:14:38,010 Depois exigimos math.php, podemos usar as funções 185 00:14:38,010 --> 00:14:41,690  como se tivéssemos definido los em calculator.php. 186 00:14:41,690 --> 00:14:47,440 Vamos executar isso com 'php calculator.php. Great! 187 00:14:47,440 --> 00:14:50,880 >> Isso é tudo para a nossa introdução a sintaxe do PHP. 188 00:14:50,880 --> 00:14:53,700 Para saber mais, confira PHP.net. 189 00:14:53,700 --> 00:14:59,470 PHP tem um monte de funções internas e, felizmente, sua documentação é realmente grande. 190 00:14:59,470 --> 00:15:02,680 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 >> ... Suporte, eu estou fora da sala. Droga! Este é o último vídeo onde eu uso palavras grandes no código.