SlideShare a Scribd company logo
1 of 23
PHP moderne a správne
Tomáš Tatarko
28. marec 2015
Pred niekoľkými rokmi
A dnes…
PHP
Čo je skutočne trendy?
0%
13%
25%
38%
50%
5.2 5.3 5.4 5.5 5.6
Rozšírenie verzií
Vy patríte sem
Uplynulé verzie v skratke
• Namespaces (php 5.3)
• Anonymné funkcie (php 5.3, php 5.4)
• Generátory (php 5.5)
• Password hashing API (php 5.5)
• Variadické funkcie (php 5.6)
Namespaces
file1.php:
namespace MyProject;
class User { }
file2.php:
namespace OtherProject;
class User { }
Namespaces
<?php
use OtherProjectUser as User;
$myuser = new MyProjectUser();
$otheruser = new User();
Anonymné funkcie
$a = function() {
return 2;
};
$b = function($f) {
return $f() + $f();
};
echo $b($a); // 4
Generátory
function generateNumber($a, $b) {
$numbers = [];
for($a; $a <= $b; $a++) {
echo $a;
$numbers[] = $a;
}
return $numbers;
}
foreach(generateNumber(1, 3) as $i) {
echo $i;
}
// 123123
Generátory
function generateNumber($a, $b) {
for($a; $a <= $b; $a++) {
echo $a;
yield $a;
}
}
foreach(generateNumber(1, 3) as $i) {
echo $i;
}
// 112233
Password hashing API
$pass = password_hash(‘heslo’, PASSWORD_DEFAULT);
// $2y$10$c0ivD4qoxz.5Uml7Pyz4c.BKFeB6221TkU57j90WRGTRytvNJ4vdS
if(password_verify(‘heslo’, $pass)) {
echo ‘overene heslo’;
} else {
echo ‘nespravne heslo’;
}
Variadické funkcie
function testFunction($a, $b = 0, …$c) {
echo ”a: $a, b: $b, c: “ . count($c);
}
testFunction(1); // a: 1, b: 0, c: 0
testFunction(1, 2); // a: 1, b: 2, c: 0
testFunction(1, 2, 3); // a: 1, b: 2, c: 1
testFunction(1, 2, 3, 4); // a: 1, b: 2, c: 2
testFunction(1, 2, 3, 4, 5); // a: 1, b: 2, c: 3
Variadické funkcie
function test($a, $b, $c) {
return $a + $b + $c;
}
$array = [2, 3];
echo test(1, …$array); // 6
Čo prinesie budúcnosť?
• HHVM/HACK
• momentálne 3.6
• vlastný JIT engine
• modifikácie jazyka
• collections, async, lambdas, …
• PHP7
• phpng - JIT engine
• uniform variable syntax
• jeseň 2015
0
175
350
525
700
PHP 5.4 PHP 5.5 PHP 5.6 PHP 7 HHVM
Req/sec
Wordpress Drupal
Porovnanie rýchlosti
Composer
moderný dependency manager pre php
Prečo je moderný?
• Vnorené závislosti
• Prepojenie na verziovacie systémy (github)
• Centrálny repozitár (packagist)
• Definovanie pre každý projekt osobitne
Ako na to?
1. Vytvorím súbor composer.json
{
"name": "tatarko/super-project",
"description": “…”,
"license": "MIT",
"require": {
"monolog/monolog": "~1.0"
},
"autoload": {
"psr-4": {
"MyApp": "source/"
}
},
"authors": [
{
"name": "Tomáš Tatarko",
"email": "tomas@tatarko.sk"
}
]
}
Ako na to?
1. Spustím
php composer.phar update
1. Do svojho projektu pridám
<?php
require “vendor/autoload.php”;
Ako prispejem?
• Vytvorím samostatne funkčnú knižnicu
• Snažím sa dodržiavať PSR
• Vytvorím pre ňu repozitár na github
• Vytvorím balíček na packagist a prepojím ho
na github repozitár
• Spíšem readme
22
Otázky?
Ďakujem
Ste super!
tomas@tatarko.sk tatarko

More Related Content

Viewers also liked

Proyecto tecnologico
Proyecto tecnologicoProyecto tecnologico
Proyecto tecnologicoPANDA223
 
Conceptos basicos de redes e internet
Conceptos basicos  de redes e internetConceptos basicos  de redes e internet
Conceptos basicos de redes e internetgordillorey
 
CIENCIA, TECNOLOGÍA E INNOVACIÓN EN EL CONTEXTO DE LA REFORMA A LA LEY DE EDU...
CIENCIA, TECNOLOGÍA E INNOVACIÓN EN EL CONTEXTO DE LA REFORMA A LA LEY DE EDU...CIENCIA, TECNOLOGÍA E INNOVACIÓN EN EL CONTEXTO DE LA REFORMA A LA LEY DE EDU...
CIENCIA, TECNOLOGÍA E INNOVACIÓN EN EL CONTEXTO DE LA REFORMA A LA LEY DE EDU...Dore Serna
 
Porque es mala la pornografia
Porque es mala la pornografiaPorque es mala la pornografia
Porque es mala la pornografiaJ Luis GM
 
Aprendizaje autonomo
Aprendizaje autonomoAprendizaje autonomo
Aprendizaje autonomoarmandoarq
 
Trabajo final
Trabajo finalTrabajo final
Trabajo finalTiaene
 
Sandra isabel guerrero perez rss diapositiva completo
Sandra isabel guerrero perez rss diapositiva completoSandra isabel guerrero perez rss diapositiva completo
Sandra isabel guerrero perez rss diapositiva completosaneraisabel75
 
El relieve
El relieveEl relieve
El relieve293233
 
Ecuador
EcuadorEcuador
EcuadorAXEL
 
Lago luciano la guerra fría, un mundo dividido
Lago luciano la guerra fría, un mundo divididoLago luciano la guerra fría, un mundo dividido
Lago luciano la guerra fría, un mundo divididoLuciano_Lago
 

Viewers also liked (19)

Proyecto tecnologico
Proyecto tecnologicoProyecto tecnologico
Proyecto tecnologico
 
Conceptos basicos de redes e internet
Conceptos basicos  de redes e internetConceptos basicos  de redes e internet
Conceptos basicos de redes e internet
 
Criterios de Lorca y Andrea
Criterios de Lorca y AndreaCriterios de Lorca y Andrea
Criterios de Lorca y Andrea
 
CIENCIA, TECNOLOGÍA E INNOVACIÓN EN EL CONTEXTO DE LA REFORMA A LA LEY DE EDU...
CIENCIA, TECNOLOGÍA E INNOVACIÓN EN EL CONTEXTO DE LA REFORMA A LA LEY DE EDU...CIENCIA, TECNOLOGÍA E INNOVACIÓN EN EL CONTEXTO DE LA REFORMA A LA LEY DE EDU...
CIENCIA, TECNOLOGÍA E INNOVACIÓN EN EL CONTEXTO DE LA REFORMA A LA LEY DE EDU...
 
Porque es mala la pornografia
Porque es mala la pornografiaPorque es mala la pornografia
Porque es mala la pornografia
 
Aprendizaje autonomo
Aprendizaje autonomoAprendizaje autonomo
Aprendizaje autonomo
 
1 exposición victorcedrón
1 exposición victorcedrón1 exposición victorcedrón
1 exposición victorcedrón
 
Bombas Berkeley
Bombas BerkeleyBombas Berkeley
Bombas Berkeley
 
Trabajo final
Trabajo finalTrabajo final
Trabajo final
 
Aprendizaje autonomo
Aprendizaje autonomoAprendizaje autonomo
Aprendizaje autonomo
 
Sandra isabel guerrero perez rss diapositiva completo
Sandra isabel guerrero perez rss diapositiva completoSandra isabel guerrero perez rss diapositiva completo
Sandra isabel guerrero perez rss diapositiva completo
 
Job 09
Job 09Job 09
Job 09
 
El relieve
El relieveEl relieve
El relieve
 
Ecuador
EcuadorEcuador
Ecuador
 
Lago luciano la guerra fría, un mundo dividido
Lago luciano la guerra fría, un mundo divididoLago luciano la guerra fría, un mundo dividido
Lago luciano la guerra fría, un mundo dividido
 
Collage personal.
Collage personal.Collage personal.
Collage personal.
 
Jorgue
JorgueJorgue
Jorgue
 
Presentacion de la campaña evangelizadora dia 23
Presentacion de la campaña evangelizadora dia 23Presentacion de la campaña evangelizadora dia 23
Presentacion de la campaña evangelizadora dia 23
 
El camino de la basura
El camino de la basuraEl camino de la basura
El camino de la basura
 

Similar to Junior Internet 2015 - PHP moderne a správne

Tomáš Srnka - História, súčastnosť a budúcnosť spracovania PHP... vieme PHP...
Tomáš Srnka - História, súčastnosť a budúcnosť spracovania PHP... vieme PHP...Tomáš Srnka - História, súčastnosť a budúcnosť spracovania PHP... vieme PHP...
Tomáš Srnka - História, súčastnosť a budúcnosť spracovania PHP... vieme PHP...Develcz
 
Návrh a realizácia web stránky skriptovacím jazykom PHP vrátane administračné...
Návrh a realizácia web stránky skriptovacím jazykom PHP vrátane administračné...Návrh a realizácia web stránky skriptovacím jazykom PHP vrátane administračné...
Návrh a realizácia web stránky skriptovacím jazykom PHP vrátane administračné...Catana0605
 
Drupal a OOP [DrupalCamp SK 2013]
Drupal a OOP [DrupalCamp SK 2013]Drupal a OOP [DrupalCamp SK 2013]
Drupal a OOP [DrupalCamp SK 2013]David Lukac
 
Drupal a OOP [DrupalCamp SK 2013]
Drupal a OOP [DrupalCamp SK 2013]Drupal a OOP [DrupalCamp SK 2013]
Drupal a OOP [DrupalCamp SK 2013]David Lukac
 
Codecon.sk - Ako škálovať PHP stránky? Od malej stránky až po datacentrum
Codecon.sk - Ako škálovať PHP stránky? Od malej stránky až po datacentrumCodecon.sk - Ako škálovať PHP stránky? Od malej stránky až po datacentrum
Codecon.sk - Ako škálovať PHP stránky? Od malej stránky až po datacentrumTomas Srnka
 
Zváračský kurz na BlazeDS a Google App Engine
Zváračský kurz na BlazeDS a Google App EngineZváračský kurz na BlazeDS a Google App Engine
Zváračský kurz na BlazeDS a Google App EngineJuraj Michálek
 
Frontend Masters Košice - Ako postaviť frontend nad kvalitným API
Frontend Masters Košice - Ako postaviť frontend nad kvalitným APIFrontend Masters Košice - Ako postaviť frontend nad kvalitným API
Frontend Masters Košice - Ako postaviť frontend nad kvalitným APIbart-sk
 
Linux: Presmerovanie I/O
Linux:  Presmerovanie I/OLinux:  Presmerovanie I/O
Linux: Presmerovanie I/OMichal Sedlak
 
Tipy a triky na používanie funkcionálnych vlastností Pythonu
Tipy a triky na používanie funkcionálnych vlastností PythonuTipy a triky na používanie funkcionálnych vlastností Pythonu
Tipy a triky na používanie funkcionálnych vlastností Pythonusevcech
 
Ako si vybrať programovací jazyk a framework?
Ako si vybrať programovací jazyk a framework?Ako si vybrať programovací jazyk a framework?
Ako si vybrať programovací jazyk a framework?Jano Suchal
 
BarCamp - Zváračský kurz na Web
BarCamp - Zváračský kurz na WebBarCamp - Zváračský kurz na Web
BarCamp - Zváračský kurz na WebJuraj Michálek
 
Prezentácia: Ruby on RAils
Prezentácia: Ruby on RAilsPrezentácia: Ruby on RAils
Prezentácia: Ruby on RAilsguest3604661
 
Marek Lichtner - Používať alebo nepoužívať ORM vo webových aplikáciách?
Marek Lichtner - Používať alebo nepoužívať ORM vo webových aplikáciách?Marek Lichtner - Používať alebo nepoužívať ORM vo webových aplikáciách?
Marek Lichtner - Používať alebo nepoužívať ORM vo webových aplikáciách?webelement
 
Aký programovací jazyk a framework si vybrať a prečo?
Aký programovací jazyk a framework si vybrať a prečo?Aký programovací jazyk a framework si vybrať a prečo?
Aký programovací jazyk a framework si vybrať a prečo?Jano Suchal
 
Require.JS & Backbone.JS
Require.JS & Backbone.JSRequire.JS & Backbone.JS
Require.JS & Backbone.JSsrigi
 
Mne to na notebooku funguje
Mne to na notebooku fungujeMne to na notebooku funguje
Mne to na notebooku fungujeJuraj Bednar
 

Similar to Junior Internet 2015 - PHP moderne a správne (20)

Tomáš Srnka - História, súčastnosť a budúcnosť spracovania PHP... vieme PHP...
Tomáš Srnka - História, súčastnosť a budúcnosť spracovania PHP... vieme PHP...Tomáš Srnka - História, súčastnosť a budúcnosť spracovania PHP... vieme PHP...
Tomáš Srnka - História, súčastnosť a budúcnosť spracovania PHP... vieme PHP...
 
Návrh a realizácia web stránky skriptovacím jazykom PHP vrátane administračné...
Návrh a realizácia web stránky skriptovacím jazykom PHP vrátane administračné...Návrh a realizácia web stránky skriptovacím jazykom PHP vrátane administračné...
Návrh a realizácia web stránky skriptovacím jazykom PHP vrátane administračné...
 
Drupal a OOP [DrupalCamp SK 2013]
Drupal a OOP [DrupalCamp SK 2013]Drupal a OOP [DrupalCamp SK 2013]
Drupal a OOP [DrupalCamp SK 2013]
 
Drupal a OOP [DrupalCamp SK 2013]
Drupal a OOP [DrupalCamp SK 2013]Drupal a OOP [DrupalCamp SK 2013]
Drupal a OOP [DrupalCamp SK 2013]
 
Codecon.sk - Ako škálovať PHP stránky? Od malej stránky až po datacentrum
Codecon.sk - Ako škálovať PHP stránky? Od malej stránky až po datacentrumCodecon.sk - Ako škálovať PHP stránky? Od malej stránky až po datacentrum
Codecon.sk - Ako škálovať PHP stránky? Od malej stránky až po datacentrum
 
Zváračský kurz na BlazeDS a Google App Engine
Zváračský kurz na BlazeDS a Google App EngineZváračský kurz na BlazeDS a Google App Engine
Zváračský kurz na BlazeDS a Google App Engine
 
Frontend Masters Košice - Ako postaviť frontend nad kvalitným API
Frontend Masters Košice - Ako postaviť frontend nad kvalitným APIFrontend Masters Košice - Ako postaviť frontend nad kvalitným API
Frontend Masters Košice - Ako postaviť frontend nad kvalitným API
 
Linux: Presmerovanie I/O
Linux:  Presmerovanie I/OLinux:  Presmerovanie I/O
Linux: Presmerovanie I/O
 
Tipy a triky na používanie funkcionálnych vlastností Pythonu
Tipy a triky na používanie funkcionálnych vlastností PythonuTipy a triky na používanie funkcionálnych vlastností Pythonu
Tipy a triky na používanie funkcionálnych vlastností Pythonu
 
Php sec
Php secPhp sec
Php sec
 
Ako si vybrať programovací jazyk a framework?
Ako si vybrať programovací jazyk a framework?Ako si vybrať programovací jazyk a framework?
Ako si vybrať programovací jazyk a framework?
 
BarCamp - Zváračský kurz na Web
BarCamp - Zváračský kurz na WebBarCamp - Zváračský kurz na Web
BarCamp - Zváračský kurz na Web
 
Prezentácia: Ruby on RAils
Prezentácia: Ruby on RAilsPrezentácia: Ruby on RAils
Prezentácia: Ruby on RAils
 
Marek Lichtner - Používať alebo nepoužívať ORM vo webových aplikáciách?
Marek Lichtner - Používať alebo nepoužívať ORM vo webových aplikáciách?Marek Lichtner - Používať alebo nepoužívať ORM vo webových aplikáciách?
Marek Lichtner - Používať alebo nepoužívať ORM vo webových aplikáciách?
 
Tastypie
TastypieTastypie
Tastypie
 
Aký programovací jazyk a framework si vybrať a prečo?
Aký programovací jazyk a framework si vybrať a prečo?Aký programovací jazyk a framework si vybrať a prečo?
Aký programovací jazyk a framework si vybrať a prečo?
 
Require.JS & Backbone.JS
Require.JS & Backbone.JSRequire.JS & Backbone.JS
Require.JS & Backbone.JS
 
Apex day 1.0 vicejazycne aplikace lokalizace_kamil schvarcz
Apex day 1.0 vicejazycne aplikace lokalizace_kamil schvarczApex day 1.0 vicejazycne aplikace lokalizace_kamil schvarcz
Apex day 1.0 vicejazycne aplikace lokalizace_kamil schvarcz
 
Mne to na notebooku funguje
Mne to na notebooku fungujeMne to na notebooku funguje
Mne to na notebooku funguje
 
Ro r
Ro rRo r
Ro r
 

Junior Internet 2015 - PHP moderne a správne