Nesta palestra aprenderemos a criar uma aplicação utilizando os recursos do PHP 5.4 e os componentes do projeto Aura. A demonstração será feita ao vivo com a criação de snippets de código.
A criação de uma loja virtual não é uma tarefa realizada apenas por desenvolvedores experientes e com um currículo extenso. Michael, que desenvolve, junto com o UOL, pacotes e soluções para a plataforma de pagamento digital PagSeguro vai mostrar isso ao vivo e a cores.
Palestra gratuita: E-commerce: mais fácil do que parece
Dia 12 de junho, das 10h às 13h
Local: Faculdade Impacta
A criação de uma loja virtual não é uma tarefa realizada apenas por desenvolvedores experientes e com um currículo extenso. Michael, que desenvolve, junto com o UOL, pacotes e soluções para a plataforma de pagamento digital PagSeguro vai mostrar isso ao vivo e a cores.
Palestra gratuita: E-commerce: mais fácil do que parece
Dia 12 de junho, das 10h às 13h
Local: Faculdade Impacta
Partindo de um código legado com uma organização frágil e pouco reutilizável iremos aprimorá-lo de forma incremental e com foco nas regras de negócio. Utilizaremos princípios de projeto orientado a objetos para torná-lo mais fácil de testar e reutilizar deixando o seu código mais robusto e escalável.
Introdução prática ao Apache Ant.
/**Depois que entrei no mundo Java, começei a procurar por conteúdo na internet para estudar, então me deparei com um ótimo site, http://www.argonavis.com.br, de um grande cara chamado Helder Rocha, que disponibiliza este mesmo conteúdo em seu site também. Obrigado pela ajuda a comunidade.*/
Programando para programadores: Desafios na evolução de um FrameworkPablo Dall'Oglio
Nesta palestra são abordados alguns desafios a serem enfrentados na criação de um Framework PHP open-source e também os obstáculos a serem superados para que o mesmo evolua tecnologicamente, mantendo a retrocompatibilidade e uma base de usuários ativa, fazendo o uso correto de seus conceitos.
Partindo de um código legado com uma organização frágil e pouco reutilizável iremos aprimorá-lo de forma incremental e com foco nas regras de negócio. Utilizaremos princípios de projeto orientado a objetos para torná-lo mais fácil de testar e reutilizar deixando o seu código mais robusto e escalável.
Introdução prática ao Apache Ant.
/**Depois que entrei no mundo Java, começei a procurar por conteúdo na internet para estudar, então me deparei com um ótimo site, http://www.argonavis.com.br, de um grande cara chamado Helder Rocha, que disponibiliza este mesmo conteúdo em seu site também. Obrigado pela ajuda a comunidade.*/
Programando para programadores: Desafios na evolução de um FrameworkPablo Dall'Oglio
Nesta palestra são abordados alguns desafios a serem enfrentados na criação de um Framework PHP open-source e também os obstáculos a serem superados para que o mesmo evolua tecnologicamente, mantendo a retrocompatibilidade e uma base de usuários ativa, fazendo o uso correto de seus conceitos.
Cakephp - framework de desenvolvimento de aplicações Web em PHPArlindo Santos
Apresentação da framework de desenvolvimento de aplicações web - cakePHP.
Aprender a criar uma aplicação web em PHP usando o CakePHP.
- Instalação?
- Organização?
- Como criar um Blog?
- Autenticação?
- Multi-utilizador?
Além do suporte à orientação a objetos o PHP 5 conta com uma série de funcionalidades e bibliotecas nativas que facilitam e otimizam o desenvolvimento de aplicações de médio e grande porte. Porém, às vesperas do lançamento da versão 5.3 do PHP, muitos profissionais ainda desconhecem as grandes vantagens dos releases 5.x da linguagem e, muitas vezes, mantém seus códigos estruturados para a versão 4.x.
Cooperativas de Software Livre: Uma comparação entre Brasil e ArgentinaFlávio Lisboa
Nesta apresentação abordamos um achado de uma pesquisa de doutorado sobre cooperativas de software livre no Brasil e fazemos uma comparação com a Argentina. Essa comparação é feita após uma contextualização do cooperativismo no mundo e no Brasil.
Aprenda a afiar suas garras com LaminasFlávio Lisboa
Nesta palestra apresento a trajetória do meu trabalho de instrutor e promotor do Zend Framework, agora Laminas, culminando com o lançamento do livro PHP Web Development with Laminas, pela Packt Publishing. Apresento os tópicos de uma formação completa de desenvolvedor web PHP trabalhando com aplicações orientadas a objeto usando padrões de projeto e desenvolvimento orientado a testes.
Ciência e software livre: desenvolvendo com métodoFlávio Lisboa
Esta palestra visa mostrar como o software livre se beneficia do paradigma do método científico e quais as vantagens de times de desenvolvimento de assimilarem as boas práticas desse método e a vantagem de manter sempre uma atitude crítica na busca de soluções de problemas.
Tópicos abordados:
* O método científico e os paradigmas da ciência
* Como o software livre aplica o método científico
* Como assimilar isso em sua empresa
Apresentação feita na 2ª edição do evento Micro Serviços Macro Negócios. Esta palestra irá mostrar como criar uma arquitetura de uma aplicação para microsserviços em PHP usando o microframework Mezzio. Para tanto, será apresentado um estudo de caso de uma aplicação PHP baseada em microsserviços, construída para um ambiente distribuído usando Kubernetes. O estudo de caso mostrará como microframework Mezzio facilita a construção de microsserviços a partir do conceito de middleware”. Serão apresentados ainda extensões para o Mezzio e seu uso combinado ao framework Swoole.
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019Flávio Lisboa
Da Teoria da Evolução para a solução de problemas baseada em busca, com provocações para quem não gosta de pensar.
O componente usado na demonstração está disponível em https://github.com/fgsl/geneticalgorithm.
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHPFlávio Lisboa
Esta palestra aborda: a necessidade e vantagens de utilização de um ambiente integrado de desenvolvimento e de como integrá-lo com ferramentas de linha de comando relacionadas à rotina de construção de software; e a questão da depuração de código, as técnicas para descoberta de causas de bugs e ferramentas para localizar gargalos no desempenho de aplicações PHP.
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de DadosFlávio Lisboa
Nesta palestra falamos sobre o governo eletrônico, alguns decretos federais relativos a soberania nacional e publicidade de informações para a sociedade, sobre o Serviço Federal de Processamento de Dados, sua produção de sistemas em PHP com destaque para dois produtos, o Sagui e o SerproDrive.
Arquitetura PHP para um mundo orientado a microsserviçosFlávio Lisboa
Nesta palestra abordaremos diversos aspectos da arquitetura de software contextualizados para o cenário de aplicações PHP construídas a partir da integração de microsserviços integrados. Dentro desse cenário, iremos separar o que é responsabilidade do PHP e o que não é, mas com o que ele pode contribuir (ou como ele pode evitar que seus parceiros tornem sua vida difícil). Abordaremos motivações, boas práticas e orientações para lidar com transações, manipulação de erros, execução de código lento, execução em linha de comando, coleta de dados de usuário, análise e business intelligence.
9. O projeto Aura
Código limpo;
●Bibliotecas fracamente acopladas;
●Pacotes independentes;
●Em conformidade com os padrões
PHP-FIG.
●
10. Código limpo
“Eu gosto que meu código seja elegante e eficiente. A
lógica deve ser simples para que fique mais difícil para
os bugs se esconder, as dependências devem ser
mínimas para que haja facilidade de manutenção, o
tratamento de erros deve estar completamente de
acordo com uma estratégia articulada, e o
desempenho deve estar próximo ao ideal de modo a
não tentar as pessoas a tornar o código confuso com
otimizações sem fundamento. Código limpo faz algo bem
feito.”
Quem disse isso?
32. Criando o controlador
<?php
namespace EscolaPackageWebHome;
use AuraFrameworkWebControllerAbstractPage;
class HomePage extends AbstractPage {
public function actionIndex()
{
$this->view = 'index';
}
}
35. Configurando a rota
<?php
/**
*
* Overrides for 'default' config mode.
*
* @var AuraFrameworkSystem $system Aura system directories; when cast to
* a string, the Aura system root directory.
*
* @var AuraAutoloadLoader $loader The autoloader for the system.
*
* @var AuraDiContainer $di The DI container for the system.
*
*/
// attach the path for a route named 'home' to the controller and action
$di->params ['AuraRouterMap'] ['attach'] [''] = [
// all routes with the '' path prefix (i.e., no prefix)
'routes' => [
// a route named 'home'
'home' => [
'path' => '/escola-aura/',
'values' => [
'controller' => 'home',
'action' => 'index'
]
]
]
];
// map the 'home' controller value to the controller class
$di->params ['AuraFrameworkWebControllerFactory'] ['map'] ['home'] =
'EscolaPackageWebHomeHomePage';
?>
43. Nossa tabela
Banco de dados "escola-aura"
CREATE TABLE IF NOT EXISTS `alunos` (
`matricula` int(11) NOT NULL AUTO_INCREMENT,
`nome` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`matricula`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
44. Definição de rota de inclusão
/escola-aura/config/default.php
// a route named 'save'
'save' => [
'path' => '/escola-aura/save',
'values' => [
'controller' => 'home',
'action' => 'save'
]
],
45. Ação de inclusão
public function actionSave()
{
$connection = $GLOBALS['di']->get('database');
$connection->connect();
$insert = $connection->newInsert();
$insert->into('alunos')
->cols(['nome']);
$bind = ['nome'=> $this->getContext()->getPost('nome')];
$stmt =
}
$connection->query($insert, $bind);
$this->response->setRedirect($this->router->generate('home'));
46. Conexão com banco de dados
/escola-aura/config/default.php
$di->set('database',function(){
$connection_factory = include realpath(__DIR__ . '/../package/Aura.Sql/scripts')
. DIRECTORY_SEPARATOR . 'instance.php';;
$connection = $connection_factory->newInstance(
// adapter name
'mysql',
// DSN elements for PDO; this can also be
// an array of key-value pairs
'host=localhost;dbname=escola-aura',
// username for the connection
'root',
// password for the connection
'xampp'
);
return $connection;
});
$GLOBALS['di'] = $di;
67. O projeto Aura
Código limpo;
●Bibliotecas fracamente acopladas;
●Pacotes independentes;
●Em conformidade com os padrões
PHP-FIG.
●
68. Código limpo
“Eu gosto que meu código seja elegante e eficiente. A
lógica deve ser simples para que fique mais difícil para
os bugs se esconder, as dependências devem ser
mínimas para que haja facilidade de manutenção, o
tratamento de erros deve estar completamente de
acordo com uma estratégia articulada, e o
desempenho deve estar próximo ao ideal de modo a
não tentar as pessoas a tornar o código confuso com
otimizações sem fundamento. Código limpo faz algo bem
feito.”
Quem disse isso?
90. Criando o controlador
<?php
namespace EscolaPackageWebHome;
use AuraFrameworkWebControllerAbstractPage;
class HomePage extends AbstractPage {
public function actionIndex()
{
$this->view = 'index';
}
}
93. Configurando a rota
<?php
/**
*
* Overrides for 'default' config mode.
*
* @var AuraFrameworkSystem $system Aura system directories; when cast to
* a string, the Aura system root directory.
*
* @var AuraAutoloadLoader $loader The autoloader for the system.
*
* @var AuraDiContainer $di The DI container for the system.
*
*/
// attach the path for a route named 'home' to the controller and action
$di->params ['AuraRouterMap'] ['attach'] [''] = [
// all routes with the '' path prefix (i.e., no prefix)
'routes' => [
// a route named 'home'
'home' => [
'path' => '/escola-aura/',
'values' => [
'controller' => 'home',
'action' => 'index'
]
]
]
];
// map the 'home' controller value to the controller class
$di->params ['AuraFrameworkWebControllerFactory'] ['map'] ['home'] =
'EscolaPackageWebHomeHomePage';
?>
101. Nossa tabela
Banco de dados "escola-aura"
CREATE TABLE IF NOT EXISTS `alunos` (
`matricula` int(11) NOT NULL AUTO_INCREMENT,
`nome` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`matricula`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
102. Definição de rota de inclusão
/escola-aura/config/default.php
// a route named 'save'
'save' => [
'path' => '/escola-aura/save',
'values' => [
'controller' => 'home',
'action' => 'save'
]
],
103. Ação de inclusão
public function actionSave()
{
$connection = $GLOBALS['di']->get('database');
$connection->connect();
$insert = $connection->newInsert();
$insert->into('alunos')
->cols(['nome']);
$bind = ['nome'=> $this->getContext()->getPost('nome')];
$stmt =
}
$connection->query($insert, $bind);
$this->response->setRedirect($this->router->generate('home'));
104. Conexão com banco de dados
/escola-aura/config/default.php
$di->set('database',function(){
$connection_factory = include realpath(__DIR__ . '/../package/Aura.Sql/scripts')
. DIRECTORY_SEPARATOR . 'instance.php';;
$connection = $connection_factory->newInstance(
// adapter name
'mysql',
// DSN elements for PDO; this can also be
// an array of key-value pairs
'host=localhost;dbname=escola-aura',
// username for the connection
'root',
// password for the connection
'xampp'
);
return $connection;
});
$GLOBALS['di'] = $di;