166
CURSO INTRODUTÓRIO DE PHP Friday, October 4, 13

Introdução PHP + Kohana 3

Embed Size (px)

DESCRIPTION

Slides do curso de Introdução PHP + Kohana 3 código dos exercícios e exemplos em: https://github.com/adirkuhn/cursophp

Citation preview

Page 1: Introdução PHP + Kohana 3

CURSO INTRODUTÓRIO DE PHP

Friday, October 4, 13

Page 2: Introdução PHP + Kohana 3

ADIR KUHN

•Desenvolvedor•Certificado Zend (ZCE)•Certificado Scrum Master•Formado em PD•Evangelista PHP e Python

Dúvidas

@[email protected]

Friday, October 4, 13

Page 3: Introdução PHP + Kohana 3

O QUE É PHP?

• Umas das linguagens mais populares para criação de aplicações web• Open-source• Linguagem Interpretada (não é compilada)• Simples de aprender (baixa curva de aprendizado)• Fácil para dar um tiro no pé

Friday, October 4, 13

Page 4: Introdução PHP + Kohana 3

O QUE É PHP?

fonte: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

Friday, October 4, 13

Page 5: Introdução PHP + Kohana 3

BREVE HISTÓRICO

•1995: Rasmus Lerdorf criou o PHP - criado para deixar dinâmico seu próprio site; - chamado inicialmente de Personal Home Page;•1997: Zeev Zuraski e Andi Gutmans - reescrita do parser do PHP v3 - projeto renomeado para PHP: Hypertext Preprocessor• 1998: Zeev Zuraski e Andi Gutmans - redesign do parser para o PHP v4 (Zend Engine) - fundada a Zend Technologies

Friday, October 4, 13

Page 6: Introdução PHP + Kohana 3

PHP

O PHP foi construido para ser programado de forma estruturada.

O suporte a Objetos foi adicionado na versão 4

O suporte a Objetos foi totalmente remodelado na v5

Friday, October 4, 13

Page 7: Introdução PHP + Kohana 3

QUEM USA PHP

PHP é uma das linguagens mais usadas no desenvolvimento web. Algumas empresas que utilizam:

Yahoo!FlickrWikipediaDiggDailymotion

Friday, October 4, 13

Page 8: Introdução PHP + Kohana 3

COMEÇANDO

Requisitos mínimos para começar a programar em PHP:

Ter instalado o interpretador PHP;Um editor de textos;

Ter preferencialmente instalado um servidor webLAMP, WAMP, etc

Friday, October 4, 13

Page 9: Introdução PHP + Kohana 3

POR ONDE COMEÇAR

O site do PHP conta com uma documentação completa da linguagem. (www.php.net)

Friday, October 4, 13

Page 10: Introdução PHP + Kohana 3

PRIMEIRO SCRIPT

Criar um documento com extensão PHP no servidor web.

<?phpecho ‘Ola Mundo.’;?>

Friday, October 4, 13

Page 11: Introdução PHP + Kohana 3

O QUE ACONTECEU?

Todos os comandos PHPs devem ficar dentro das tags <?php e ?>

O interpretador do PHP analiza os comandos dentro das tags e executa.

No caso o comando echo exibe uma mensagem na tela.

Cusiosidade: tanto o echo quanto o print exibem uma mensagem na tela mas o echo é um construtor de linguagem e o print é uma função.

Friday, October 4, 13

Page 12: Introdução PHP + Kohana 3

SINTAXE BÁSICA

O PHP é uma linguagem interpretada e irá executar tudo entre as tags <?php ?>

Todos os comando PHP devem terminar com ; (ponto e vírgula)

<p>Isto vai ser ignorado.</p><?php echo 'Enquanto isto vai ser interpretado.'; ?><p>Isto também vai ser ignorado.</p>

Friday, October 4, 13

Page 13: Introdução PHP + Kohana 3

EXERCÍCIO

Criar um script em PHP que mostre a mensagem ‘Olá Mundo’.

Friday, October 4, 13

Page 14: Introdução PHP + Kohana 3

COMENTÁRIOS

O PHP suporta vários tipos de comentários

<?phpecho 'Isto é um teste';//Comentário de uma linha em c++

/* Este é um comentário de múltiplas linhas       ainda outra linha de comentário */

echo 'Isto é ainda outro teste';echo 'Um teste final';#Comentário estilo shell 1 linha?>

Friday, October 4, 13

Page 15: Introdução PHP + Kohana 3

VARIÁVEIS

Variáveis são formas de representar valores

Para definir uma variável basta colocar um simbolo de cifrão ($) seguido de um nome.

$idade = 25;

Assim esta definido a variável $idade com o valor 25.

Friday, October 4, 13

Page 16: Introdução PHP + Kohana 3

VARIÁVEIS

No PHP não é necessário setar o tipo da variável, ela é definida pelo interpretador na hora da execução.

As variáveis devem obrigatóriamente começar com uma letra ou sublinhado (_)

<?php$nome = 'João'; //Variável válida$2nome = ‘Maria’; //Inválida$_r = false; //Válida?>

<?php$var = 'João'; //Tipo string$var = 1; //Tipo integer$var = false; //Tipo boolean?>

Friday, October 4, 13

Page 17: Introdução PHP + Kohana 3

TIPOS DE DADOS

Agora que vimos um pouco sobre variáveis, vamos ver que tipos de dados o PHP suporta.

O PHP possui oito tipos de dados:

4 básicos: integer, boolean, string, float

2 compostos: array, object

2 tipos especiais: resource, NULL

Friday, October 4, 13

Page 18: Introdução PHP + Kohana 3

BOOLEAN

O tipo BOOLEAN é o mais simple do PHP representa somente os valores true / false (verdadeiro / falso)

O PHP não diferencia maiusculas de minusculas ao atribuir os valores true ou false, sendo que True, TRUE, true são o mesmo

valor se tratando de boleanos.

<?php$foo = True; // atribui o valor True para $foo$bar = False; // atribui o valor True para $foo?>

Friday, October 4, 13

Page 19: Introdução PHP + Kohana 3

INTEGER

O tipo INTEGER representa números inteiros

O tamanho máximo de um inteiro depende da plataforma.PHP não suporta inteiros sem sinal (UNSIGNED)

O valor máximo de um inteiro pode ser obtido com a constante PHP_INT_MAX

<?php$a = -10;$b = 45;?>

Friday, October 4, 13

Page 20: Introdução PHP + Kohana 3

FLOAT

O tipo FLOAT serve para armazenar números de ponto flutuante (doubles ou números reais)

Para separar os valores é utilizado . ponto (separador decimal)

<?php$a = 1.98;$bar = 1002.25;?>

Friday, October 4, 13

Page 21: Introdução PHP + Kohana 3

STRING

O tipo STRING é utilizado para representar um conjunto de caracteres. Não existe limite para esse tipo, a limitação é a

quantidade de memória no servidor.

<?php$a = “Minha String bonita”;$nome = “Meu nome é João”;?>

Friday, October 4, 13

Page 22: Introdução PHP + Kohana 3

ARRAY

Um dos tipos de dados mais poderoso do PHP.É um tipo de dado composto.

Um array no PHP é um mapa ordenado que relaciona chaves para valores.

Estrutura de um arrayarray( chave => valor , ... )// chave pode ser tanto string ou um integer// valor pode ser qualquer coisa

Friday, October 4, 13

Page 23: Introdução PHP + Kohana 3

ARRAY

Para definir um array podemos usar o construtor array()

<?php$arr = array("foo" => "bar", 12 => true);

echo $arr["foo"]; // barecho $arr[12];    // 1?>

Friday, October 4, 13

Page 24: Introdução PHP + Kohana 3

ARRAY

Também é possivel criar arrays dentro de array

<?php$arr = array("chave" => array(6 => 5, 13 => 9, "a" => 42));

echo $arr["chave"][6];    // 5echo $arr["chave"][13];   // 9echo $arr["chave"]["a"];  // 42?>

Friday, October 4, 13

Page 25: Introdução PHP + Kohana 3

ARRAY

Se for omitido a chave quando você adiciona um novo item ao array, o maior indice inteiro é obtido e a nova chave será esse

maior número + 1

<?php// Esse array é como ...array(5 => 43, 32, 56, "b" => 12);

// ... este arrayarray(5 => 43, 6 => 32, 7 => 56, "b" => 12);?>

Friday, October 4, 13

Page 26: Introdução PHP + Kohana 3

OBJECT

O tipo OBJECT é usado para representar instâncias de classes. É criado através da expressão new

Mais detalhes serão vistos na aula de orientação a objetos.

<?php$obj = new Classe();?>

Friday, October 4, 13

Page 27: Introdução PHP + Kohana 3

VARIÁVEIS E CONSTANTES

Recapitulando, variáveis são usadas para armazenar os mais váriados tipo de dados, podendo ser inteiro, float, string, array, etc. Seu valor

pode ser alterado a qualquer ponto no programa

<?php$a = 1.98; //$a é um float$a = “pato”; //$a agora é uma string?>

Friday, October 4, 13

Page 28: Introdução PHP + Kohana 3

VARIÁVEIS E CONSTANTES

Também temos as CONSTANTES. Elas funcionam como variáveis, podendo armazenar qualquer tipo de dado, a única diferença é que os valores das CONTANTES são IMUTÁVEIS, ou seja, não muda

no decorrer da aplicação<?php

// Nomes de constantes válidosdefine("FOO",     "alguma coisa");define("FOO2",    "alguma outra coisa");define("FOO_BAR", "alguma coisa mais");

// Nomes de constantes inválidasdefine("2FOO",    "alguma coisa");

// Isto é válido, mas deve ser evitado:// O PHP pode vir a fornercer uma constante mágica// que danificará seu scriptdefine("__FOO__", "alguma coisa");

?>Friday, October 4, 13

Page 29: Introdução PHP + Kohana 3

EXERCÍCIO

Criar um novo arquivo para exibir a mensagem “Ola Mundo” mas utilizando uma váriavel e outra utilizando uma constante

Friday, October 4, 13

Page 30: Introdução PHP + Kohana 3

OPERADORES ARITMÉTICOS

Assim como todas as linguagens de programação o PHP também possui operadores aritméticos.

Exemplo Nome Resultado

-$a Negação Oposto de $a

$a + $b Adição Soma de $a e $b

$a - $b Subtração Diferença entre $a e $b

$a * $b Multiplicação Produto de $a e $b

$a / $b Divisão Quociente de $a e $b

$a % $b Módulo Resto de $a dividido por $b

Friday, October 4, 13

Page 31: Introdução PHP + Kohana 3

OPERADORES DE ATRIBUIÇÃO

O operador básico de atribuição é o “=”. Não significa igual, mas que que o operador da esquerda recebe o valor da expressão da

direita

<?php

$a = ($b = 4) + 5; /* $a configurado para 9 e $b configurado como 4.*/

?>

Friday, October 4, 13

Page 32: Introdução PHP + Kohana 3

OPERADORES DE ATRIBUIÇÃO

O operador básico de atribuição é o “=”. Não significa igual, mas que que o operador da esquerda recebe o valor da expressão da

direita

<?php

$a = ($b = 4) + 5; /* $a configurado para 9 e $b configurado como 4.*/

?>

Friday, October 4, 13

Page 33: Introdução PHP + Kohana 3

OPERADORES DE COMPARAÇÃO

Permite a comparação de dois valores o resultado sera verdadeiro ou falso

Exemplo Nome Resultado

$a == $b Igual Verdadeiro (TRUE) se $a for igual a $b

$a === $b Idêntico Verdadeiro (TRUE) se $a for igual a $b e forem do mesmo tipo

$a != $b Diferente Verdadeiro (TRUE) se $a for diferente de $b

$a <> $b Diferente Verdadeiro (TRUE) se $a for diferente de $b

$a !== $b Não idêntico Verdadeiro se $a não for igual e $b ou não forem do mesmo tipo

$a < $b Menor que Verdadeiro se $a for menor que $b

$a > $b Maior que Verdadeiro se $a for maior que $b

$a <= $b Menor ou igual Verdadeiro se $a for menor ou igual a $b

$a >= $b Maior ou igual Verdadeiro se $a for maior ou igual a $b

Friday, October 4, 13

Page 34: Introdução PHP + Kohana 3

OPERADORES DE INCREMENTO

O PHP suporta operadores de pré e pós-incremento no estilo C/C++

Exemplo Nome Efeito

++$a Pré-incremento Incrementa $a em 1 e retorna $a

$a++ Pós-incremento Retorna $a e então incrementa $a em 1

--$a Pré-decremento Decrementa $a em 1 e então retorna $a

$a-- Pós-decremento Retorna $a e então decrementa $a em 1

Friday, October 4, 13

Page 35: Introdução PHP + Kohana 3

OPERADORES DE INCREMENTO/DECREMENTO

Exemplos<?phpecho "<h3>Pós incremento</h3>";$a = 5;echo "Deve ser 5: " . $a++ . "<br />\n";echo "Deve ser 6: " . $a . "<br />\n";

echo "<h3>Pré incremento</h3>";$a = 5;echo "Deve ser 6: " . ++$a . "<br />\n";echo "Deve ser 6: " . $a . "<br />\n";

echo "<h3>Pós decremento</h3>";$a = 5;echo "Deve ser 5: " . $a-- . "<br />\n";echo "Deve ser 4: " . $a . "<br />\n";

echo "<h3>Pré decremento</h3>";$a = 5;echo "Deve ser 4: " . --$a . "<br />\n";echo "Deve ser 4: " . $a . "<br />\n";?>

Friday, October 4, 13

Page 36: Introdução PHP + Kohana 3

OPERADORES LÓGICOSPermite a comparação de dois valores boleanos, obtendo como

resposta verdadeiro ou falso

Exemplo Nome Resultado

$a and $b E Verdadeiro (TRUE) se $a e $b forem verdadeiros.

$a && $b E Verdadeiro (TRUE) se $a e $b forem verdadeiros.

$a or $b OU Verdadeiro se $a ou $b forem verdadeiros.

$a || $b OU Verdadeiro se $a ou $b forem verdadeiros.

! $a NÃO Verdadeiro se $a for falso

$a xor $b XOR Verdadeiro se $a ou $b são verdadeiros mas não ambos

Friday, October 4, 13

Page 37: Introdução PHP + Kohana 3

OPERADORES LÓGICOSExemplos

<?php

// $a será false$a = (false && false);// $b será false $b = (true  && false);// $c será verdadeiro$c = (true && true);// $d será verdadeiro$d = (true  and  true);

//$e sera true$e = false || true;// $f sera true$f = false or true;

?>

Friday, October 4, 13

Page 38: Introdução PHP + Kohana 3

OPERADORES DE STRINGOs operadores de string permiter concatenar (juntar) duas strings

é utilizado o . (ponto) ou .=

<?php$a = "Olá ";$b = $a . "mundo!"; // agora $b contém "Olá mundo!"

$a = "Olá ";$a .= "mundo!";// agora $a contém "Olá mundo!"//é igual a $a = $a . “mundo” --> $a = “Olá “ . “mundo!”?>

Friday, October 4, 13

Page 39: Introdução PHP + Kohana 3

OPERADORES DE ARRAYSegue a lista de operadores de arrays

Exemplo Nome Resultado

$a + $b União União de $a e $b

$a == $b Igualdade TRUE se $a e $b tiverem os mesmos pares de chave/valor

$a === $b Identico TRUE se $a e $b tem os mesmos pares de chave/valor na mesma ordem e do mesmo tipo.

$a != $b Desigualdade TRUE se $a for diferente de $b

$a <> $b Desigualdade TRUE se $a for diferente de $b

$a !== $b Não Identico TRUE se $a não for identico a $b

Friday, October 4, 13

Page 40: Introdução PHP + Kohana 3

OPERADORES DE ARRAYExemplo de união

<?php$a = array("a" => "maçã", "b" => "banana");$b = array("a" =>"pêra", "b" => "framboesa", "c" => "morango");

$c = $a + $b; // Uniao de $a e $becho "União de \$a e \$b: \n";var_dump($c);

$c = $b + $a; // União de $b e $aecho "União de \$b e \$a: \n";var_dump($c);?>

Friday, October 4, 13

Page 41: Introdução PHP + Kohana 3

OPERADORES DE ARRAYExemplo de igualdade

<?php$a = array("maçã", "banana");$b = array(1 => "banana", "0" => "maçã");

var_dump($a == $b); // bool(true)var_dump($a === $b); // bool(false)?>

Friday, October 4, 13

Page 42: Introdução PHP + Kohana 3

EXERCÍCIOSTendo $x=10; e $y=7; escreva um código que imprima o seguinte resultado.

Utilize os operadores aritméticos.Não imprima o texto, use as variáveis $x e $y e uma terceira para o como $resultado.

10 + 7 = 1710 - 7 = 310 * 7 = 7010 / 7 = 1.428571428571410 % 7 = 3

Friday, October 4, 13

Page 43: Introdução PHP + Kohana 3

EXERCÍCIOSCrie uma variável chamada $valor imprima e seguinte texto.(Faça as operações citadas)

Valor é 8.Adicione 2. Valor agora é 10.Subtraia 4. Valor agora é 6.Multiplique por 5. Valor agora é 30.Divida por 3. Valor agora é 10.Incremente em 1. Valor agora é 11.Decremente em 1. Valor agora é 10.

Friday, October 4, 13

Page 44: Introdução PHP + Kohana 3

EXERCÍCIOSCrie uma variável chamada $valor imprima e seguinte texto.(Faça as operações citadas)

Valor é 8.Adicione 2. Valor agora é 10.Subtraia 4. Valor agora é 6.Multiplique por 5. Valor agora é 30.Divida por 3. Valor agora é 10.Incremente em 1. Valor agora é 11.Decremente em 1. Valor agora é 10.

Friday, October 4, 13

Page 45: Introdução PHP + Kohana 3

EXERCÍCIOSCrie uma variável chamada de $certo=”certo”; e imprima a seguinte frase usando contatenação de string com a variável $certo.

Quando é pra dar certo, vai dar certo!

Friday, October 4, 13

Page 46: Introdução PHP + Kohana 3

EXERCÍCIOSCrie uma variável chamada $valor e atribua tipos de dados para imprimir esse resultado.

Dica: a função que retorna o tipo de dado é gettype($var)Dica: use concatenação de string

$valor é string.$valor é double.$valor é boolean.$valor é integer.$valor é NULL.

Friday, October 4, 13

Page 47: Introdução PHP + Kohana 3

ESTRUTURAS DE CONTROLEIF/ELSE

O construtor if é um dos recursos mais importantes em várias linguagens de programação, PHP inclusive. Ele permite a execução condicional de um trecho de código.

Estrutura do if

O código é executado caso a expressão seja verdadeira (true)

if (expressao) codigo a ser executado

Friday, October 4, 13

Page 48: Introdução PHP + Kohana 3

ESTRUTURAS DE CONTROLEIF/ELSE

A expressao na condicional é avaliada como um valor boleano, executando o código caso o valor da expressão seja verdadeiro.

Exemplo

<?phpif ($a > $b)  echo "a é maior que b";?>

Friday, October 4, 13

Page 49: Introdução PHP + Kohana 3

ESTRUTURAS DE CONTROLEIF/ELSE

Para executar mais de um comando dentro da condicional utilizamos bloco de comandos com {}

Exemplo

<?phpif ($a > $b) {  echo "a é maior b";  $b = $a;}?>

Friday, October 4, 13

Page 50: Introdução PHP + Kohana 3

ESTRUTURAS DE CONTROLEIF/ELSE

Geralmente temos a necessidade de executar um trecho de código caso e expressão seja verdadeira e outro caso ela seja falsa, para isso utilizamos o else junto com o operador if.

Exemplo<?phpif ($a > $b) {  echo "a é maior b";  $b = $a;} else { echo "a não é maior b";}?>

Friday, October 4, 13

Page 51: Introdução PHP + Kohana 3

ESTRUTURAS DE CONTROLEIF/ELSE

Outra necessidade comum é fazer várias comparações em sequência, para tal utilizamos o elseif ou else if

Exemplo

Pode-se encadeiar vários elseif

<?phpif ($a > $b) {    echo "a é maior que b";} elseif ($a == $b) {    echo "a é igual a b";} else {    echo "a é menor que b";}?>

Friday, October 4, 13

Page 52: Introdução PHP + Kohana 3

ESTRUTURAS DE CONTROLESWITCH

O switch funciona de forma similar a uma série de if/elseif encadeiados. Útil para comparar vários valores sobre uma mesma expressão.

Friday, October 4, 13

Page 53: Introdução PHP + Kohana 3

ESTRUTURAS DE CONTROLESWITCH

Exemplo <?phpif ($i == 0) {    echo "i é igual a 0";} elseif ($i == 1) {    echo "i é igual a 1";} elseif ($i == 2) {    echo "i é igual a 2";}

switch ($i) {    case 0:        echo "i igual 0";        break;    case 1:        echo "i igual 1";        break;    case 2:        echo "i igual 2";        break;}?>

Friday, October 4, 13

Page 54: Introdução PHP + Kohana 3

ESTRUTURAS DE CONTROLEFOR

FOR é utilizado para criar laços de repetição. Que permite que você execute um determinado trecho de código por repetidas vezes.

Estrutura básica do for

for (expressao; expressao2; expressao3) codigo a ser executado

Friday, October 4, 13

Page 55: Introdução PHP + Kohana 3

ESTRUTURAS DE CONTROLEFOR

A primeira expressão é executada no começo do laço

A segunda expressão é avaliada a cada iteração. Se o resultado for true o laço continua caso contrário é interrompido.

A terceira expressão é executada no fim de iteração

for (expressao; expressao2; expressao3) codigo a ser executado

Friday, October 4, 13

Page 56: Introdução PHP + Kohana 3

ESTRUTURAS DE CONTROLEFOR

Exemplos<?php/* exemplo 1 */

for ($i = 1; $i <= 10; $i++) {    echo $i;}

/* exemplo 2 */

for ($i = 1; ; $i++) {    if ($i > 10) {        break;    }    echo $i;}

/* exemplo 3 */

$i = 1;for (; ; ) {    if ($i > 10) {        break;    }    echo $i;    $i++;}

/* exemplo 4 */

for($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++);?>

Friday, October 4, 13

Page 57: Introdução PHP + Kohana 3

ESTRUTURAS DE CONTROLEWHILE

O while é o tipo de laço mais simples do PHP. Sua estrutura básica é:

Enquanto a expressão for verdadeira o código do laço será executado.

while (expressao) codigo a ser executado

<?php

$i = 1;while ($i <= 10) {    echo $i++;}?>

Friday, October 4, 13

Page 58: Introdução PHP + Kohana 3

ESTRUTURAS DE CONTROLEWHILE

Uma variação do while é o laço do-while, a única diferença para o while é que a expressão é testada no final de cada iteração ao invés de ser no comeco como é no while

<?php$i = 0;do {    echo $i;} while ($i > 0);?>

Friday, October 4, 13

Page 59: Introdução PHP + Kohana 3

ESTRUTURAS DE CONTROLEFOREACH

O foreach é uma solução poderosa para iterar sobre arrays ou objetos. Funciona apenas com esses tipos de dados.Sintaxe básica do foreach

Na primeira forma a cada iteração o valor atual do array é atribuido a variável valor.Na segunda forma acontece a mesma coisa, apenas atribuindo a chave atual na variável $chave

foreach (array as $valor) codigo

foreach (array as $chave => $valor) codigo

Friday, October 4, 13

Page 60: Introdução PHP + Kohana 3

ESTRUTURAS DE CONTROLEFOREACH

<?php/* exemplo 1: imprime apenas valores */

$a = array(1, 2, 3, 17);

foreach ($a as $v) {    echo "O valor atual de \$v: $v.\n";}

/* exemplo 2: imprime o valor e a posição do array */

$a = array(1, 2, 3, 17);

$i = 0; /* apenas para fins educativos */

foreach ($a as $v) {    echo "\$a[$i] => $v.\n";    $i++;}

/* exemplo 3: imprime chave e valor */

$a = array(    "um" => 1,    "dois" => 2,    "tres" => 3,    "desessete" => 17);

foreach ($a as $k => $v) {    echo "\$a[$k] => $v.\n";}?>

Friday, October 4, 13

Page 61: Introdução PHP + Kohana 3

EXERCÍCIOS

Faça um script PHP que pegue o mês atual e verifique se é setembro if-else e imprima a seguinte mensagem:

Dica: a função date(‘F’) retorna o mês (provavelmente em inglês)

Altere o valor do mês para qualquer outro valor e teste se cai na condicional else.

Estamos em setembro!!!

Não estamos em setembro =(

Friday, October 4, 13

Page 62: Introdução PHP + Kohana 3

EXERCÍCIOS

Escreva um script PHP que através de um laço imprima as seguintes mensagens

Utilize while no primeiro laço, do-while no segundo e for nos dois últimos. Sem utilizar arrays neste exercício.

abc abc abc abc abc abc abc abc abc

xyz xyz xyz xyz xyz xyz xyz xyz xyz

1 2 3 4 5 6 7 8 9

1. Item A2. Item B3. Item C4. Item D5. Item E6. Item F

Friday, October 4, 13

Page 63: Introdução PHP + Kohana 3

EXERCÍCIOS

Utilize um laço for para imprimir uma lista de números ao quadrado de 1 a 12

Utilize as variáveis do laço para imprimir os números.

1 * 1 = 12 * 2 = 43 * 3 = 9...12 * 12 = 144

Friday, October 4, 13

Page 64: Introdução PHP + Kohana 3

EXERCÍCIOS

Utilize dois laços for para imprimir uma tabela de multiplicação como esta:

Dica utilize um for para as linhas e outro para as colunas.

Friday, October 4, 13

Page 65: Introdução PHP + Kohana 3

FUNÇÕES

Uma função é um pedaço de código que realiza alguma tarefa específica, podendo ser chamada quantas vezes for necessária.Uma função é definida com a palavra reservada function uma declaração de função segue essa estrutura:

O nome de função segue a mesma regra de nomes de variáveis.Pode ter N argumentos.Não é obrigatório retornar nada (return)

<?phpfunction teste ($arg_1, $arg_2, /* ..., */ $arg_n){    echo "Exemplo de função.\n";    return $valor_retornado;}?>

Friday, October 4, 13

Page 66: Introdução PHP + Kohana 3

FUNÇÕES

<?php//Define a função teste sem argumentosfunction teste (){    echo "Olá mundo.";}

//Executa a funçãoteste(); //Irá imprimir Olá mundo.

//Define uma função com argumentofunction teste ($complemento){    echo "Olá " . $complemento;}

//Executa a funçãoteste("mundo"); //Irá imprimir Olá mundo

//Executa a funçãoteste("batata"); //Irá imprimir Olá batata?>

Friday, October 4, 13

Page 67: Introdução PHP + Kohana 3

FUNÇÕES

Para retornar valores é utilizado a palavra return.

A palavra return não imprime resultados na tela, apenas retorna o valor para quem chamou a função.

<?phpfunction quadrado ($num){    return $num * $num;}echo quadrado (4);   // imprime '16'.?>

Friday, October 4, 13

Page 68: Introdução PHP + Kohana 3

EXERCÍCIOS

Escreva e chame uma função que imprima a frase

Escreva uma nova função que aceite um parametro e exiba na saudação.

ola mundo!

ola batata!

Friday, October 4, 13

Page 69: Introdução PHP + Kohana 3

EXERCÍCIOS

Escreva e chame uma função receba dois argumentos, realize um calculo e devolva a área de um retângulo com a seguinte frase.

Para um retângulo de altura $h e largura $l a área é $area

Friday, October 4, 13

Page 70: Introdução PHP + Kohana 3

EXERCÍCIOS

Faça uma função que receba um argumento diga se o número informado é par

O número X é parO número X não é par

Friday, October 4, 13

Page 71: Introdução PHP + Kohana 3

EXERCÍCIOS

Faça uma função que receba um argumento e calcule seu fatorial.Dica: pode-se utilizar laço for

Escreva uma nova função que calcule o fatorial de um número utilizando recursividade.

Friday, October 4, 13

Page 72: Introdução PHP + Kohana 3

ORIENTAÇÃO A OBJETOS

O suporte a orientação foi adicionado ao PHP na versão 4.Toda a parte de orientação a objetos foi reescrita na versão 5.

Orientação a objetos nada mais é do que passar para uma linguagem de computador a compreensão que já temos do mundo real.

Friday, October 4, 13

Page 73: Introdução PHP + Kohana 3

ORIENTAÇÃO A OBJETOS

Todo objeto do mundo real que queremos representar será transformado numa classe e seus atributos serão propriedades e métodos.

Exemplo vamos supor que queremos representar uma árvore, iriamos definir a classe como arvore e seus atributos como tamanho, quantidade de galhos, quantidade de folhas, se é frutifera ou não seria convertidos em propriedades e métodos.

Friday, October 4, 13

Page 74: Introdução PHP + Kohana 3

ORIENTAÇÃO A OBJETOS

Para definir uma classe utilizamos a palavra class seguido do nome da classe (lembrar da regras de nomes do PHP)

Definição básica de uma classe em PHP

Dentro da classe podemos definir suas propriedades e métodos, basicamente as propriedades são variaveis dentro da classe e os métodos funções criadas dentro da classe.

<?phpclass arvore {    }

?>

Friday, October 4, 13

Page 75: Introdução PHP + Kohana 3

ORIENTAÇÃO A OBJETOS

Exemplificando vamos criar uma classe olaMundo com um método ola()

<?php

//define uma classeclass olaMundo{ //define um método    function ola() { echo "Olá mundo."; }}

//instancia classe A e chama método$instancia_a = new A();$instancia_a->ola();?>

Friday, October 4, 13

Page 76: Introdução PHP + Kohana 3

ORIENTAÇÃO A OBJETOS

Ao se criar uma classe uma pseudo variável $this fica disponível para chamar propriedades e métodos dentro do contexto da classe.

<?php

//define uma classeclass olaMundo{ //define um método    function ola() { echo "Olá "; $this->mundo(); //executa o metodo mundo() } //define um método    function mundo() { echo "mundo."; }}

//instancia classe A e chama método$instancia_a = new olaMundo();$instancia_a->ola();?>

Friday, October 4, 13

Page 77: Introdução PHP + Kohana 3

ORIENTAÇÃO A OBJETOSVISIBILIDADE

Ao se definir uma classe nem sempre queremos deixar os métodos e propriedades visíveis para serem acessados livremente.Para isso podemos definir “níveis” de visibilidade para as propriedades e métodos, são eles:

public: Não impõem nenhum restrição de acesso

protected: Métodos e propriedades apenas acessíveis dentro da classe ou classes que a herdem

private: Métodos e propriedades acessíveis apenas dentro da classe.

Friday, October 4, 13

Page 78: Introdução PHP + Kohana 3

ORIENTAÇÃO A OBJETOSVISIBILIDADE

<?php/** * Define MinhaClasse */class MinhaClasse{    public $publica = 'Publica';    protected $protegida = 'Protegida';    private $privada = 'Privada';

    public function imprimeAlo()    {        echo $this->publica;        echo $this->protegida;        echo $this->privada;    }}

$obj = new MinhaClasse();echo $obj->publica; // Funcionaecho $obj->protegida; // Erro Fatalecho $obj->privada; // Erro Fatal$obj->imprimeAlo(); //Mostra Public, Protected e Private

Friday, October 4, 13

Page 79: Introdução PHP + Kohana 3

ORIENTAÇÃO A OBJETOSCONSTRUTORES/DESTRUTORES

O PHP tem dois métodos mágicos para as classes um é o __contruct() e o outro é o __destruct()

Esses métodos são chamados automáticamente em momentos distintos, como o nome sugere o __construct() é chamado quando a instância é criada e o __destruct() quando a instância é destruída.

Friday, October 4, 13

Page 80: Introdução PHP + Kohana 3

EXERCÍCIOSCrie uma classe chamada olaMundo e um método digaOi() que imprima a mensagem “olá mundo”.

Crie um método na classe olaMundo que receba um parâmetro e exiba na tela uma saudação como “olá Fulano”.

Cria uma classe que exiba a mensagem “olá mundo” na inicialização da instância.

Friday, October 4, 13

Page 81: Introdução PHP + Kohana 3

EXERCÍCIOSRefaça o exercício para calcular a área de um retângulo separando o método que faz o cálculo do que exibe a mensagem.

Faça uma classe que cálcule o fatorial de um número. Receba o número no construtor e verifique se ele é válido. Crie um método chamado resultado para retornar a resposta.

Crie uma classe chamada Calculadora que receba dois parametros no construtor. Implemente quatro métodos Adicao(), Subtracao(), Multiplicacao() e Divisao() que retorne os resultados correspondentes

Friday, October 4, 13

Page 82: Introdução PHP + Kohana 3

ORIENTAÇÃO A OBJETOSHERANÇA

A herança funciona de forma que os métodos e propriedades definidos numa classe ‘pai’ possa ser acessada (herdada) para uma classe ‘filha’.

No PHP para declarar que uma classe herda as propriedades de outras usamos a palavra extends.

Por exemplo vamos analizar uma moto e um carro. Ambos tem características em comum como rodas, marcha, velocidade, etc.

Podemos criar uma classe genérica chamada Veiculo com os atributos de ambos.

Friday, October 4, 13

Page 83: Introdução PHP + Kohana 3

ORIENTAÇÃO A OBJETOSHERANÇA

<?phpclass Veiculo{ public $marcha;

public $quantidadeRodas;

public function passarMarcha() { // código }

public function andar() { // código }}

class Carro extends Veiculo{ public function __construct() { $this->quantidadeRodas = 4; }}

$carro = new Carro();$carro->andar();?>

Friday, October 4, 13

Page 84: Introdução PHP + Kohana 3

ORIENTAÇÃO A OBJETOSCLASSES ABSTRATAS

No PHP5 foi introduzido métodos e classes abstratas.De forma bem resumida uma classe e métodos abstratos servem como modelo para uma classe concreta.

Quando uma classe herda uma classe abstrata todos os métodos marcados como abstratos devem ser implementados na classe ‘filha’.

Outra coisa importânte é que as assinaturas dos métodos devem coincidir, ou seja, ter os mesmos números de argumentos e tipos.

Friday, October 4, 13

Page 85: Introdução PHP + Kohana 3

ORIENTAÇÃO A OBJETOSCLASSES ABSTRATAS

<?phpabstract class ClasseAbstrata{// Força a classe que estende ClasseAbstrata a definir esse método    abstract protected function pegarValor();        // Método comum    public function imprimir() {        print $this->pegarValor();    }}

class ClasseConcreta1 extends ClasseAbstrata{ // obrigado definir esse método    protected function pegarValor() {        return "ClasseConcreta1";    }}

?>

Friday, October 4, 13

Page 86: Introdução PHP + Kohana 3

EXERCÍCIOS

Refaça novamente a classe Calculadora criando uma classe abstrata com todos os métodos abstratos para realização dos cálculos, implemente numa classe filha.

Friday, October 4, 13

Page 87: Introdução PHP + Kohana 3

EXERCÍCIOS

Crie uma classe Equipamento com o atributo ligado (tipo boolean) e com os métodos liga e desliga. O método liga torna o atributo ligado true e o método desliga torna o atributo ligado false

Friday, October 4, 13

Page 88: Introdução PHP + Kohana 3

EXERCÍCIOS

Uma sub-classe EquipamentoSonoro que herda as características de Equipamento e que possui os atributos volume que varia de 0 a 10 e stereo (do tipo boolean). A classe ainda deve possuir métodos para ler e alterar o volume (getter e setter), além dos métodos mono e stereo. O método mono torna o atributo stereo falso e o método stereo torna o atributo stereo verdadeiro. Ao ligar o EquipamentoSonoro através do método liga, seu volume é automaticamente ajustado para 5

Friday, October 4, 13

Page 89: Introdução PHP + Kohana 3

EXERCÍCIOS

Faça um script PHP que instancia 2 objetos da classe Equipamento e 2 objetos da classe EquipamentoSonoro. O script ainda deve inserir esses objetos em um array e, depois, listar todos os elementos do array.

Friday, October 4, 13

Page 90: Introdução PHP + Kohana 3

INCLUDE / REQUIRE

O PHP fornece alguns comandos para inclusão de arquivos do tipo php em sua aplicação são eles

include, require, include_once, require_once

Todos fazem a mesma coisa, incluem um arquivo PHP no seu script

include emite um “warning” caso o arquivo não seja encontrado.requere emite um “error” caso o arquivo não seja encontrado.

Friday, October 4, 13

Page 91: Introdução PHP + Kohana 3

FUNCIONALIDADES WEBSUPERGLOBAIS

O PHP existem algumas variáveis pré definidas chamadas de superglobais. São acessíveis em todo escopo do script. As principais delas são

$GLOBALS: Um array associativo contendo todas as variáveis no escopo global do arquivo.

$_SERVER: Um array contendo informações sobre o servidor. As entradas neste array são criadas pelo servidor web.

Friday, October 4, 13

Page 92: Introdução PHP + Kohana 3

FUNCIONALIDADES WEBSUPERGLOBAIS

$_GET: Um array associativo de variáveis passadas para o script atual através do método HTTP GET.

$_POST: Um array associativo de variáveis passadas para o script atual através do método HTTP POST.

$_FILES: Um array associativo de arquivos enviados para o script atual com o método HTTP POST.

Friday, October 4, 13

Page 93: Introdução PHP + Kohana 3

FUNCIONALIDADES WEBSUPERGLOBAIS

$_COOKIE: Um array associativo com os cookies setados em sua aplicação.

$_SESSION: Um array associativo com as variáveis de sessão em sua aplicação

$_REQUEST: Um array associativo com os dados de $_GET, $_POST e $_COOKIE

$_ENV: Um array associativo com as variáveis de ambiente.

Friday, October 4, 13

Page 94: Introdução PHP + Kohana 3

SESSÕES

As sessões permitem os dados pré determinados estejam disponíveis em acessos subsequentes.

Para iniciar uma sessão usamos o comando session_start()

Para registrar uma variável na sessão usamos a superglobal $_SESSION

Para destruir uma sessão usamos o session_destroy()

Friday, October 4, 13

Page 95: Introdução PHP + Kohana 3

SESSÕES

<?php// pagina1.php

session_start();

echo 'Bem vindo a pagina #1';

$_SESSION['favcolor'] = 'verde';$_SESSION['animal']   = 'gato';$_SESSION['time']     = time();

echo '<br /><a href="pagina2.php">pagina 2</a>';

?>

Friday, October 4, 13

Page 96: Introdução PHP + Kohana 3

SESSÕES

<?php// pagina2.php

session_start();

echo 'Bem vindo a pagina #2<br />';

echo $_SESSION['favcolor']; // verdeecho $_SESSION['animal'];   // gatoecho date('Y m d H:i:s', $_SESSION['time']);

echo '<br /><a href="pagina1.php">pagina 1</a>';?>

Friday, October 4, 13

Page 97: Introdução PHP + Kohana 3

EXERCÍCIO

Crie um script que inicie uma sessão e que exiba as seguintes informação

ID da sessão;Data de criação da sessão;Data de último acesso;Número de visitas anteriores;

Dica: id da sessão session_id()Dica: data de criação time() ou date(‘d/m/Y’)Dica: utilize isset()

Friday, October 4, 13

Page 98: Introdução PHP + Kohana 3

REQUISIÇÃO GET

A superglobal $_GET contém todas as variáveis passas por uma requisição HTTP GET

<?phpecho 'Olá ' . $_GET["nome"];// ou print_r para imprimir todas as chaves e valoresprint_r($_GET);?>

Friday, October 4, 13

Page 99: Introdução PHP + Kohana 3

REQUISIÇÃO POST

A superglobal $_POST contém todas as variáveis passas por uma requisição HTTP POST

<?phpecho 'Olá ' . $_POST["nome"];// ou print_r para imprimir todas as chaves e valoresprint_r($_POST);?>

Friday, October 4, 13

Page 100: Introdução PHP + Kohana 3

COOKIES

Cookies permiter salvar dados no navegador do usuário permitindo o acompanhamento ou identificação dos usuário quando retornam a página, para setar um cookie utilizamos a função setcookie()

O cookie deve ser setado antes de ter qualquer saida para tela

bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [,bool $secure = false [, bool $httponly = false ]]]]]] )

Friday, October 4, 13

Page 101: Introdução PHP + Kohana 3

COOKIES

<?php$value = 'alguma coisa de algum lugar';

setcookie("CookieTeste", $value);/* expira em 1 hora */setcookie("CookieTeste", $value, time()+3600);  

/* Imprimindo valor do cookie */

// Mostra um cookie individualecho $_COOKIE["CookieTeste"];

/* Outra maneira de depurar(debug)/testar é vendo todos os cookies */print_r($_COOKIE);?>

Friday, October 4, 13

Page 102: Introdução PHP + Kohana 3

EXERCÍCIO

Crie um script PHP (funcionario.php) contendo uma classe Funcionario com atributos privados nome e salario. A classe deverá ter um construtor que receba os atributos como parâmetros. Além disso, deve ter métodos para obter e alterar os atributos nome e salário (getNome, setNome, getSalario, setSalario).

O salário jamais poderá ser negativo. Crie também um método __toString() para retornar uma string contendo todos os atributos.

Friday, October 4, 13

Page 103: Introdução PHP + Kohana 3

EXERCÍCIO

Crie um script PHP (processa.php) que recebe dados (nome e salário) de um formulário (formulario.php), instancia um objeto Funcionario (funcionario.php), preenche o objeto com os dados vindos do formulário e, depois, exibe esse objeto em um outro script (mostra.php).

Friday, October 4, 13

Page 104: Introdução PHP + Kohana 3

BANCO DE DADOS

O PHP suporta diversos banco de dados. Neste curso será abordado como trabalhar com o banco de dados MySQL

Para se conectar com o bando de dados podemos utilizar a extensão mysqli ou PDO_MySQL.

Friday, October 4, 13

Page 105: Introdução PHP + Kohana 3

BANCO DE DADOS

Estrutura do mysqli

endereco: Nome ou IP onde está localizado o servidor MySQL;

usuario: Usuário para se conectar ao servidor MySQL;

senha: Senha para se conectar ao servidor MySQL;

banco_de_dados: Nome da base de dados que será utilizada;

porta: Porta do serviço MySQL

mysqli(endereco, usuario, senha, banco_de_dado, porta)

Friday, October 4, 13

Page 106: Introdução PHP + Kohana 3

BANCO DE DADOS

Exemplo de conexão com banco de dados:

<?php//conecta com servidor e banco de dados$mysqli = new mysqli("localhost", "usuario", "senha", "banco");

//verifica se houve algum erro ao conectarif ($mysqli->connect_errno) {    echo "Erro ao conectar com mysql: " .  $mysqli->connect_error;}?>

Friday, October 4, 13

Page 107: Introdução PHP + Kohana 3

BANCO DE DADOS

Com a conexão pronta podemos realizar consultas no banco de dados.

<?php//conecta com servidor e banco de dados$mysqli = new mysqli("localhost", "usuario", "senha", "banco");

//verifica se houve algum erro ao conectarif ($mysqli->connect_errno) {    echo "Erro ao conectar com mysql: " .  $mysqli->connect_error;}

$consulta = $mysqli->query("SELECT * FROM cidade");

while ($resultado = $consulta->fetch_assoc()){ print_r($resultado);}?>

Friday, October 4, 13

Page 108: Introdução PHP + Kohana 3

EXERCÍCIO

Criar uma tabela no banco de dados;

Conectar com mysqli;

Inserir registro;

Consultar ;

Apagar registro;

Atualizar um Registro

Friday, October 4, 13

Page 109: Introdução PHP + Kohana 3

STRINGS

Assim como os arrays as strings são muito utilizadas nas aplicações, segue uma lista de funções básicas.

strlen devolve o tamanho da string.

<?php$str = 'abcdef';echo strlen($str); // 6

$str = ' ab cd ';echo strlen($str); // 7?>

Friday, October 4, 13

Page 110: Introdução PHP + Kohana 3

STRINGS

É possível cada caracter de uma string ou exibir um caracter específico

Imprimir uma string com for

<?php$str = 'abcdef';echo $str{2}; // c

echo $str{0}; // a?>

Friday, October 4, 13

Page 111: Introdução PHP + Kohana 3

STRINGS

Transformar toda uma string em letras minusculas

ou maiusculas

<?php$str = 'ABC';echo strtolower($str); // abc?>

<?php$str = 'abc';echo strtoupper($str); // ABC?>

Friday, October 4, 13

Page 112: Introdução PHP + Kohana 3

STRINGS

Para procurar um texto dentro de uma string podemos usar o strpos(string, o_que_quero_procurar)

<?php$string = 'abc';$procurar   = 'a';$pos = strpos($string, $procurar);

if ($pos === false) {    echo "A string '$procurar' não foi encontrada em '$string'";} else {    echo "A string '$procurar' foi encontrada em '$string'";    echo " na posição $pos";}?>

Friday, October 4, 13

Page 113: Introdução PHP + Kohana 3

STRINGS

strip_tags(string) remove todas as tags HTML de uma string

<?php

$texto = '<p>Teste de paragrafo.</p> <a href="#link">Ir</a>';

echo strip_tags($texto);

Friday, October 4, 13

Page 114: Introdução PHP + Kohana 3

STRINGS

str_replace(procurar, substituir, string) para substituir uma string por outra

<?php// Retorna: <body text='black'>$body = str_replace("%body%", "black", "<body text='%body%'>");

// Retorna: Você deveria comer pizza, cerveja e sorvete todo dia$f  = "Você deveria comer frutas, vegetais e fibras todo dia.";$saudavel = array("frutas", "vegetais", "fibras");$yummy   = array("pizza", "cerveja", "sorvete");$body = str_replace($saudavel, $yummy, $f);?

Friday, October 4, 13

Page 115: Introdução PHP + Kohana 3

STRINGS

explode(delimitador, string) para explodir uma string para um array

<?php

$pizza  = "pedaco1|pedaco2|pedaco3|pedaco4|pedaco5|pedaco6";$pedacos = explode("|", $pizza);

echo $pedacos[0]; // pedaco1echo $pedacos[1]; // pedaco2

$data  = "20/02/1988”;$dt_arr = explode("/", $p);

echo $dt_arr[0]; // 20echo $dt_arr[1]; // 02echo $dt_arr[2]; // 1988

Friday, October 4, 13

Page 116: Introdução PHP + Kohana 3

NAMESPACES

Em projetos muito grandes pode acontecer de ser definido duas classes com o mesmo nome.

Para evitar esse tipo de problema usamos o namespace para atribuir uma organização virtual a cada classe

Recomendado utilizar um namespace por arquivo

Friday, October 4, 13

Page 117: Introdução PHP + Kohana 3

NAMESPACES

Para definir um namespace utilizamos a palavra namespace seguido de seu ‘caminho’ (o namespace funciona como se fosse pastas)

<?php// Foo.php

namespace CS\Ferramentas;

class OlaMundo{ public function digaOi() {

}}?>

Friday, October 4, 13

Page 118: Introdução PHP + Kohana 3

NAMESPACES

Para definir um namespace utilizamos a palavra namespace seguido de seu ‘caminho’ (o namespace funciona como se fosse pastas)

<?php// Foo.php

namespace CS\Ferramentas;

class OlaMundo{ public function digaOi() {

}}?>

Friday, October 4, 13

Page 119: Introdução PHP + Kohana 3

NAMESPACES

E para instanciar a classe com namespace fazemos assim:

OU

<?phprequire 'Foo.php';

$ola = new \CS\Ferramentas\OlaMundo();?>

<?phprequire 'Foo.php';

use \CS\Ferramentas\OlaMundo;

$ola = new OlaMundo();?>

Friday, October 4, 13

Page 120: Introdução PHP + Kohana 3

PROJETO

Criar um Blog em PHP com uma tabela no banco de dados para representar o título da postagem, conteúdo e autor.

Criar uma página para exibir todas as postagensCriar uma página para cadastrar nova postagemCriar uma página para editar a postagem

Friday, October 4, 13

Page 121: Introdução PHP + Kohana 3

KOHANA

O Kohana é um framework em PHP, open source (código aberto),construído sobre o PHP5, orientado a objetos e com o padrão MVC

Friday, October 4, 13

Page 122: Introdução PHP + Kohana 3

KOHANA

a

Friday, October 4, 13

Page 123: Introdução PHP + Kohana 3

KOHANA

O Model é responsável pela comunicação com banco de dados, obtenção de dados, validação, etc.

A View é responsável pela exibição dos dados para o usuário final, incluindo informações processadas, imagens, css, js.

A Controller cuida de toda a parte lógica da aplicação, processar os dados obtidos da Model enviar para a View.

Friday, October 4, 13

Page 124: Introdução PHP + Kohana 3

PADRÃO DE CODIFICAÇÃO

Cada framework tem sua própria filosofia e melhores práticas de codificação, mas no ano de 2009 foi criado um grupo de desenvolvedores de vários frameworks para definir boas práticas de programação para a linguagem.

Não é um grupo oficial do PHP, mas é formado por representantes de vários frameworks atuais, o nome do grupo é PHP-FIG, sendo FIG um acrônimo para (Framework Interoperability Group).

Friday, October 4, 13

Page 125: Introdução PHP + Kohana 3

PADRÃO DE CODIFICAÇÃOAté o momento foram criadas quatro PSR, que são as melhores práticas para o desenvolvimento utilizando PHP, sendo elas:

PSR-0: Focado em manter uma convenção de arquivo, classe e namespace para o carregamento automático do código (autoloading) (https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md)

PSR-1: Focado em definir os elementos padrões de codificação que são necessários para assegurar um elevado nível de interoperabilidade técnica entre o código PHP compartilhado. (https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-1-basic-coding-standard.md)

Friday, October 4, 13

Page 126: Introdução PHP + Kohana 3

PADRÃO DE CODIFICAÇÃO

PSR-2: Focado no padrão de codificação utilizando PHP para padronização do código (https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-1-basic-coding-standard.md)

PSR-3: Define uma interface padrão para uma interface de log (https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md)

Friday, October 4, 13

Page 127: Introdução PHP + Kohana 3

PADRÃO DE CODIFICAÇÃO

Atualmente o Kohana não faz parte do grupo PHP-FIG, mas possui uma documentação bem detalhada do seu padrão de codificação e segue alguns padrões do PSR.

Nomes de classes e locais de arquivos

As classes no Kohana devem tem a primeira letra maiuscula e utilizar underscore(_) para separar as palavras.

Todas as classes devem ficar na pasta classes.

Friday, October 4, 13

Page 128: Introdução PHP + Kohana 3

PADRÃO DE CODIFICAÇÃONome da classe localização

Controller_Template classes/Controller/Template.php

Model_User classes/Model/User.php

Model_BlogPost classes/Model/BlogPost.php

Database classes/Database.php

Database_Query classes/Database/Query.php

Form classes/Database/Query.php

Friday, October 4, 13

Page 129: Introdução PHP + Kohana 3

PADRÃO DE CODIFICAÇÃO

Uso de chaves em estruturas de controle

As chaves devem ser colocados em suas próprias linhas, indentado com o comando da estrutura de controle.

// Forma corretaif ($a === $b){ ...}else{ ...} // forma erradaif ($a === $b) { ...} else { ...}

Friday, October 4, 13

Page 130: Introdução PHP + Kohana 3

PADRÃO DE CODIFICAÇÃO

Uso de chaves em classes

A excessão da regra de como devem ficar as chaves é na declaração da classe onde a chave começa ao lado do nome da classe e não em sua própria linha.

// Corretoclass Abacate { // Incorretoclass Abacate{

Friday, October 4, 13

Page 131: Introdução PHP + Kohana 3

PADRÃO DE CODIFICAÇÃO

Chaves vazias

Em caso de utilizar chaves vazias não coloque nenhum caracter entre eles (espaco ou nova linha)

// Corretoclass Abacate {} // Incorretoclass Abacate { }

Friday, October 4, 13

Page 132: Introdução PHP + Kohana 3

PADRÃO DE CODIFICAÇÃO

Arrays

Os arrays podem ser definidos tanto em uma linha como em multiplas linhas.

array('a' => 'b', 'c' => 'd'); array( 'a' => 'b', 'c' => 'd',);

Friday, October 4, 13

Page 133: Introdução PHP + Kohana 3

PADRÃO DE CODIFICAÇÃO

Abrindo parenteses

A abertura de parenteses vai na mesma linha, sendo fechado no mesmo nível da declaração.

// Corretoarray( ...) // Incorreto:array( ...)

Friday, October 4, 13

Page 134: Introdução PHP + Kohana 3

PADRÃO DE CODIFICAÇÃO

Convenção de nomes de classes

O Kohana utiliza underscore (_) no nome das classes e não o camelCase.

// Controller class, uses Controller_ prefixclass Controller_Apple extends Controller { // Model class, uses Model_ prefixclass Model_Cheese extends Model { // Regular classclass Peanut {

Friday, October 4, 13

Page 135: Introdução PHP + Kohana 3

PADRÃO DE CODIFICAÇÃO

Quando for instanciar uma nova classe não utilize parenteses se não for passado nenhum parametro para o construtor da classe.

// Correto:$db = new Database; // Incorreto:$db = new Database();

Friday, October 4, 13

Page 136: Introdução PHP + Kohana 3

PADRÃO DE CODIFICAÇÃO

Funções e métodos Devem ser todas em letras minusculas e utilizar underscore para separar as palavras.

function drink_beverage($beverage){

Friday, October 4, 13

Page 137: Introdução PHP + Kohana 3

PADRÃO DE CODIFICAÇÃO

Variáveis

Mesmo padrão de métodos, deve-se utilizar letras minusculas e underscore.

// Correto:$foo = 'bar';$long_example = 'uses underscores'; // Incorreto:$weDontWantThis = 'understood?';

Friday, October 4, 13

Page 138: Introdução PHP + Kohana 3

PADRÃO DE CODIFICAÇÃO

Indentação

A indentação deve utilizar tabs e nunca espaços

Friday, October 4, 13

Page 139: Introdução PHP + Kohana 3

PADRÃO DE CODIFICAÇÃO

Concatenação de string

Não utiliza espaços entre o operador de concatenação

// Correto:$str = 'one'.$var.'two'; // Incorreto:$str = 'one'. $var .'two';$str = 'one' . $var . 'two';

Friday, October 4, 13

Page 140: Introdução PHP + Kohana 3

PADRÃO DE CODIFICAÇÃO

Operadores de comparação

Utilizar OR e AND para comparação

// Correto:if (($foo AND $bar) OR ($b AND $c)) // Incorreto:if (($foo && $bar) || ($b && $c))

Friday, October 4, 13

Page 141: Introdução PHP + Kohana 3

PADRÃO DE CODIFICAÇÃO

Utilizar elseif ou invés de else if

// Correto:elseif ($bar) // Incorreto:else if($bar)

Friday, October 4, 13

Page 142: Introdução PHP + Kohana 3

PADRÃO DE CODIFICAÇÃO

Constantes

Utilizar sempre caracteres maiusculos

// Correto:define('MY_CONSTANT', 'my_value');$a = TRUE;$b = NULL; // Incorreto:define('MyConstant', 'my_value');$a = True;$b = null;

Friday, October 4, 13

Page 143: Introdução PHP + Kohana 3

PADRÃO DE CODIFICAÇÃO

Constantes

Utilizar sempre caracteres maiusculos

// Correto:define('MY_CONSTANT', 'my_value');$a = TRUE;$b = NULL; // Incorreto:define('MyConstant', 'my_value');$a = True;$b = null;

Friday, October 4, 13

Page 144: Introdução PHP + Kohana 3

KOHANA

Instalação do Kohana:

Puxar framework no site;

Verificar se o ambiente esta ok (install.php)

Configurar o Kohana (bootstrap)

Mover arquivo de instalação

Hello World

Friday, October 4, 13

Page 145: Introdução PHP + Kohana 3

CONFIGURAÇÃO

A maior parte da configuração de ambiente do Kohana é feita no arquivo bootstrap, localizado em application/bootstrap.php

As principais configurações que devem ser feitas são timezone e locale e base_url

Friday, October 4, 13

Page 146: Introdução PHP + Kohana 3

CONFIGURAÇÃO

Também é possivel habilitar e desabilitar módulos

Kohana::modules(array( // 'auth' => MODPATH.'auth', // Basic authentication // 'cache' => MODPATH.'cache', // Caching with multiple backends // 'codebench' => MODPATH.'codebench', // Benchmarking tool // 'database' => MODPATH.'database', // Database access // 'image' => MODPATH.'image', // Image manipulation // 'minion' => MODPATH.'minion', // CLI Tasks // 'orm' => MODPATH.'orm', // Object Relationship Mapping // 'unittest' => MODPATH.'unittest', // Unit testing // 'userguide' => MODPATH.'userguide', // User guide and API documentation ));

Friday, October 4, 13

Page 147: Introdução PHP + Kohana 3

FLUXO DA REQUISIÇÃO

O fluxo começa no arquivo index.php, nessa etapa são definidos os caminhos da aplicação, dos modulos e do sistema (APPPATH, MODPATH, SYSPATH)

Então entra em ação o bootstrap.php, carregando a classe Kohana, então é chamado o método Kohana:init responsável por iniciar a aplicação, configurar URL padrão (base_url), gerenciador de erros, cache e log.

Friday, October 4, 13

Page 148: Introdução PHP + Kohana 3

FLUXO DA REQUISIÇÃO

Nesta etapa também são carregados os módulos, o controle de rotas e a classe de request.

A classe Request (requisição) inicia, verifica se a rota existe, redireciona para o controller apropriado e devolve a reposta novamente para index, que exibe o resultado.

Friday, October 4, 13

Page 149: Introdução PHP + Kohana 3

ROTAS

O Kohana fornece um sistema de roteamento poderoso, permitindo fazer uma ligação com qualquer fragmento de URL com uma controller e action.

A rota padrão (default) do Kohana fica no arquivo bootstrap.php, cada rota no sistema deve ter um nome unico.

Route::set('default', '(<controller>(/<action>(/<id>)))')->defaults(array( 'controller' => 'Welcome', 'action' => 'index',));

Friday, October 4, 13

Page 150: Introdução PHP + Kohana 3

ROTAS

Este trecho de código cria a rota default, ao utilizar o método Route::set o primeiro parametro é o nome da rota, esse nome deve ser unico no sistema, e o segundo paramento é qual o padrão de URL que será casado neste exemplo é (<controller>(/<action>(/<id>))).

Esse padrão vai pegar o valor passado no token <controller> e procurar por um controller no sistema com o mesmo nome, e , fazer o mesmo com <action> e procurar nessa controller esse método. Ainda é utilizado o defaults para setar um valor padrão para a controller e para a action caso não seja passado na URL.

Friday, October 4, 13

Page 151: Introdução PHP + Kohana 3

ROTAS

Caso o valor da URL seja opcional ou não for presenta na rota, pode-se utilizar o defaults para definir valores padrões.

No caso controller e action devem sempre possuir um valor padrão. O Kohana também converte automaticamente o nome do controller para o padrão de nomes, por exemplo:

/blog/ver/11 irá procurar pela controller Controller_Blog.php na pasta classes/Controller/Blog.php e executar a ação action_ver()

Friday, October 4, 13

Page 152: Introdução PHP + Kohana 3

SESSÕES

O Kohana também fornece uma classe para facilitar o uso de sessões.

Para acessar a instância da sessão pode ser utilizado o método Session::instance.

// Pega a instancia da classe Session$session = Session::instance();

Friday, October 4, 13

Page 153: Introdução PHP + Kohana 3

SESSÕES

Todos os dados da sessão podem ser obtidos como array com o método Session::as_array.

// pega todos os dados da sessao como array$data = $session->as_array();

Friday, October 4, 13

Page 154: Introdução PHP + Kohana 3

SESSÕES

Para setar um novo valor da sessão pode ser usado o método set

// armazenar um novo valor$session->set($chave, $valor);// ouSession::instance()->set($chave, $valor); // Exemplo, armazenando id de um usuario$session->set('user_id', 10);

Friday, October 4, 13

Page 155: Introdução PHP + Kohana 3

SESSÕES

Para pegar um valor já setado usamos o get

// Pegar um valor da sessao$data = $session->get($chave, $valor_padrao); // Pegar o id do usuario$user = $session->get('user_id');

Friday, October 4, 13

Page 156: Introdução PHP + Kohana 3

SESSÕES

E, para deletar usamos o delete

// Deletar um valor da sessao$session->delete($chave); // Deletar o id do usuario (user_id)$session->delete('user_id');

Friday, October 4, 13

Page 157: Introdução PHP + Kohana 3

BANCO DE DADOS

O suporte a banco de dados vem desabilitado no Kohana, para habilita-lo é necessário ativar no módulo de database e orm no arquivo bootstrap.php.

Após habilitar o módulo de bando de dados e ORM é necessário criar um arquivo de configuração com os dados de acesso ao banco de dados.

Um modelo do arquivo pode ser encontrado na pasta modules/database/config/database.php. Não altere esse arquivo, copie ele para a pasta application/config e então configure seu banco de dados.

Friday, October 4, 13

Page 158: Introdução PHP + Kohana 3

BANCO DE DADOS

Com o acesso do Kohana ao banco de dados configurado já é possivel fazer as classes da Model (responsável pelas operações com o banco de dados).

Para criação dos Models o Kohana estabelece algumas regras:

O nome da tabela deve ter o mesmo nome do Model só que no plural. Ex. Model_Blog a tabela deverá ser blogs para Model_Post a tabela devera ser posts.

Friday, October 4, 13

Page 159: Introdução PHP + Kohana 3

BANCO DE DADOS

O plural das palavras são em inglês, caso você tenha alguma dúvida com o nome escolhido para a tabela pode usar o comando abaixo para verificar qual será o plural ou singular correspondente:

echo Inflector::plural('person'); //imprime people

echo Inflector::singular('people'); //imprime person

Friday, October 4, 13

Page 160: Introdução PHP + Kohana 3

MODEL

Umas das vantagens do Kohana é o poder do ORM que permite operações de crud de uma maneira simples, bastando herdar (extends) a classe ORM para sua classe Model, como no exemplo:

class Model_Member extends ORM{ ...}

Friday, October 4, 13

Page 161: Introdução PHP + Kohana 3

MODEL

Podemos carregar instancia da Model dessas formas

$user = ORM::factory('User');// Ou$user = new Model_User();

Friday, October 4, 13

Page 162: Introdução PHP + Kohana 3

MODEL

Para inserir um valor é bem simples, basta que sua Model herde a classe ORM. Exemplo:

// pegando a instancia$usuario = ORM::factory('User');

// definindo dados$usuario->first_name = 'Fulano';$usuario->last_name = 'de tal';

// salvando$usuario->save();

Friday, October 4, 13

Page 163: Introdução PHP + Kohana 3

MODEL

Para procurar um objeto podemos utilizar o método ORM::find, ou passa o ID do objeto diretamente para o construtor da classe ORM.

// Procurar usuário com ID 20$user = ORM::factory('User') ->where('id', '=', 20) ->find();// Ou no construtor$user = ORM::factory('User', 20);

Friday, October 4, 13

Page 164: Introdução PHP + Kohana 3

MODEL

Para recuperar todos os objetos da tabela usamos o ORM::find_all.

// Retorna todos os usuario no banco$users = ORM::factory('User')->find_all();

Friday, October 4, 13

Page 165: Introdução PHP + Kohana 3

MODEL

Para atualizar ou deletar basta recuperar o objeto com uma busca, e em seguida alterar o que for necessario e salva. Ou deletar o objeto.

// Procurar usuário com ID 20$user = ORM::factory('User') ->where('id', '=', 20) ->find();

// Atualiza objeto (altera informações e salva)$user->first_name = "Ciclano";$user->last_name = "de tal";$user->save();

// Deletar$user->delete();

Friday, October 4, 13

Page 166: Introdução PHP + Kohana 3

FIM DA PRIMEIRA PARTE

Friday, October 4, 13