Por que PHP?

Post on 16-Jan-2017

81 views 1 download

Transcript of Por que PHP?

Por que PHP?Para estudar, para trabalhar, para viver…

Duodraco (a.k.a Anderson Casimiro)

Por que?

Fácil?

Robusta?

Não dói no bolso?

Plataforma?

Comunidade?

Mas antes de começarmos…

“Tecnologias de Desenvolvimento vão muito

além do Código, devendo ser avaliadas pelo Ecossistema que

as suporta”

8 de Junho de 1995Nascia o Personal Home Page Tools(a.k.a PHP 1)

Pouco mais de um ano, o PHP tornou-se o PHP/FI (Forms Interpreter)

Rasmus (O Criador), juntou-se a Zeev e Andi em 1997 e no ano seguinte lançaram o PHP 3

Em 2000 foi lançado o PHP4 e com ele todo um ecossistema, com QA, extensões, documentação...

Obviamente, nem tudo eram flores...

Mas isso é passado...

Abstract Syntax TreeSuporte completo a 64bitsGerenciamento de MemóriaThread Safety

PerformanceRemoção de problemas de APINovos OperadoresString UnicodeManipulação de ErrosClasses anônimasType HintingReturn Types

.1

PHP é facil de aprender?

<?php$var = [ "Salve", "Hacker", "House"];echo implode(" ", $var);

localhost

http://localhost

Salve Hacker House

<?php

$variavel = new stdClass();

$array = [

"string" => 'string',

"int" => 123,

"float" => 1234.99,

"bool" => false

];

const IMPOSSIBLE = "impossível!";

if ($array['string'] === $variavel) {

echo IMPOSSIBLE, PHP_EOL;

}

<?php

function soma($operador, $operando){

return $operador + $operando;

}

<?php

$multiplicacao = function (int $multiplicando, int $multiplicador): int {

return $multiplicando * $multiplicador;

};

$fatorial = function (int $numero) use ($multiplicacao): int {

for($nExclamacao = 1;$numero > 0; $numero--){

$nExclamacao = $multiplicacao($numero,$nExclamacao);

}

return $nExclamacao;

};

echo $fatorial(7); //5040

<?phpdeclare(strict_types = 1);namespace HackerHouse\Duodraco\Sistema\Data;

class Contato implements \JsonSerializable{ protected $id; protected $nome; public function __construct(int $id, string $nome) { $this->id = $id; $this->nome = $nome; } public function jsonSerialize() { return (object)["id" => $this->id, "nome" => $this->nome]; }

use LoggerTrait;}

<?phpdeclare(strict_types = 1);namespace HackerHouse\Duodraco\Sistema\Data;

trait LoggerTrait{ public function log(string $message):bool { return syslog(LOG_CRIT, $message); }}

Fazendo uma aplicação PHP

$ mkdir ~/Workspace/hh & cd ~/Workspace/hh$ mkdir -p web application library/HH/Duodraco/Command$ touch web/index.php$ touch application/bootstrap.php$ touch library/HH/Duodraco/Command/Index.php$ vim composer.json…

{ "name": "duodraco/hh", "type": "project", "license": "MIT", "require": { "php": "^7.0", "respect/rest": "0.6.0" }, "autoload":{ "psr-4":{ "HH\\":"library/HH" } }}

composer.json

<?phprequire __DIR__."/../application/bootstrap.php";

web/index.php

<?phprequire_once __DIR__.'/../vendor/autoload.php';$router = new Respect\Rest\Router;$router->any('/',"HH\\Duodraco\\Command\\Index");

application/bootstrap.php

<?phpdeclare(strict_types = 1);

namespace HH\Duodraco\Command;

use Respect\Rest\Routable;

class Index implements Routable{ public function get(): string { return "Olá Hacker House"; }}

library/HH/Duodraco/Command/Index.php

$ mkdir ~/Workspace/hh & cd ~/Workspace/hh$ mkdir -p web application library/HH/Duodraco/Command$ touch web/index.php$ touch application/bootstrap.php$ touch library/HH/Duodraco/Command/Index.php$ vim composer.json…$ composer update -o --no-dev...$ php -S localhost:32768 -t webPHP 7.0.13 Development Server started at Sun Nov 27 22:35:33 2016Listening on http://localhost:32768Document root is /home/duodraco/Workspace/hh/webPress Ctrl-C to quit.[Mon Nov 14 22:35:39 2016] ::1:59506 [200]: /

localhosthttp://localhost:32768

Olá Hacker House!

Linguagem madura e poderosa

Paradigma Procedural

Paradigma Orientado a Objetos

Namespaces, Visibilidade, Traits

Paradigma Funcional

Lambdas, Closures, Currying

Generators (yield)

Type Hinting + Return types

Userland API

HTTP/2

Suporte completo a sistemas 64bits

Abstração para BD (PDO)

Streams

Unicode Escaping

Error Handling (Throwable)

Abstract Syntax Tree

Servidor Web embutido

Servidor Web

Aplicações

Empresas

Comunidade

Laravel Brasil

Blood has the same color for everyone

duodraco@gmail.comduodra.cophpsp.org.brslideshare.net/duodraco

#somostodosphp#comunidadefunciona

#manadapoderosa