PHP, um pouco além do B Á BÁ.

Alessandro feitoza

  • Zend Framework Developer
  • PHP com Rapadura Founder
  • Development / Architecture / Engineering
  • Web Development Instructor

Agradecimentos

  • Mulheres
  • Carinha do MEI
  • JavaCE

Arquitetura? Engenharia? Padrões de Projeto?

Programe como eu digo.
 

Mas não como eu faço!

SIMBORA!

Definição PHP

Text

Mentira?

Verdade Total!

https://oficinadepsicologia.com/perturbacoes-de-personalidade/histrionico-2/

Dúvida!

Será que depois de tanto estudar JAVA, ficamos loucos e estamos num hospicio pensando que somos programadores PHP?

Agora é sério

82% da web é PHP

  • É Barato
  • É Fácil
  • Todo mundo sabe
  • Roda em qualquer lugar
  • É barato e fácil
  • É Rápido
  • É Elegante
  • É Poderoso
  • É Escalável
  • Tem uma comunidade foda!

Quem usa essa disgraça?

Agora é sério!

Composer

Gerenciador de Depêndencias

  • Usar
  • Usar Direito

/vendor

NUNCA MEXER

PHP 5.4

Servidor embutido

http://localhost/projeto/index.php/clientes
php -S localhost:8000

http://localhost:8000

PHP 5.4

Acesso durante o instanciamento

$today = new DateTime();
return $today->format('d/m/Y H:i:s');
return (new DateTime)->format('d/m/Y H:i:s');

PHP 5.4

Nova sintaxe de arrays

$frutas = array('Banana', 'Tangerina', 'Laranja');
$frutas = ['Laranja', 'Banana', 'Abacate'];
$conexao = [
    'host' => 'localhost',
    'user' => [
        'name' => 'root',
        'pass' => '123456',
    ],
];

PHP 5.4

Nova sintaxe de arrays

$frutas = array('Banana', 'Tangerina', 'Laranja');
$frutas = ['Laranja', 'Banana', 'Abacate'];
$conexao = [
    'host' => 'localhost',
    'user' => [
        'name' => 'root',
        'pass' => '123456',
    ],
];

PHP 5.4

dereferenciamento de arrays

function getConnection()
{
    return [
        'host' => 'localhost',
        'user' => [
            'name' => 'root',
            'pass' => '123456',
        ],
    ];
}

$data = getConnection();
echo $data['host'];
echo getConnection()['host'];

PHP

Construção list()

$usuario = ['Alessandro', 'Feitoza', 'eu@alessandrofeitoza.eu'];

list($nome, $sobrenome, $email) = $usuario;

echo $nome; //result: Alessandro

PHP 5.5

Desempactotar um array

$usuarios = [
    0 => ['Alessandro', 'Feitoza', 'eu@alessandrofeitoza.eu'],
    1 => ['Rachel', 'Feitoza', 'rachel@email.com'],
    2 => ['Chiquim', 'das Rapaduras', 'chiquim@rapaduras.org'],
];

foreach ($usuarios as list($nome, $sobrenome, $email)) {
    echo "Me chamo $nome $sobrenome, meu email é $email <br>";
}

Me chamo Alessandro Feitoza, meu email é eu@alessandrofeitoza.eu
Me chamo Rachel Feitoza, meu email é rachel@email.com
Me chamo Chiquim das Rapaduras, meu email é chiquim@rapaduras.org

PHP 5.5

Pegando parte da String como um Array

$nome = 'Rapadura';

$letras = str_split($nome); //['R', 'a', 'p' ...]
$nome = 'Rapadura';

echo $nome[0]; // R

echo $nome[4], $nome[5], $nome[6], $nome[7]; // dura

PHP

Funções anônimas

$welcome = function ($name) {
    return "Well come $name":
};    

echo $welcome('Alisson'); //Well come Alisson
echo $welcome('Felipe'); //Well come Felipe
echo $welcome('To'); //Well come To
echo $welcome('Well'); //Well se come a si prórpio

PHP

Funções anônimas

$string = 'Sempre';

$welcome = function ($name) use ($string) {
    return "Well $string come $name":
};    

echo $welcome('Alisson'); //Well sempre come Alisson
echo $welcome('Felipe'); //Well sempre come Felipe
echo $welcome('To'); //Well sempre come To
echo $welcome('Well'); //Well sempre se come a si prórpio

PHP

Iteração de Objetos

class Pessoa
{
    public $nome;
    public $email;
    public $telefone;    
}

$pessoa1 = new Pessoa();

foreach ($pessoa1 as $atributo => $valor) {
    echo "$atributo = $valor <br>";   
}

Text

nome = ''

email = ''

telefone = ''

PHP

Herança Horizontal - traits

class Util
{
    public function dataHoraAgora() {}
    public function calculoImc() {}
    public function qualMeuSexo() {}
}

Class Usuario extends Util 
{
    function add () {
        $this->dahaHoraAgora();
    }
}
class Util
{
    public function dataHoraAgora() {}
    public function calculoImc() {}
    public function qualMeuSexo() {}
}

class Usuario extends Util 
{
    function add () {
        $this->dahaHoraAgora();
    }
}

E se Usuario precisasse extender de outra Class?

class Util
{
    public function dataHoraAgora() {}
    public function calculoImc() {}
    public function qualMeuSexo() {}
}

class Pessoa extends Util {}

class Usuario extends Pessoa 
{
    function add () {
        $this->dahaHoraAgora();
    }
}

Resolvido

???

E se Pessoa precisasse extender de outra Class?

trait Util
{
    public function dataHoraAgora() {}
    public function calculoImc() {}
    public function qualMeuSexo() {}
}

class Usuario extends Pessoa 
{
    use Util;

    function add () {
        $this->dahaHoraAgora();
    }
}

Tem mais?

Muito Mais

Referências

http://php.net

Isso é tudo pessoal!

Valeu o Boi

www.alessandrofeitoza.eu

email: eu@alessandrofeitoza.eu

twitter: @feitozaAle

facebook: alessandrofeitoza

deck

By Alessandro Feitoza

deck

  • 1,321