SlideShare una empresa de Scribd logo
1 de 31
Descargar para leer sin conexión
Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass
Desde el CGI al OOP
Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass
Indice
- Sobre el que habla
- PHP en el tiempo
- Del CGI al OOP
- Unos pequeños trucos
- Enlaces y preguntas
- Cervecitas networking
Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass
Ahhmm!!!
Hoy competimos contra #comunicat
Developers! Consigamos ese TT!
#adwe_mad
@peppersanblai te queremos!
Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass
Sobre el que habla
AKA:
• Ángel Luis Quesada Nieto
• gelito
• alquesada
Mi proyecto actual:
•
Kubide
• Advanced web Development
• Developer Angels
Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass
PHP en el tiempo
En 1994 Rasmus Lerdorf decidió
poner en su web la fecha actual*.
Aparece PHP.
Personal Home Page Tools
<htm><body>
Today is:
<?php echo date(); ?>
</body></html>
Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass
PHP en el tiempo
No es hasta PHP 3.0 que se deciden tomar las cosas en serio.
• Aparece en 1998
• Se reescribe por completo el parser (y después todo el código).
• Se crea Zend Technologies.
• Empieza a aposentarse como alternativa web.
• Se le cambia al nombre actual:
• Php Hipertext Pre-procesor
Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass
PHP en el tiempo
En el 2000 llegó PHP 4.0
• Aparece la versión reescrita completamente
• Incorpora ya el motor Zend.
• Sin ser los dueños, Zend Technologies, se destaca
• Aparece The PHP Group.
• Se adentra en la OOP
• Se hace completamente con el mercado web
• Posiblemente por su flexibilidad y facilidad de uso
• Esto nos lleva al “caos del PHP”
• Posiblemente por la falta de competencia real
• ASP
• JAVA
• Ruby (RoR surge en 2004)
• Perl
Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass
PHP en el tiempo
En el 2004 llegó la gran chapuza PHP 5.0
• Deciden cambiar de mentalidad y apostar en serio por OOP
• PseudoPolimorfiso
• PseudoThreads
• Autoload y Magic methods
• Manejo de excepciones
• La aceptación en la web es escasa o nula.
• Crea rechazo entre developers y Sysadmins
• El nivel de Bugs es brutal
• En 2006 era difícil encontrar un hosting con PHP 5.0
• Y la competencia aparece fuerte.
• Aparecen los frameworks para otros lenguajes
• En PHP el cacao es tan grande que tardan más en aparecer
Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass
PHP en el tiempo
A finales del 2009 llega el presente PHP 5.3
• Mas de 550 bugs solventados desde 5.0 hasta 5.3
• Sobretodo en el ambito de la seguridad y la estabilidad
• Los hostings no tardan ni unos meses en incorporar PHP 5.3
• Empiezan a incorporar buenas funcionalidades OOP
• Namespacing
• Clase DateTime (por fin!)
• Phar (JAR)
• ...
• Y … ejem... goto
• Todavía queda mucho por delante, pero ya va siendo OOP
Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass
PHP en el tiempo
Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass
PHP en el tiempo
El futuro PHP 6 ¿?
• PHP 5.3 + UNICODE
• Limpieza y reestructuración.
• Enfoque eminentemente OOP
Lo veremos? Lo dudo … PHP 7 ¿?
Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass
Os acordáis?!!
Hoy competimos contra #comunicat
Developers! Consigamos ese TT
#adwe_mad
@gersonbeltran te queremos!
Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass
PHP del CGI al OOP
Pasamos del date()
<htm><body>
Today is:
<?php echo date(); ?>
</body></html>
Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass
PHP del CGI al OOP
… al DateTime
<?php
try {
$date = new DateTime('2000-01-01');
} catch (Exception $e) {
echo $e->getMessage();
exit(1);
}
print $date->format('Y-m-d');
?>
Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass
PHP del CGI al OOP
Lo primero es:
•
Pensar OOP, “pensar en Java”
• No hay funciones sueltas.
• No hay defines sueltos
• Las clases se encapsulan (y se usan los namespaces)
• Gestión de errores try {} catch(e) {}
• Y por su puesto, no olvidar los patrones de diseño!
• I'm a GoF fanboy
• Patron Façade
• Un único archivo de entrada (index.php)
• Patron MVC
• Separamos los Modelos (el vehículo – el usuario)
• De la Vista (la carretera – el html)
• Y lo gestionamos con el Controlador (las reglas de tráfico)
Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass
PHP del CGI al OOP
Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass
PHP del CGI al OOP
index.php
<?php
require_once ZonaSegura. "Bootstrap.php";
Bootstrap::main();
$con = new Controller();
$con->main();
print $con->toHTML();
?>
Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass
PHP del CGI al OOP
index.php
•
Zona Segura
•
No accesible desde el DocumentRoot
•
Las clases nunca deberían ser accesibles.
• Un solo require
• Cargamos el Bootstrap (antiguamente la conf.php)
• Cargamos el autoload
• Cargamos y ejecutamos el main del controller principal
• Recordar, “piensa en Java”
• Un solo print*
• Aquí Java nos gana.
•
No es obligatorio, para optimizar se pueden usar varios
Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass
PHP del CGI al OOP
Bootstrap (la correa de arranque)
class PWT_Bootstrap {
/** @staticvar bool Static private var charge of singleton pattern
* @access private
* @var bool
*/
protected static $singleton = false;
public static final function main()
{
if (self::$singleton)
return TRUE;
try {
self::$singleton = true
self::setupProjectConf(); self::setupAutoload();
self::setupEnvironment(); self::setupDatabase();
self::setupLanguageEnvironment(); self::setupView();
} catch (Exception $e) {
PWT_Notice::catchException($e);
}
}
}
Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass
PHP del CGI al OOP
__autoload (bye, bye requires)
private final static function setupAutoload()
{
$includePath = ROOT . DIRECTORY_SEPARATOR . PATH_SEPARATOR;
$includePath .= get_include_path();
set_include_path($includePath); // Add the directories in path
spl_autoload_register("self::_autoload", true); // Registry the _autoload()
}
private static function _autoload($classname)
{
$zend = preg_replace ("/_/",DIRECTORY_SEPARATOR,$classname).".php";
if ($fh = @fopen($zend, "r", 1)){
fclose($fh); require_once($zend); return;
}
try {
throw new PWT_Exception(104, $classname);
} catch (PWT_Exception $e) {
PWT_Notice::catchException($e);
}
}
Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass
PHP del CGI al OOP
Autoload
• Nos olvidamos de requires e includes
• Las funciones autoload no devuelven ningún valor
• Se pueden añadir tantas funciones como sean necesarias
• Solo podemos sobreescribir una vez la función __autoload
•
Deben insertarse con spl_autoload_register
•
Existen varias funciones spl_autololad* de ayuda
•
spl_ autoload_ call
•
spl_ autoload_ extensions
•
spl_ autoload_ functions
•
spl_ autoload_ register
•
spl_ autoload_ unregister
Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass
PHP del CGI al OOP
Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass
PHP del CGI al OOP
Limpiando datos - satinize
// PHP 5.2
//Validar URL
ereg('^[a-zA-Z]+://([.]?[a-zA-Z0-9_/-])*([/?|&|=|;]?[a-zA-Z0-9_/-/%])*$',
$url,$res))
// Satinizar URL
filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED));
//Validar Mail
ereg('(^[0-9a-zA-Z]+(.[0-9a-zA-Z]+)*)@([0-9a-zA-Z]+(.[0-9a-zA-Z]+)*.[0-9a-zA-Z]{2,3})$',
$mail,$res)
//Satinizar Mail
filter_var($mail, FILTER_VALIDATE_EMAIL)
Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass
PHP del CGI al OOP
Pseudo polimorfismo
class poli
{
public function suma()
{
$ret = 0;
switch(func_num_args())
{
case 1 :
$ret = func_get_arg(1);
break;
case 2 :
$ret = $this->suma2(func_get_arg(1),func_get_arg(2));
break;
default :
foreach(func_get_arg() as $a) $ret+= is_numeric($a)?$a:0;
$ret = func_get_arg(1);
Break;
}
return $ret;
}
}
Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass
PHP del CGI al OOP
PseudoPolimorfismo
•
Un método recoge las variables
•
Con func_num_args() sabe cuantas variables ha recibido
• En función del numero de args decide a que método reenviar
• Puedes acceder a todas las variables con func_get_args()
• O solo a una con func_get_arg($i)
Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass
PHP del CGI al OOP
Sesiones en Bases de datos
• Vale, esto no es de PHP5.3, pero seguro que no lo usáis.
• Existe la función session_set_save_handler
• Esta función recibe 6 argumentos
• $open → función similar al constructor
• $close → función al destructor
• $read → que sucede cuando se van a leer datos de sesión
•
$write → que sucede cuando se van a escribir datos
•
$destroy → que sucede con session_destroy()
•
$gc → recolector de basura
•Normalmente tiene probabilidad 1/100
–session.gc_probability
–session.gc_divisor
Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass
PHP del CGI al OOP
Pseudo polimorfismo
static function main() {
$class = get_called_class();
session_module_name('user');
session_set_save_handler(
array($class, 'open'),
array($class, 'close'),
array($class, 'read'),
array($class, 'write'),
array($class, 'destroy'),
array($class, 'gc')
);
}
static function open($save_path, $session_name, $persist = null)
static function close()
static function read($key)
static function write($key, $oval)
static function destroy($key)
static function gc($maxlifetime)
Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass
PHP del CGI al OOP
Recordar que no hay mejor manual que http://php.net
Otras cositas que deberíais conocer
• Magic Methods
• __construct / __destruct / __call / __callStatic
• __get / __set / __isset / __unset /
• __sleep / __wakeup
•
__toString
•
SPL classes
•
DirectoryIterator
•
Phar (JAR para PHP)
•
Tricondicional simplificado
•
$a = $b ? $b : $c; => $a = $b? : $c;
•
Y otra cosa más
Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass
PHP del CGI al OOP
Y no os olvidéis de los try catch!
try {
if (algo falla)
throw new PWT_Exception(104, $classname);
} catch (PWT_Exception $e) {
PWT_Notice::catchException($e);
}
}
Ángel Luis Quesada Nieto
CEO at Kubide.es
PHP 5.3 masterclass
Ya se acaba!!!
Developers! Lo conseguimos?
#adwe_mad
Título de la Conferencia
MUCHAS GRACIAS!!!!
Ángel Luis Quesada
CEO at Kubide
Twitter: @gelito
Twitter: @kubide_es
Personal Site: www.alquesada.com
Company: www.kubide.es
Mail: hola@kubide.es

Más contenido relacionado

La actualidad más candente

Frameworks para Php Adwa
Frameworks para Php AdwaFrameworks para Php Adwa
Frameworks para Php AdwaAndres Karp
 
Introducción a recaptcha 3.0
Introducción a recaptcha 3.0Introducción a recaptcha 3.0
Introducción a recaptcha 3.0Jesús Ayús
 
Curso Avanzado PHP para EHU/UPV
Curso Avanzado PHP para EHU/UPVCurso Avanzado PHP para EHU/UPV
Curso Avanzado PHP para EHU/UPVIrontec
 
Desarrollo Web Ágil con Symfony, Bootstrap y Angular
Desarrollo Web Ágil con Symfony, Bootstrap y AngularDesarrollo Web Ágil con Symfony, Bootstrap y Angular
Desarrollo Web Ágil con Symfony, Bootstrap y AngularFreelancer
 
Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Raul Fraile
 
PHP Avanzado: Patrones de diseño
PHP Avanzado: Patrones de diseñoPHP Avanzado: Patrones de diseño
PHP Avanzado: Patrones de diseñoRightster
 
Jruby On Rails. Ruby on Rails en la JVM
Jruby On Rails. Ruby on Rails en la JVMJruby On Rails. Ruby on Rails en la JVM
Jruby On Rails. Ruby on Rails en la JVMjavier ramirez
 
Javier.Ramirez.Rails.Hot.Or.Not.Conferenciarails2008
Javier.Ramirez.Rails.Hot.Or.Not.Conferenciarails2008Javier.Ramirez.Rails.Hot.Or.Not.Conferenciarails2008
Javier.Ramirez.Rails.Hot.Or.Not.Conferenciarails2008javier ramirez
 
PHP Avanzado: Seguridad Web
PHP Avanzado: Seguridad WebPHP Avanzado: Seguridad Web
PHP Avanzado: Seguridad WebRightster
 
Symfony2: Optimización y rendimiento
Symfony2: Optimización y rendimientoSymfony2: Optimización y rendimiento
Symfony2: Optimización y rendimientoRaul Fraile
 
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
Magallanes, Herramienta de despliegue PHP sencilla y poderosa�Magallanes, Herramienta de despliegue PHP sencilla y poderosa�
Magallanes, Herramienta de despliegue PHP sencilla y poderosaFco Javier Núñez Berrocoso
 
PHP Avanzado: Características avanzadas de PHP
PHP Avanzado: Características avanzadas de PHPPHP Avanzado: Características avanzadas de PHP
PHP Avanzado: Características avanzadas de PHPRightster
 
PHPAJAX
PHPAJAXPHPAJAX
PHPAJAXrodasc
 
Node js Alt.net Hispano
Node js Alt.net HispanoNode js Alt.net Hispano
Node js Alt.net Hispanohdgarcia
 
Las buenas prácticas oficiales para aplicaciones Symfony
Las buenas prácticas oficiales para aplicaciones SymfonyLas buenas prácticas oficiales para aplicaciones Symfony
Las buenas prácticas oficiales para aplicaciones Symfonysymfony_bcn
 
Adentrándonos al Framework Symfony
Adentrándonos al  Framework SymfonyAdentrándonos al  Framework Symfony
Adentrándonos al Framework SymfonyRodrigo Miranda
 

La actualidad más candente (20)

Frameworks para Php Adwa
Frameworks para Php AdwaFrameworks para Php Adwa
Frameworks para Php Adwa
 
Introducción a recaptcha 3.0
Introducción a recaptcha 3.0Introducción a recaptcha 3.0
Introducción a recaptcha 3.0
 
PHP en el 2015
PHP en el 2015PHP en el 2015
PHP en el 2015
 
Curso Avanzado PHP para EHU/UPV
Curso Avanzado PHP para EHU/UPVCurso Avanzado PHP para EHU/UPV
Curso Avanzado PHP para EHU/UPV
 
Php basico
Php basicoPhp basico
Php basico
 
Desarrollo Web Ágil con Symfony, Bootstrap y Angular
Desarrollo Web Ágil con Symfony, Bootstrap y AngularDesarrollo Web Ágil con Symfony, Bootstrap y Angular
Desarrollo Web Ágil con Symfony, Bootstrap y Angular
 
Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Symfony2: Framework para PHP5
Symfony2: Framework para PHP5
 
Introducción a groovy & grails
Introducción a groovy & grailsIntroducción a groovy & grails
Introducción a groovy & grails
 
PHP Avanzado: Patrones de diseño
PHP Avanzado: Patrones de diseñoPHP Avanzado: Patrones de diseño
PHP Avanzado: Patrones de diseño
 
Jruby On Rails. Ruby on Rails en la JVM
Jruby On Rails. Ruby on Rails en la JVMJruby On Rails. Ruby on Rails en la JVM
Jruby On Rails. Ruby on Rails en la JVM
 
Javier.Ramirez.Rails.Hot.Or.Not.Conferenciarails2008
Javier.Ramirez.Rails.Hot.Or.Not.Conferenciarails2008Javier.Ramirez.Rails.Hot.Or.Not.Conferenciarails2008
Javier.Ramirez.Rails.Hot.Or.Not.Conferenciarails2008
 
PHP Avanzado: Seguridad Web
PHP Avanzado: Seguridad WebPHP Avanzado: Seguridad Web
PHP Avanzado: Seguridad Web
 
Symfony2: Optimización y rendimiento
Symfony2: Optimización y rendimientoSymfony2: Optimización y rendimiento
Symfony2: Optimización y rendimiento
 
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
Magallanes, Herramienta de despliegue PHP sencilla y poderosa�Magallanes, Herramienta de despliegue PHP sencilla y poderosa�
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
 
Introducción a PHP
Introducción a PHPIntroducción a PHP
Introducción a PHP
 
PHP Avanzado: Características avanzadas de PHP
PHP Avanzado: Características avanzadas de PHPPHP Avanzado: Características avanzadas de PHP
PHP Avanzado: Características avanzadas de PHP
 
PHPAJAX
PHPAJAXPHPAJAX
PHPAJAX
 
Node js Alt.net Hispano
Node js Alt.net HispanoNode js Alt.net Hispano
Node js Alt.net Hispano
 
Las buenas prácticas oficiales para aplicaciones Symfony
Las buenas prácticas oficiales para aplicaciones SymfonyLas buenas prácticas oficiales para aplicaciones Symfony
Las buenas prácticas oficiales para aplicaciones Symfony
 
Adentrándonos al Framework Symfony
Adentrándonos al  Framework SymfonyAdentrándonos al  Framework Symfony
Adentrándonos al Framework Symfony
 

Destacado

Patrice Slupowski ( Orange ) - New Media as a challenge on 4+ screens
Patrice Slupowski ( Orange ) - New Media as a challenge on 4+ screensPatrice Slupowski ( Orange ) - New Media as a challenge on 4+ screens
Patrice Slupowski ( Orange ) - New Media as a challenge on 4+ screensronewmedia_academy
 
Technology Challenges in Building New Media Applications
Technology Challenges in Building New Media ApplicationsTechnology Challenges in Building New Media Applications
Technology Challenges in Building New Media ApplicationsTalentica Software
 
Lean Software Startup: Customer Development (lecture)
Lean Software Startup: Customer Development (lecture)Lean Software Startup: Customer Development (lecture)
Lean Software Startup: Customer Development (lecture)Joni Salminen
 
Microservices: Redundancy = Maintainability! (Eberhard Wolff Technology Stream)
Microservices: Redundancy = Maintainability! (Eberhard Wolff Technology Stream)Microservices: Redundancy = Maintainability! (Eberhard Wolff Technology Stream)
Microservices: Redundancy = Maintainability! (Eberhard Wolff Technology Stream)IT Arena
 
Software development in a startup
Software development in a startupSoftware development in a startup
Software development in a startupKubide
 
Emprende con éxito en Internet de José Villalobos
Emprende con éxito en Internet de José Villalobos Emprende con éxito en Internet de José Villalobos
Emprende con éxito en Internet de José Villalobos Kubide
 
Connected World in android - Local data sharing and service discovery
Connected World in android - Local data sharing and service discoveryConnected World in android - Local data sharing and service discovery
Connected World in android - Local data sharing and service discoveryTalentica Software
 
SAP Presentation
SAP PresentationSAP Presentation
SAP PresentationSANGONeT
 
Startup safary athens 2014 oleg lola
Startup safary athens 2014 oleg lolaStartup safary athens 2014 oleg lola
Startup safary athens 2014 oleg lolaOleg Lola
 
The Minimum Lovable Product - UX Brighton January 2015
The Minimum Lovable Product - UX Brighton January 2015The Minimum Lovable Product - UX Brighton January 2015
The Minimum Lovable Product - UX Brighton January 2015Carlos Saba
 
SiliconAlley Startup Services for Investors
SiliconAlley Startup Services for InvestorsSiliconAlley Startup Services for Investors
SiliconAlley Startup Services for InvestorsMiles Rose
 
Using OKRs in Startups with Nabeel Hyatt
Using OKRs in Startups with Nabeel HyattUsing OKRs in Startups with Nabeel Hyatt
Using OKRs in Startups with Nabeel HyattSpark Capital
 
Why is my MVP a POC (ProductCamp Vancouver 2015)
Why is my MVP a POC (ProductCamp Vancouver 2015)Why is my MVP a POC (ProductCamp Vancouver 2015)
Why is my MVP a POC (ProductCamp Vancouver 2015)Jan Carter
 
The Evolution of Offshoring
The Evolution of OffshoringThe Evolution of Offshoring
The Evolution of Offshoringswiss IT bridge
 

Destacado (20)

Patrice Slupowski ( Orange ) - New Media as a challenge on 4+ screens
Patrice Slupowski ( Orange ) - New Media as a challenge on 4+ screensPatrice Slupowski ( Orange ) - New Media as a challenge on 4+ screens
Patrice Slupowski ( Orange ) - New Media as a challenge on 4+ screens
 
Technology Challenges in Building New Media Applications
Technology Challenges in Building New Media ApplicationsTechnology Challenges in Building New Media Applications
Technology Challenges in Building New Media Applications
 
Lean Software Startup: Customer Development (lecture)
Lean Software Startup: Customer Development (lecture)Lean Software Startup: Customer Development (lecture)
Lean Software Startup: Customer Development (lecture)
 
Offering For Tech Companies
Offering For Tech CompaniesOffering For Tech Companies
Offering For Tech Companies
 
Microservices: Redundancy = Maintainability! (Eberhard Wolff Technology Stream)
Microservices: Redundancy = Maintainability! (Eberhard Wolff Technology Stream)Microservices: Redundancy = Maintainability! (Eberhard Wolff Technology Stream)
Microservices: Redundancy = Maintainability! (Eberhard Wolff Technology Stream)
 
Software development in a startup
Software development in a startupSoftware development in a startup
Software development in a startup
 
Emprende con éxito en Internet de José Villalobos
Emprende con éxito en Internet de José Villalobos Emprende con éxito en Internet de José Villalobos
Emprende con éxito en Internet de José Villalobos
 
Connected World in android - Local data sharing and service discovery
Connected World in android - Local data sharing and service discoveryConnected World in android - Local data sharing and service discovery
Connected World in android - Local data sharing and service discovery
 
Legacy modernization
Legacy modernizationLegacy modernization
Legacy modernization
 
Lean Startup for Non-startups
Lean Startup for Non-startupsLean Startup for Non-startups
Lean Startup for Non-startups
 
SAP Presentation
SAP PresentationSAP Presentation
SAP Presentation
 
Big Data – Are You Ready?
Big Data – Are You Ready?Big Data – Are You Ready?
Big Data – Are You Ready?
 
Startup safary athens 2014 oleg lola
Startup safary athens 2014 oleg lolaStartup safary athens 2014 oleg lola
Startup safary athens 2014 oleg lola
 
The Minimum Lovable Product - UX Brighton January 2015
The Minimum Lovable Product - UX Brighton January 2015The Minimum Lovable Product - UX Brighton January 2015
The Minimum Lovable Product - UX Brighton January 2015
 
SiliconAlley Startup Services for Investors
SiliconAlley Startup Services for InvestorsSiliconAlley Startup Services for Investors
SiliconAlley Startup Services for Investors
 
Using OKRs in Startups with Nabeel Hyatt
Using OKRs in Startups with Nabeel HyattUsing OKRs in Startups with Nabeel Hyatt
Using OKRs in Startups with Nabeel Hyatt
 
Why is my MVP a POC (ProductCamp Vancouver 2015)
Why is my MVP a POC (ProductCamp Vancouver 2015)Why is my MVP a POC (ProductCamp Vancouver 2015)
Why is my MVP a POC (ProductCamp Vancouver 2015)
 
The Evolution of Offshoring
The Evolution of OffshoringThe Evolution of Offshoring
The Evolution of Offshoring
 
Contagem-Edição Contagem 33/2
Contagem-Edição Contagem  33/2Contagem-Edição Contagem  33/2
Contagem-Edição Contagem 33/2
 
Traducciones agora fs
Traducciones agora fsTraducciones agora fs
Traducciones agora fs
 

Similar a Masterclass ADWE Madrid

PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf
PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdfPHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf
PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdfRaaulroodriguez
 
Introducción a PHP 5.4
Introducción a PHP 5.4Introducción a PHP 5.4
Introducción a PHP 5.4El Taller Web
 
Primeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigoPrimeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigoPHP Vigo
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephpbetabeers
 
Taller introduccion symfony2
Taller introduccion symfony2Taller introduccion symfony2
Taller introduccion symfony2Mario IC
 
PHP Con symfony
PHP Con symfonyPHP Con symfony
PHP Con symfonycsalazart
 
Desarrollo_web_con_PHP_y_MySQL.pdf
Desarrollo_web_con_PHP_y_MySQL.pdfDesarrollo_web_con_PHP_y_MySQL.pdf
Desarrollo_web_con_PHP_y_MySQL.pdfMauricioGArmoa
 
Masterclass PHP 5.3
Masterclass PHP 5.3Masterclass PHP 5.3
Masterclass PHP 5.3ADWE Team
 
Masterclass adwe madrid
Masterclass adwe madridMasterclass adwe madrid
Masterclass adwe madridtucamon
 
Presentación de zan php
Presentación de zan phpPresentación de zan php
Presentación de zan phpCarlos Zantana
 
Materiales del curso de Symfony2
Materiales del curso de Symfony2Materiales del curso de Symfony2
Materiales del curso de Symfony2Raul Fraile
 
Chamilo para-desarrolladores-1.9
Chamilo para-desarrolladores-1.9Chamilo para-desarrolladores-1.9
Chamilo para-desarrolladores-1.9Chamilo Association
 
Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++
Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++
Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++Daniel González Cerviño
 
Joomladay 2008 Madrid - desarrollo de extensiones
Joomladay 2008 Madrid - desarrollo de extensionesJoomladay 2008 Madrid - desarrollo de extensiones
Joomladay 2008 Madrid - desarrollo de extensionesdeivit86
 

Similar a Masterclass ADWE Madrid (20)

PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf
PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdfPHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf
PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf
 
Introducción a PHP 5.4
Introducción a PHP 5.4Introducción a PHP 5.4
Introducción a PHP 5.4
 
Code Igniter
Code IgniterCode Igniter
Code Igniter
 
Primeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigoPrimeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigo
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephp
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephp
 
33 php
33 php33 php
33 php
 
php y mysql
php y mysqlphp y mysql
php y mysql
 
Taller introduccion symfony2
Taller introduccion symfony2Taller introduccion symfony2
Taller introduccion symfony2
 
Introduccion al PHP.ppt
Introduccion al PHP.pptIntroduccion al PHP.ppt
Introduccion al PHP.ppt
 
PHP Con symfony
PHP Con symfonyPHP Con symfony
PHP Con symfony
 
Desarrollo_web_con_PHP_y_MySQL.pdf
Desarrollo_web_con_PHP_y_MySQL.pdfDesarrollo_web_con_PHP_y_MySQL.pdf
Desarrollo_web_con_PHP_y_MySQL.pdf
 
Masterclass PHP 5.3
Masterclass PHP 5.3Masterclass PHP 5.3
Masterclass PHP 5.3
 
Masterclass adwe madrid
Masterclass adwe madridMasterclass adwe madrid
Masterclass adwe madrid
 
Presentación de zan php
Presentación de zan phpPresentación de zan php
Presentación de zan php
 
Programación de Componentes para Joomla (Gabriel Cuesta)
Programación de Componentes para Joomla (Gabriel Cuesta)Programación de Componentes para Joomla (Gabriel Cuesta)
Programación de Componentes para Joomla (Gabriel Cuesta)
 
Materiales del curso de Symfony2
Materiales del curso de Symfony2Materiales del curso de Symfony2
Materiales del curso de Symfony2
 
Chamilo para-desarrolladores-1.9
Chamilo para-desarrolladores-1.9Chamilo para-desarrolladores-1.9
Chamilo para-desarrolladores-1.9
 
Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++
Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++
Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++
 
Joomladay 2008 Madrid - desarrollo de extensiones
Joomladay 2008 Madrid - desarrollo de extensionesJoomladay 2008 Madrid - desarrollo de extensiones
Joomladay 2008 Madrid - desarrollo de extensiones
 

Más de Kubide

El ecommerce para generación de nativos digitales
El ecommerce para generación de nativos digitalesEl ecommerce para generación de nativos digitales
El ecommerce para generación de nativos digitalesKubide
 
Introducción al track de code: Tendencias 2015
Introducción al track de code: Tendencias 2015Introducción al track de code: Tendencias 2015
Introducción al track de code: Tendencias 2015Kubide
 
¿Cómo pasar de una idea a un producto?
¿Cómo pasar de una idea a un producto?¿Cómo pasar de una idea a un producto?
¿Cómo pasar de una idea a un producto?Kubide
 
Entre el CTO y el Business Angel está el Tech Angel
Entre el CTO y el Business Angel está el Tech AngelEntre el CTO y el Business Angel está el Tech Angel
Entre el CTO y el Business Angel está el Tech AngelKubide
 
Presentación sobre desarrollo de software en una Startup
Presentación sobre desarrollo de software en una StartupPresentación sobre desarrollo de software en una Startup
Presentación sobre desarrollo de software en una StartupKubide
 
Enough with the javas cript already! de Nicholas Zakas
Enough with the javas cript already! de Nicholas ZakasEnough with the javas cript already! de Nicholas Zakas
Enough with the javas cript already! de Nicholas ZakasKubide
 
Cómo montar una start up en poco tiempo sin arruinarte de José Villalobos
Cómo montar una start up en poco tiempo sin arruinarte de José Villalobos Cómo montar una start up en poco tiempo sin arruinarte de José Villalobos
Cómo montar una start up en poco tiempo sin arruinarte de José Villalobos Kubide
 
Tetuan Valley Startup School presentation
Tetuan Valley Startup School presentationTetuan Valley Startup School presentation
Tetuan Valley Startup School presentationKubide
 
Presentación de Ángel Luis Quesada en Tetuan Valley
Presentación de Ángel Luis Quesada en Tetuan Valley  Presentación de Ángel Luis Quesada en Tetuan Valley
Presentación de Ángel Luis Quesada en Tetuan Valley Kubide
 
Estrategias para la gestión de la relación con los clientes: uso del CRM
Estrategias para la gestión de la relación con los clientes: uso del CRM Estrategias para la gestión de la relación con los clientes: uso del CRM
Estrategias para la gestión de la relación con los clientes: uso del CRM Kubide
 
FICOD, tecnología y modelos de negocio
FICOD, tecnología y modelos de negocioFICOD, tecnología y modelos de negocio
FICOD, tecnología y modelos de negocioKubide
 
El ecommerce para la generación de los nativos digitales - eShow
El ecommerce para la generación de los nativos digitales - eShowEl ecommerce para la generación de los nativos digitales - eShow
El ecommerce para la generación de los nativos digitales - eShowKubide
 
Día de Internet
Día de Internet Día de Internet
Día de Internet Kubide
 
Presentación Iniciador Bilbao
Presentación Iniciador BilbaoPresentación Iniciador Bilbao
Presentación Iniciador BilbaoKubide
 

Más de Kubide (14)

El ecommerce para generación de nativos digitales
El ecommerce para generación de nativos digitalesEl ecommerce para generación de nativos digitales
El ecommerce para generación de nativos digitales
 
Introducción al track de code: Tendencias 2015
Introducción al track de code: Tendencias 2015Introducción al track de code: Tendencias 2015
Introducción al track de code: Tendencias 2015
 
¿Cómo pasar de una idea a un producto?
¿Cómo pasar de una idea a un producto?¿Cómo pasar de una idea a un producto?
¿Cómo pasar de una idea a un producto?
 
Entre el CTO y el Business Angel está el Tech Angel
Entre el CTO y el Business Angel está el Tech AngelEntre el CTO y el Business Angel está el Tech Angel
Entre el CTO y el Business Angel está el Tech Angel
 
Presentación sobre desarrollo de software en una Startup
Presentación sobre desarrollo de software en una StartupPresentación sobre desarrollo de software en una Startup
Presentación sobre desarrollo de software en una Startup
 
Enough with the javas cript already! de Nicholas Zakas
Enough with the javas cript already! de Nicholas ZakasEnough with the javas cript already! de Nicholas Zakas
Enough with the javas cript already! de Nicholas Zakas
 
Cómo montar una start up en poco tiempo sin arruinarte de José Villalobos
Cómo montar una start up en poco tiempo sin arruinarte de José Villalobos Cómo montar una start up en poco tiempo sin arruinarte de José Villalobos
Cómo montar una start up en poco tiempo sin arruinarte de José Villalobos
 
Tetuan Valley Startup School presentation
Tetuan Valley Startup School presentationTetuan Valley Startup School presentation
Tetuan Valley Startup School presentation
 
Presentación de Ángel Luis Quesada en Tetuan Valley
Presentación de Ángel Luis Quesada en Tetuan Valley  Presentación de Ángel Luis Quesada en Tetuan Valley
Presentación de Ángel Luis Quesada en Tetuan Valley
 
Estrategias para la gestión de la relación con los clientes: uso del CRM
Estrategias para la gestión de la relación con los clientes: uso del CRM Estrategias para la gestión de la relación con los clientes: uso del CRM
Estrategias para la gestión de la relación con los clientes: uso del CRM
 
FICOD, tecnología y modelos de negocio
FICOD, tecnología y modelos de negocioFICOD, tecnología y modelos de negocio
FICOD, tecnología y modelos de negocio
 
El ecommerce para la generación de los nativos digitales - eShow
El ecommerce para la generación de los nativos digitales - eShowEl ecommerce para la generación de los nativos digitales - eShow
El ecommerce para la generación de los nativos digitales - eShow
 
Día de Internet
Día de Internet Día de Internet
Día de Internet
 
Presentación Iniciador Bilbao
Presentación Iniciador BilbaoPresentación Iniciador Bilbao
Presentación Iniciador Bilbao
 

Masterclass ADWE Madrid

  • 1. Ángel Luis Quesada Nieto CEO at Kubide.es PHP 5.3 masterclass Desde el CGI al OOP
  • 2. Ángel Luis Quesada Nieto CEO at Kubide.es PHP 5.3 masterclass Indice - Sobre el que habla - PHP en el tiempo - Del CGI al OOP - Unos pequeños trucos - Enlaces y preguntas - Cervecitas networking
  • 3. Ángel Luis Quesada Nieto CEO at Kubide.es PHP 5.3 masterclass Ahhmm!!! Hoy competimos contra #comunicat Developers! Consigamos ese TT! #adwe_mad @peppersanblai te queremos!
  • 4. Ángel Luis Quesada Nieto CEO at Kubide.es PHP 5.3 masterclass Sobre el que habla AKA: • Ángel Luis Quesada Nieto • gelito • alquesada Mi proyecto actual: • Kubide • Advanced web Development • Developer Angels
  • 5. Ángel Luis Quesada Nieto CEO at Kubide.es PHP 5.3 masterclass PHP en el tiempo En 1994 Rasmus Lerdorf decidió poner en su web la fecha actual*. Aparece PHP. Personal Home Page Tools <htm><body> Today is: <?php echo date(); ?> </body></html>
  • 6. Ángel Luis Quesada Nieto CEO at Kubide.es PHP 5.3 masterclass PHP en el tiempo No es hasta PHP 3.0 que se deciden tomar las cosas en serio. • Aparece en 1998 • Se reescribe por completo el parser (y después todo el código). • Se crea Zend Technologies. • Empieza a aposentarse como alternativa web. • Se le cambia al nombre actual: • Php Hipertext Pre-procesor
  • 7. Ángel Luis Quesada Nieto CEO at Kubide.es PHP 5.3 masterclass PHP en el tiempo En el 2000 llegó PHP 4.0 • Aparece la versión reescrita completamente • Incorpora ya el motor Zend. • Sin ser los dueños, Zend Technologies, se destaca • Aparece The PHP Group. • Se adentra en la OOP • Se hace completamente con el mercado web • Posiblemente por su flexibilidad y facilidad de uso • Esto nos lleva al “caos del PHP” • Posiblemente por la falta de competencia real • ASP • JAVA • Ruby (RoR surge en 2004) • Perl
  • 8. Ángel Luis Quesada Nieto CEO at Kubide.es PHP 5.3 masterclass PHP en el tiempo En el 2004 llegó la gran chapuza PHP 5.0 • Deciden cambiar de mentalidad y apostar en serio por OOP • PseudoPolimorfiso • PseudoThreads • Autoload y Magic methods • Manejo de excepciones • La aceptación en la web es escasa o nula. • Crea rechazo entre developers y Sysadmins • El nivel de Bugs es brutal • En 2006 era difícil encontrar un hosting con PHP 5.0 • Y la competencia aparece fuerte. • Aparecen los frameworks para otros lenguajes • En PHP el cacao es tan grande que tardan más en aparecer
  • 9. Ángel Luis Quesada Nieto CEO at Kubide.es PHP 5.3 masterclass PHP en el tiempo A finales del 2009 llega el presente PHP 5.3 • Mas de 550 bugs solventados desde 5.0 hasta 5.3 • Sobretodo en el ambito de la seguridad y la estabilidad • Los hostings no tardan ni unos meses en incorporar PHP 5.3 • Empiezan a incorporar buenas funcionalidades OOP • Namespacing • Clase DateTime (por fin!) • Phar (JAR) • ... • Y … ejem... goto • Todavía queda mucho por delante, pero ya va siendo OOP
  • 10. Ángel Luis Quesada Nieto CEO at Kubide.es PHP 5.3 masterclass PHP en el tiempo
  • 11. Ángel Luis Quesada Nieto CEO at Kubide.es PHP 5.3 masterclass PHP en el tiempo El futuro PHP 6 ¿? • PHP 5.3 + UNICODE • Limpieza y reestructuración. • Enfoque eminentemente OOP Lo veremos? Lo dudo … PHP 7 ¿?
  • 12. Ángel Luis Quesada Nieto CEO at Kubide.es PHP 5.3 masterclass Os acordáis?!! Hoy competimos contra #comunicat Developers! Consigamos ese TT #adwe_mad @gersonbeltran te queremos!
  • 13. Ángel Luis Quesada Nieto CEO at Kubide.es PHP 5.3 masterclass PHP del CGI al OOP Pasamos del date() <htm><body> Today is: <?php echo date(); ?> </body></html>
  • 14. Ángel Luis Quesada Nieto CEO at Kubide.es PHP 5.3 masterclass PHP del CGI al OOP … al DateTime <?php try { $date = new DateTime('2000-01-01'); } catch (Exception $e) { echo $e->getMessage(); exit(1); } print $date->format('Y-m-d'); ?>
  • 15. Ángel Luis Quesada Nieto CEO at Kubide.es PHP 5.3 masterclass PHP del CGI al OOP Lo primero es: • Pensar OOP, “pensar en Java” • No hay funciones sueltas. • No hay defines sueltos • Las clases se encapsulan (y se usan los namespaces) • Gestión de errores try {} catch(e) {} • Y por su puesto, no olvidar los patrones de diseño! • I'm a GoF fanboy • Patron Façade • Un único archivo de entrada (index.php) • Patron MVC • Separamos los Modelos (el vehículo – el usuario) • De la Vista (la carretera – el html) • Y lo gestionamos con el Controlador (las reglas de tráfico)
  • 16. Ángel Luis Quesada Nieto CEO at Kubide.es PHP 5.3 masterclass PHP del CGI al OOP
  • 17. Ángel Luis Quesada Nieto CEO at Kubide.es PHP 5.3 masterclass PHP del CGI al OOP index.php <?php require_once ZonaSegura. "Bootstrap.php"; Bootstrap::main(); $con = new Controller(); $con->main(); print $con->toHTML(); ?>
  • 18. Ángel Luis Quesada Nieto CEO at Kubide.es PHP 5.3 masterclass PHP del CGI al OOP index.php • Zona Segura • No accesible desde el DocumentRoot • Las clases nunca deberían ser accesibles. • Un solo require • Cargamos el Bootstrap (antiguamente la conf.php) • Cargamos el autoload • Cargamos y ejecutamos el main del controller principal • Recordar, “piensa en Java” • Un solo print* • Aquí Java nos gana. • No es obligatorio, para optimizar se pueden usar varios
  • 19. Ángel Luis Quesada Nieto CEO at Kubide.es PHP 5.3 masterclass PHP del CGI al OOP Bootstrap (la correa de arranque) class PWT_Bootstrap { /** @staticvar bool Static private var charge of singleton pattern * @access private * @var bool */ protected static $singleton = false; public static final function main() { if (self::$singleton) return TRUE; try { self::$singleton = true self::setupProjectConf(); self::setupAutoload(); self::setupEnvironment(); self::setupDatabase(); self::setupLanguageEnvironment(); self::setupView(); } catch (Exception $e) { PWT_Notice::catchException($e); } } }
  • 20. Ángel Luis Quesada Nieto CEO at Kubide.es PHP 5.3 masterclass PHP del CGI al OOP __autoload (bye, bye requires) private final static function setupAutoload() { $includePath = ROOT . DIRECTORY_SEPARATOR . PATH_SEPARATOR; $includePath .= get_include_path(); set_include_path($includePath); // Add the directories in path spl_autoload_register("self::_autoload", true); // Registry the _autoload() } private static function _autoload($classname) { $zend = preg_replace ("/_/",DIRECTORY_SEPARATOR,$classname).".php"; if ($fh = @fopen($zend, "r", 1)){ fclose($fh); require_once($zend); return; } try { throw new PWT_Exception(104, $classname); } catch (PWT_Exception $e) { PWT_Notice::catchException($e); } }
  • 21. Ángel Luis Quesada Nieto CEO at Kubide.es PHP 5.3 masterclass PHP del CGI al OOP Autoload • Nos olvidamos de requires e includes • Las funciones autoload no devuelven ningún valor • Se pueden añadir tantas funciones como sean necesarias • Solo podemos sobreescribir una vez la función __autoload • Deben insertarse con spl_autoload_register • Existen varias funciones spl_autololad* de ayuda • spl_ autoload_ call • spl_ autoload_ extensions • spl_ autoload_ functions • spl_ autoload_ register • spl_ autoload_ unregister
  • 22. Ángel Luis Quesada Nieto CEO at Kubide.es PHP 5.3 masterclass PHP del CGI al OOP
  • 23. Ángel Luis Quesada Nieto CEO at Kubide.es PHP 5.3 masterclass PHP del CGI al OOP Limpiando datos - satinize // PHP 5.2 //Validar URL ereg('^[a-zA-Z]+://([.]?[a-zA-Z0-9_/-])*([/?|&|=|;]?[a-zA-Z0-9_/-/%])*$', $url,$res)) // Satinizar URL filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED)); //Validar Mail ereg('(^[0-9a-zA-Z]+(.[0-9a-zA-Z]+)*)@([0-9a-zA-Z]+(.[0-9a-zA-Z]+)*.[0-9a-zA-Z]{2,3})$', $mail,$res) //Satinizar Mail filter_var($mail, FILTER_VALIDATE_EMAIL)
  • 24. Ángel Luis Quesada Nieto CEO at Kubide.es PHP 5.3 masterclass PHP del CGI al OOP Pseudo polimorfismo class poli { public function suma() { $ret = 0; switch(func_num_args()) { case 1 : $ret = func_get_arg(1); break; case 2 : $ret = $this->suma2(func_get_arg(1),func_get_arg(2)); break; default : foreach(func_get_arg() as $a) $ret+= is_numeric($a)?$a:0; $ret = func_get_arg(1); Break; } return $ret; } }
  • 25. Ángel Luis Quesada Nieto CEO at Kubide.es PHP 5.3 masterclass PHP del CGI al OOP PseudoPolimorfismo • Un método recoge las variables • Con func_num_args() sabe cuantas variables ha recibido • En función del numero de args decide a que método reenviar • Puedes acceder a todas las variables con func_get_args() • O solo a una con func_get_arg($i)
  • 26. Ángel Luis Quesada Nieto CEO at Kubide.es PHP 5.3 masterclass PHP del CGI al OOP Sesiones en Bases de datos • Vale, esto no es de PHP5.3, pero seguro que no lo usáis. • Existe la función session_set_save_handler • Esta función recibe 6 argumentos • $open → función similar al constructor • $close → función al destructor • $read → que sucede cuando se van a leer datos de sesión • $write → que sucede cuando se van a escribir datos • $destroy → que sucede con session_destroy() • $gc → recolector de basura •Normalmente tiene probabilidad 1/100 –session.gc_probability –session.gc_divisor
  • 27. Ángel Luis Quesada Nieto CEO at Kubide.es PHP 5.3 masterclass PHP del CGI al OOP Pseudo polimorfismo static function main() { $class = get_called_class(); session_module_name('user'); session_set_save_handler( array($class, 'open'), array($class, 'close'), array($class, 'read'), array($class, 'write'), array($class, 'destroy'), array($class, 'gc') ); } static function open($save_path, $session_name, $persist = null) static function close() static function read($key) static function write($key, $oval) static function destroy($key) static function gc($maxlifetime)
  • 28. Ángel Luis Quesada Nieto CEO at Kubide.es PHP 5.3 masterclass PHP del CGI al OOP Recordar que no hay mejor manual que http://php.net Otras cositas que deberíais conocer • Magic Methods • __construct / __destruct / __call / __callStatic • __get / __set / __isset / __unset / • __sleep / __wakeup • __toString • SPL classes • DirectoryIterator • Phar (JAR para PHP) • Tricondicional simplificado • $a = $b ? $b : $c; => $a = $b? : $c; • Y otra cosa más
  • 29. Ángel Luis Quesada Nieto CEO at Kubide.es PHP 5.3 masterclass PHP del CGI al OOP Y no os olvidéis de los try catch! try { if (algo falla) throw new PWT_Exception(104, $classname); } catch (PWT_Exception $e) { PWT_Notice::catchException($e); } }
  • 30. Ángel Luis Quesada Nieto CEO at Kubide.es PHP 5.3 masterclass Ya se acaba!!! Developers! Lo conseguimos? #adwe_mad
  • 31. Título de la Conferencia MUCHAS GRACIAS!!!! Ángel Luis Quesada CEO at Kubide Twitter: @gelito Twitter: @kubide_es Personal Site: www.alquesada.com Company: www.kubide.es Mail: hola@kubide.es