PHP

Vitor Mattos

Primeiros passos

Quem sou eu?

Realizador de sonhos desde 2003
Amante de opensource
Palestrante
PHP Zend Certified Engineer ( ZEND024235 )
PHPRio ( https://telegram.me/phprio )

CTO Lyseon Tech
Redes sociais: ( VitorMattos ou VitorMattosRJ )

A Lyseon Tech é uma cooperativa de trabalho com modelo de gestão democrática, segura e eficiente composta por profissionais de T.I. altamente qualificados e experientes no mercado. Prezamos por apresentar vantagens, tanto para o cooperado como para as empresas parceiras.

Fotografem, comentem, twittem!

@VitorMattosRJ

Conhecendo a web

Tim Berners-Lee

Idealizador da rede mundial de computadores: web

CERN

Laboratório Europeu para Física de Partículas

Aqui nasceu a web

Primeiro servidor web

Internet hoje

Localização geográfica de pessoas no Facebook e conexão entre elas (2014)

Internet hoje

Densidade de fotógrafos no Panoramio

O que é a web

Podemos descrever a Web ou World Wide Web (WWW) como uma rede de computadores interligados que disponibilizam documentos que podem ser acessados por qualquer pessoa através de programas chamados navegadores.

C   M

FUNCI   NA

?

Cliente x Servidor

Servidor

É quem provê algum conteúdo na web.

Entendendo programação

Margaret Hamilton

desenvolvimento do software de voo a bordo das missões Apollo da NASA

O que é programação?

Programar é criar uma série de instruções lógicas e fazer com que o computador as execute.

O que é algoritmo?

O algoritmo é a série de instruções lógicas que criamos para dizer ao computador quais os passos que ele deve seguir para fazer o que queremos.

Ada Lovelace

Criadora do primeiro algoritmo computacional

O que é linguagem de programação?

É a linguagem que utilizamos para escrever os algoritmos para o computador.

PHP: O que é?

Rasmus Lerdof

  • 1995 - Personal Home Page Tools (1.0)
     
  • 1997 - PHP/FI (2.0) +50.000 sites

PHP

O PHP (um acrônimo recursivo para "PHP: Hypertext Preprocessor", originalmente Personal Home Page) é uma linguagem de script bastante utilizada no desenvolvimento.

Zend

  • Zeev Suraski + Andi Gutmans
  • Ze + nd = Zend

1998 – PHP 3.0

2000 – PHP 4.0 Zend Engine PHP Hipertext Preprocessor 10% dos Domínios da Web

20% dos Domínios da Web 2004

Sara Golemon

Core developer do PHP

Tem comunidades?

PHPPB

PHPBA

PHP hoje

Quem utiliza?

Quem utiliza?

Tem padrões?

Tem gerenciamento de pacotes?

É rápido?

Tem documentação?

O PHP possui um Manual que você pode consultar sempre que quiser tirar dúvidas sobre a linguagem:
http://php.net/manual/pt_BR/index.php

Tem guia de boas práticas?

Talk Is Cheap, let’s code

Instalação

Instalação

LAMP, WAMP, XAMP

Instalação

php -S localhost:8000

Instalação

Docker

Como Funciona?

Quando uma página web é requisitada ao servidor, ele procura essa página dentro do seu sistema de arquivos e devolve ao cliente (o que fez a requisição) as informações contidas na página.

Olá mundo

Crie um arquivo index.php
Dentro dele escreva:
olá mundo

<?php
echo 'Olá mundo';

Ou se quiser escrever mais:

O que é HTML?

O HTML ou HyperText Markup Language é um conjunto de etiquetas que chamamos de tags que definem de qual forma o texto do documento será apresentado pelo navegador.

<!DOCTYPE html>
<html>
    <head>
    	<meta charset=utf-8 />
    	<title>Título aqui</title>
    </head>
    <body>
        O conteúdo vai aqui
    </body>
</html>

Variáveis

São espaços reservados na memória para armazenar dados. O conteúdo atribuído a uma variável, como o próprio nome diz, pode mudar sempre que necessário. No php as variáveis são precedidas por um nome seguido de $.

<!DOCTYPE html>
<html>
    <head>
    	<meta charset=utf-8 />
    	<title>Título aqui</title>
    </head>
    <body>
        <?php
            $cor = 'amarelo';
            echo $cor;
        ?>
    </body>
</html>

É um valor que não sofre alteração durante a execução do programa. Ela é representada por um identificador assim como as variáveis porém, não são precedidas de $ e geralmente escrevemos seu nome com letras MAIÚSCULAS.

<!DOCTYPE html>
<html>
    <head>
    	<meta charset=utf-8 />
    	<title>Título aqui</title>
    </head>
    <body>
        <?php
            define('MEU_CARRO', 'Ônibus');
            echo MEU_CARRO;
        ?>
    </body>
</html>

As variáveis e as constantes no PHP podem armazenar diversos tipos de dados e quem define qual é o tipo de dado é o PHP durante a execução do programa. Esse comportamento é chamado de tipagem dinâmica.

Tipos de dados

  • boolean (true ou false)
  • integer (números inteiros)
  • float (número de ponto flutuante)
  • string (texto que escrevemos entre aspas simples ou duplas)
  • array

 

Tem outros mas fica para outro momento

Tipos de dados

<?php
$vaiChover = true; // boolean
$idade = 18; // integer
$pi = 3.14; // float
$frase = 'Hello World'; // string
$carro = new StdClass; // object
$carro->cor = 'preto';

IDE

Eclipse PDT

Vamos programar?

Abra o seu editor de código escolhido e vamos começar a programar.

 

php.net/langref

Vamos fazer um programa?

Vamos escrever um programa?

Função var_dump para descobrir o tipo das variáveis.

Declare uma variável que receba o valor “Hello world” e depois escreva o seguinte instrução “var_dump(coloque sua variável aqui);” e atualize a página.

 

O que acontece?

Função var_dump para descobrir o tipo das variáveis.

Agora utilize o var_dump para ver os tipos das variáveis a seguir:

$var = '1';
$var = 1;
$var = 1.1;
$var = true;
$var = array('olá');
$var = ['Olá']

Comentários

/*
bloco
*/

// Linha

# Linha

Operadores

Os operadores são o que utilizamos para manipular os dados ou expressões em um programa.
Podemos ter operadores de atribuição ($var = 100), aritméticos (+, -) e entre outros.

Atribuição

Ele é utilizado para definir o valor de uma variável.

$a = “Hello world”;

Aritméticos

São utilizados para realizar operações matemáticas.

-$a  // Negação
$a + $b // Adição
$a - $b // Subtração
$a * $b // Multiplicação
$a / $b // Divisão
$a % $b // Módulo
$a ** $b // Exponential

Concatenação

A concatenação retorna a junção de strings e também de outros dados com uma string.

$a = "Olá ";
$b = $a . " mundo!";  // $b -> "Olá mundo!"

$a = 12;
$b = $a . " anos!";   // $b -> "12 anos"

Relacionais

São utilizados para realizar comparações entre valores ou expressões.

// valores são iguais
$a == $b

// valores e os tipos são iguais
$a === $b

// valores são diferentes
$a != $b ou $a <> $b

Relacionais

$a !== $b // tipos são diferentes
$a < $b   // menor que
$a > $b   // maior que
$a <= $b  // menor ou igual
$a >= $b  // maior ou igual

Lógicos

// E: retorna verdadeiro (TRUE) se tanto $a quanto $b são verdadeiros.
$a and $b

// OU: retorna verdadeiro se $a ou $b são verdadeiros.
$a or $b

São utilizados para fazer comparações lógicas retornando verdadeiro ou falso.

// XOR: verdadeiro se $a ou $b são verdadeiros, mas não ambos.
$a xor $b

// NÃO: verdadeiro se $a não é verdadeiro.
!$a

// E: verdadeiro se tanto $a quanto $b são verdadeiros.
$a && $b

// OU: verdadeiro se $a ou $b são verdadeiros.
$a || $b

Vamos programar?

Vamos somar as variáveis $a = 'a' e $b = 'b' e mostrar o resultado utilizado o echo desta forma:

 

 

 

O que acontece?

echo($a + $b);

Estruturas de controle

As estruturas de controle alteram o comportamento da execução do programa de acordo com as condições que colocamos.

 

If, while, for, foreach, switch, continue, break...

 

https://www.php.net/manual/pt_BR/language.control-structures.php

if

É uma estrutura de controle que insere um desvio na execução natural do programa. Caso a condição do if seja satisfeita o programa irá executar as instruções do seu bloco de comandos.

 

php.net/if

if

$a = 5;
$b = 2;

if ($a > $b) {
    echo 'a é maior que b';
}

if e else

Podemos também executar instruções de outro bloco de códigos caso a condição do if não seja satisfeita utilizando o else e também podemos criar várias condições usando if else.
Podemos ter vários if else porém, só um else.

 

php.net/else

if e else

$a = 5;
$b = 2;

if ($a > $b) {
    echo 'a é maior que b';
} elseif ($a == $b) {
    echo 'a é igual a b';
} else {
    echo 'a é menor que b';
}

while

Estrutura de repetição que possui uma condição para poder ser executado. Ele estabelece um laço de repetição do seu bloco de comandos, até que a condição seja satisfeita.

 

php.net/while

while

Sendo $i = 1; faça uma repetição para imprimir números de 1 a 10.

while

$i = 1;
while ($i <= 10) {
    echo "$i\n";
    $i++;
}

Sendo $i = 1; faça uma repetição para imprimir números de 1 a 10.

for

Estrutura de repetição parecidoa com o while porém, baseado em um contador. Ele é composto por um bloco com três expressões que estabelecem uma contagem.

for ($i = 1; $i <= 10; $i++) {
    echo "$i\n";
}
$idioma = 'pt-BR';
switch ($idioma) {
    case 'es':
        echo '¡Bienvenido!';
        break;
    case 'pt-BR':
        echo 'Bem vindo!':
        break;
    case 'en-US':
    default:
        echo 'Welcome!';
}

foreach

É um laço de repetição utilizado para iterações com arrays. Ele decompõe o array em cada um de seus elementos.

$frutas = ['pera', 'uva', 'maçã'];

foreach ($frutas as $fruta) {
    echo 'A fruta é' . $fruta;
}

include

Inclui um arquivo na aplicação

<?php
include 'teste.php';

echo $nome; // Vitor
<?php
$nome = 'Vitor';

include_once

Inclui um arquivo na aplicação uma única vez

<?php
include_once 'teste.php';

echo $nome; // Vitor
<?php
$nome = 'Vitor';

require

Similar ao include mas dá erro se arquivo não existir

<?php
require 'teste.php';

echo $nome; // Vitor
<?php
$nome = 'Vitor';

require_once

Similar ao include_once mas dá erro se arquivo não existir

<?php
require_once 'teste.php';

echo $nome; // Vitor
<?php
$nome = 'Vitor';

Funções

Pedaço de código (um subprograma) com um objetivo. Esse código é encapsulado em uma estrutura que recebe um conjunto de valores que chamamos de parâmetros, os processa e retorna o seu resultado.

 

php.net/function

Funções

Criar uma função que receba dois números e mostre a sua soma.

Funções

function soma($a, $b)
{
    return $a + $b;
}

echo soma(1, 2); // 3

Criar uma função que receba dois números e mostre a sua soma.

Trabalhando com arrays

A manipulação de arrays no PHP é um dos maiores recursos dessa linguagem.
Os arrays funcionam como grandes armazenadores de dados.

Trabalhando com arrays

Os valores em um array são acessados pela sua posição ou o nome da sua chave.
Podemos criar um array de duas formas:

$cores = array('vermelho', 'azul');
echo $cores[1] // azul
$cores = ['vermelho', 'azul'];
echo $cores[1] // azul

Arrays associativos

Os arrays em que podemos acessar seus valores através de palavras chave são chamados de arrays associativos.

$pessoa = array();
$pessoa['nome'] = 'Maria';
echo $pessoa['nome'] // Maria

Variáveis predefinidas

São variáveis que são criadas automaticamente dependendo do tipo de ambiente que sua aplicação estiver executando.

Variáveis predefinidas

Classes e objetos

Classes

Em orientação a objetos, uma classe é uma estrutura que abstrai um conjunto de coisas com características similares.

Uma determinada classe define o comportamento de seus objetos usando métodos e definindo suas características por meio de propriedades.

Classes

Classes e Interfaces são algo de teoria dos conjuntos para representar objetos reais em computação.

 

By: Carlos Alexandre

Objetos

Resumindo, uma instância de uma classe.

Criando uma classe

class Usuario
{
}

Propriedades

Identificam as características de uma classe

class Usuario
{
    public $nome;
    public $login;
}

Métodos

Definem comportamentos de uma classe

class Usuario
{
    public $nome;
    public $username;
    public function cadastrar()
    {
    }

    public function excluir()
    {
    }
}

Gerando instância de uma classe

class Usuario
{
}

$usuario = new Usuario();

Gerando instância de uma classe

$usuario = new Usuario();

$usuario->nome = 'Vitor';

echo $usuario->nome;

Namespaces

Agrupamento de classes, interfaces, funções e constantes, visando evitar o conflito entre seus nomes, atuando como um encapsulador para estes itens.

Definindo um namespace

<?php
namespace ProjectName;
class User {}
<?php
namespace ProjectName\Module;
class User {}

Usando namespace

<?php

namespace ProjectName;
class User {}

$user = new \ProjectName\User();

var_dump($user); // object(ProjectName\User)

Partiu