SlideShare a Scribd company logo
1 of 73
PHP7 is coming
in November 2015
Hello
 Julien PAULI
 PHP user for more than 10y now
 Linux / Unix adopter
 PHP Internals developper (C language)
 PHP 5.5 / 5.6 Release Manager
 Working at SensioLabs (Paris)
 Likes writing tech articles/books
 @julienpauli - jpauli@php.net
 Blog at http://jpauli.github.io
PHP versions ?
 PHP 5.3
 Dead
 PHP 5.4
 Dead
 PHP 5.5
 Dead (sec fixes only)
 PHP 5.6
 Current version (Sept 2014), still current
 PHP 7
 Future version (end 2015)
 Major version
 PHP 8
 2020 ?
Timeline
 http://php.net/supported-versions.php
2004 2015
5.0 PHP 7.0
2005 2006 2009
5.1 5.2 5.3 5.4
2012 2013 2014
5.5 5.6
PHP 6 ?
PHP 6 ?
PHP 7
PHP 7
PHP 7 doctrines
 We are in a new major, we may break things
 Only majors are allowed to do so (starting from 5.4)
 We are devs. we also need to refactor (like you)
 Only break when it brings a significant advantage
 Think about our users and their migrations
 Do not fall into a Python2 vs Python3 war
 We'll have PHP 7.1 etc.. and PHP 8.0, probably in 2020.
So ?
 Functions arguments order will not be touched
 Functions() won't be turned into objects->methods()
 "Goto" will not disappear
 And the earth won't just stop its rotation tomorrow
PHP 7 changes
 Internal Engine evolutions (Zend Engine 3.0)
 Perfs ++
 32/64bits platform fully supported
 Integer sizes
 New parser based on an AST
 Some syntaxes change with PHP5
 Tidy up old things that were deprecated before
 Many new features
PHP7 new user features
 Exceptions to replace fatal errors
 New language syntaxes
 ?? operator
 <=> operator
 Group use
 Return type declaration and scalar type hints
 Anonymous classes
 Other new features (Can't list all here)
PHP 7 new features
PHP 7 group "use" decl.
 Group "use" declaration :
use SymfonyComponentConsoleHelperTable;
use SymfonyComponentConsoleInputArrayInput;
use SymfonyComponentConsoleInputInputInterface;
use SymfonyComponentConsoleOutputOutputInterface;
use SymfonyComponentConsoleQuestionChoiceQuestion as Choice;
use SymfonyComponentConsoleQuestionConfirmationQuestion;
use SymfonyComponentConsole{
HelperTable,
InputArrayInput,
InputInputInterface,
OutputOutputInterface,
QuestionChoiceQuestion as Choice,
QuestionConfirmationQuestion,
};
PHP 7 ?? operator
 ?? : Null Coalesce Operator
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
$username = $_GET['user'] ?? 'nobody';
PHP 7 <=> operator
 Combined Comparison (Spaceship) Operator
 (expr) <=> (expr) returns 0 if both operands are
equal, -1 if the left is greater, and 1 if the right is
greater
function order_func($a, $b) {
return ($a < $b) ? -1 : (($a > $b) ? 1 : 0);
}
function order_func($a, $b) {
return $a <=> $b;
}
PHP7 Errors and Exceptions
PHP7 Exceptions instead of fatals
 The engine allows the user to try{}catch{} any call that
may generate a fatal error
 Every other error stays untouched, only fatals can now
be caught
 E_RECOVERABLE are turned to exceptions (most of
them)
 There is no more need to hack with user error handlers,
just try-catch now
 E_STRICT have been reclassified to E_WARN or E_NOTICE
PHP7 Exceptions instead of fatals
 The engine now allows the user to try{}catch{} any
call that may generate a fatal error
foo();
try {
foo();
} catch (Error $e) {
/* haha */
}
PHP7 Exceptions instead of fatals
 If the user doesn't catch the engine exception, this
latter is back converted to a Fatal Error
foo();
Fatal error: Uncaught Error: Call to undefined function foo()
in /tmp/foo.php:2
Stack trace:
#0 {main}
thrown in /tmp/foo.php on line 2
PHP7 Exceptions instead of fatals
 Some parse errors are catchable (ParseException),
especially using eval();
try {
$result = eval($code);
} catch (ParseException $exception) {
}
PHP7 Exceptions instead of fatals
PHP7 Exceptions instead of fatals
 PHP errors inherit from Error
 User exceptions inherit from Exception (no change)
 To catch both, you may catch Throwable
 Users can't inherit from Throwable directly
try {
foo();
} catch (Throwable $e) {
/* catch any user defined Exception
or catch any fatal Error */
}
PHP7 Closures
 Closure::call(object $to, [mixed ...$params])
 Allows to bind a Closure to a specific object at
runtime
 Won't work for internal classes : user classes only
class Foo { public $bar; }
$foo = new Foo;
$foo->bar = 3;
$foobar = function ($qux) { var_dump($this->bar + $qux); };
$foobar->call($foo, 4); /* int(7) */
PHP7 return type declaration
 Functions may declare return types.
 Types "null" and "resource" are not supported
 Those are checked at runtime issuing Fatal errors
function foo(): int {
return [];
}
foo();
Fatal error: Return value of foo() must be of the
type integer, array returned
PHP7 return type declaration
 Functions may declare return types
 Types "null" and "resource" are not supported
 PHP will try to convert them when possible, if not, it
issues a fatal error
function foo($i): int {
return $i;
}
var_dump(foo("123"));
(int)123
var_dump(foo( ["123"] ));
Fatal error: Return value of foo() must be of
the type integer, array returned
PHP7 return type declaration
 Call time variance type is allowed
interface A {
static function make(): A;
}
class B implements A {
static function make(): A {
return new B();
}
}
PHP7 return type declaration
 Compile time variance type is not allowed
interface A {
static function make(): A;
}
class B implements A {
static function make(): B {
return new B();
}
}
Fatal error: Declaration of B::make() must
be compatible with A::make(): A
PHP7 scalar type hints
 Scalar type hints are now allowed in functions arguments
declarations
 Type "null" and "resource" are not supported
 https://wiki.php.net/rfc/scalar_type_hints_v5
function foo(int $i, string $j, bool $k) { }
PHP7 scalar type hints
 By default, scalar type hints are not honored
 The default behavior is that PHP ignores those scalar
type hints, but not compound ones (like it used to
do)
function foo(int $i, string $j, bool $k) { }
foo(1, 1, 1); /* OK */
function foo(int $i, array $j) { }
foo('baz', 'bar');
Fatal error: Argument 2 passed to foo()
must be of the type array, string given
PHP7 scalar type hints
 PHP converts the scalar type hinted arguments
function foo(int $i, string $j, bool $k)
{
var_dump(func_get_args());
}
foo('12', 0, 'foo');
array(3) {
[0]=>
int(12)
[1]=>
string(1) "0"
[2]=>
bool(true)
}
PHP7 scalar type hints
 PHP converts the scalar type hinted arguments, only
when this is possible , if not, it emits a fatal error
function foo(int $i, string $j, bool $k)
{
var_dump(func_get_args());
}
foo('foo', 0, 'foo');
Fatal error: Argument 1 passed to foo() must
be of the type integer, string given
PHP7 scalar type hints errors
 As Fatal Errors may now be catched, this can be
used : function foo(int $i, string $j, bool $k)
{
var_dump(func_get_args());
}
try {
foo('foo', 0, 'foo');
} catch (TypeError $e) {
echo $e->getMessage();
}
Fatal error: Argument 1 passed to foo() must
be of the type integer, string given
PHP7 scalar type hints
 PHP however allows you to declare strict type hints
 honored for every future call
 no implicit conversion anymore
 strict checks must be turned on at function call-time
 strick checks are file-bound (not global)
 declare() must be the first file statement
function foo(int $i, string $j, bool $k) { }
foo(1, 'foo', true); /* OK */
declare(strict_types=1);
foo('1', 'foo', 'baz'); /* fatal */
PHP7 scalar type hints
 strict mode is also relevant for return type hints :
function foo(int $i) :string { return $i; }
var_dump(foo("123 pigs"));
string(3) "123"
declare(strict_types=1);
var_dump(foo(123));
Fatal error: Return value of foo() must be
of the type string, integer returned
PHP 7 new type hints
 Scalar type hints and return types are independant
features, one may be used without the other
 However, they are both affected by the strict mode
 Strict mode is file based only, it doesn't affect other
required files
 Strict mode is disabled by default
 Strict mode may be turned on for every function
calls, it doesn't impact function declarations at all
Anonymous classes
 Like anonymous functions
var_dump( new class() { });
object(class@anonymous)#1 (0) {
}
Anonymous classes
 Like anonymous functions
$obj->setLogger(new class implements Logger {
public function log($msg) {
print_r($msg);
}
});
interface Logger { function log($m); }
class Bar { function setLogger(Logger $l) { } }
$obj = new Bar;
PHP 7 new minor features
 Added scanner mode INI_SCANNER_TYPED to yield typed .ini
values
 Added second parameter for unserialize() function allowing to
specify acceptable classes
 preg_replace_callback_array()
 intdiv()
 error_clear_last()
 PHP_INT_MIN
 random_bytes()
 New assertion mechanism (more optimized, useful)
 New session features (lazy writes, , read only ...)
PHP 7 breakages
PHP 7 breakage
 Syntax changes that break
 Removals
 Behavior changes
PHP 7 Syntax changes
 The compiler has been rewritten entirely
 It is now based on an AST
 You may use the AST using
https://github.com/nikic/php-ast extension
 Some syntax changes were necessary to support new
features
PHP 7 Syntax changes
 Indirect variable, property and method references are
now interpreted with left-to-right semantics
$$foo['bar']['baz']
$foo->$bar['baz']
$foo->$bar['baz']()
Foo::$bar['baz']()
($$foo)['bar']['baz']
($foo->$bar)['baz']
($foo->$bar)['baz']()
(Foo::$bar)['baz']()
${$foo['bar']['baz']}
$foo->{$bar['baz']}
$foo->{$bar['baz']}()
Foo::{$bar['baz']}()
In PHP5
PHP 7 Syntax changes
 list() allows ArrayAccess objects (everytime)
 list() doesn't allow unpacking strings anymore
 Other minor changes to list() ...
list($a, $b) = (object) new ArrayObject([0, 1]);
/* $a == 0 and $b == 1 */
$str = "xy";
list($x, $y) = $str;
/* $x == null and $y == null */
/* no error */
PHP 7 Syntax changes
 Invalid octal literals (containing digits > 7) now
produce compile errors
 Hexadecimal strings are not recognized anymore
$i = 0781; // 8 is not a valid octal digit!
/* Fatal error: Invalid numeric literal in */
var_dump("0x123" == "291");
var_dump(is_numeric("0x123"));
var_dump("0xe" + "0x1");
bool(false)
bool (false)
int(0)
bool(true)
bool(true)
int(16)
In PHP5In PHP7
PHP 7 Syntax changes
 The new UTF-8 escape character u has been added
 Only added in heredocs and double-quoted strings
(as usual)
 Codepoints above U+10FFFF generate an error
 https://wiki.php.net/rfc/unicode_escape
echo "u{262F}";
u{262F} ☯
In PHP7In PHP5
PHP 7 Removals
 Removed ASP (<%) and script (<script
language=php>) tags
 Removed support for assigning the result of new by
reference
 Removed support for #-style comments in ini files
 $HTTP_RAW_POST_DATA is no longer available. Use
the php://input stream instead.
 bye bye call_user_method()/call_user_method_array()
$a = &new stdclass;
Parse error: syntax error, unexpected 'new' (T_NEW)
PHP 7 Removals
 Removed support for scoped calls to non-static
methods from an incompatible $this context
 In PHP7, $this will be undefined in this case
class A {
function foo() { var_dump(get_class($this)); }
}
class B {
function bar() { A::foo(); }
}
$b = new B;
$b->bar();
PHP 7 Removals
class A {
function foo() { var_dump($this); }
}
class B {
function bar() { A::foo(); }
}
$b = new B;
$b->bar();
Deprecated: Non-static method A::foo() should not be
called statically, assuming $this from incompatible context
object(B) #1
Deprecated: Non-static method A::foo() should not be
called statically
Notice: Undefined variable: this in /tmp/7.php on line 4
In PHP5
In PHP7
PHP 7 Removals
 Other removals into extensions :
 Date
 Curl
 DBA
 GMP
 Mcrypt
 OpenSSL
 PCRE
 Standard
 JSON
 Many old SAPI removed (Apache1, roxen, tux, isapi ...)
PHP 7 changed behaviors
PHP 7 changed behaviors
 Redefinition of function argument is no longer allowed
function foo($a, $b, $b) { }
Fatal error: Redefinition of parameter $b in ...
PHP 7 changed behaviors
 PHP4 constructor types now generate
E_DEPRECATED, and will be removed in a next PHP
 "Types" have been turned to reserved words against
class/trait/interface names
class Foo
{
public function foo() { }
}
/* E_DEPRECATED */
class String { }
Fatal error: "string" cannot be used as a class name
PHP 7 changed behaviors
 Some reserved keywords in class context however, can
now be used
 Into a class context, expect the parser to be smoother
now :
 But you still cannot declare a const named 'class'
Project::new('Foo')->private()->for('bar');
class baz
{
private function private() { }
public function const() { }
public function list() { }
const function = 'bar';
}
PHP 7 changed behaviors
 func_get_arg() / func_get_args() now return the current
scoped variable value
function foo($x)
{
$x++;
var_dump(func_get_arg(0));
}
foo(1);
(int)1 (int)2
In PHP7In PHP5
PHP 7 changed behaviors
 Exception traces now show the current scoped
variable values
function foo($x)
{
$x++;
throw new Exception;
}
foo(1);
Stack trace:
#0 /tmp/php.php(7): foo(1)
#1 {main}
Stack trace:
#0 /tmp/php.php(7): foo(2)
#1 {main}
In PHP7In PHP5
PHP 7 changed behaviors
 Left bitwise shifts by a number of bits beyond the bit
width of an integer will always result in 0
 Bitwise shifts by negative numbers will now throw a
warning and return false
var_dump(1 << 64);
(int)1 (int)0
In PHP7In PHP5
var_dump(1 >> -1);
(int)0 (bool)false
Uncaught ArithmeticError
In PHP7In PHP5
PHP 7 changed behaviors
 Iteration with foreach() no longer has any effect on the
internal array pointer
$array = [0, 1, 2];
foreach ($array as $val) {
var_dump(current($array));
}
int(1)
int(1)
int(1)
int(0)
int(0)
int(0)
In PHP7In PHP5
PHP 7 changed behaviors
 When iterating arrays by-reference with foreach(),
modifications to the array will continue to influence
the iteration. Correct position pointer is maintained
$array = [0];
foreach ($array as &$val) {
var_dump($val);
$array[1] = 1;
}
int(0) int(0)
int(1)
In PHP7In PHP5
PHP7 : Other changes
 More generally , what before used to generate
E_DEPRECATED is now removed, or may be very soon
PHP 7 new engine
PHP 7 new internals
 Full 64bit support
 New Thread Safety mechanism
 New engine memory management
 New optimized executor
 New optimized structures
PHP 7 full 64bit engine
 PHP was known to be platform dependent on this crucial
criteria
 LP64: Linux64 (and most Unixes)
 LLP64: Windows64
 ILP64: SPARC64
http://www.unix.org/whitepapers/64bit.html
string size signed integer
Platform int long
LP64 32 64
LLP64 32 32
ILP64 64 64
PHP 7 full 64bit engine
 PHP 7 now uses platform independant sizes
 Strings > 2^31
 Real 64bit userland PHP integers
 LFS (Large File Support)
 64bits hash keys
 Whatever your platform (OS) : consistency
PHP 7 new memory management
 PHP7 has reworked every memory management
routine
 Use less heap and more stack
 Zvals are stack allocated
 refcount management more accurate
 Scalar types are no longer refcounted
 Redevelop a new MM heap, more optimized
 Based on sized pools (small, medium and large)
 CPU cache friendly
 Concepts borrowed from tcmalloc
PHP 7 thread safety
 PHP7 has reworked its thread safety mechanism
routine
 PHP5 thread safety routine had a ~20% perf impact
 This is no more the case in PHP7
 TLS is now mature, and it is used
 For PHP under Windows (mandatory)
 For PHP under Unix, if asked for (usually not)
PHP 7 new structures
 Critical structures have been reworked
 More memory friendly
 More CPU friendly (data alignment, cache friendly)
 Strings are now refcounted
 Objects now share their refcount with other types
 Wasn't the case in PHP5
 The engine Executor uses a full new stack frame to
push and manage arguments
 Function calls have been heavilly reworked
PHP 7 performances
PHP 7 performances
 A lot of tweaks have been performed against PHP 7
code performances.
 A lot of internal changes - invisible to userland - have
been performed to have a more performant language
 CPU cache misses have been heavilly worked on
 Spacial locality of code is improved
 This results in a language beeing at least twice fast
and that consumes at least twice less memory
PHP 7 performances
... ...
$x = TEST 0.664 0.269
$x = $_GET 0.876 0.480
$x = $GLOBALS['v'] 1.228 0.833
$x = $hash['v'] 1.048 0.652
$x = $str[0] 1.711 1.315
$x = $a ?: null 0.880 0.484
$x = $f ?: tmp 1.367 0.972
$x = $f ? $f : $a 0.905 0.509
$x = $f ? $f : tmp 1.371 0.976
----------------------------------------------
Total 35.412
... ...
$x = TEST 0.400 0.223
$x = $_GET 0.616 0.440
$x = $GLOBALS['v'] 0.920 0.743
$x = $hash['v'] 0.668 0.491
$x = $str[0] 1.182 1.005
$x = $a ?: null 0.529 0.352
$x = $f ?: tmp 0.614 0.438
$x = $f ? $f : $a 0.536 0.360
$x = $f ? $f : tmp 0.587 0.411
----------------------------------------------
Total 20.707
PHP7PHP5.6
Zend/micro_bench.php
PHP 7 performances
Time: 4.51 seconds, Memory: 726.00Mb
Time: 2.62 seconds, Memory: 368.00Mb
PHP7
PHP5.6
PHPUnit in Symfony2 components
Time gain ~ 40%
Memory gain ~ 50%
PHP 7 performances
 Take care of synthetic benchmarks
 They only demonstrates basic use cases
 Run your own benchmarks
 Run your own applications against PHP 7
 On a big average, you can expect dividing CPU
time and memory consumption by a factor of 2
compared to PHP-5.6, probably even more than
2
Thank you for listening !

More Related Content

What's hot

Php in 2013 (Web-5 2013 conference)
Php in 2013 (Web-5 2013 conference)Php in 2013 (Web-5 2013 conference)
Php in 2013 (Web-5 2013 conference)julien pauli
 
Php7 extensions workshop
Php7 extensions workshopPhp7 extensions workshop
Php7 extensions workshopjulien pauli
 
Php and threads ZTS
Php and threads ZTSPhp and threads ZTS
Php and threads ZTSjulien pauli
 
PHP 7 OPCache extension review
PHP 7 OPCache extension reviewPHP 7 OPCache extension review
PHP 7 OPCache extension reviewjulien pauli
 
IPC2010SE Doctrine2 Enterprise Persistence Layer for PHP
IPC2010SE Doctrine2 Enterprise Persistence Layer for PHPIPC2010SE Doctrine2 Enterprise Persistence Layer for PHP
IPC2010SE Doctrine2 Enterprise Persistence Layer for PHPGuilherme Blanco
 
PHP Internals and Virtual Machine
PHP Internals and Virtual MachinePHP Internals and Virtual Machine
PHP Internals and Virtual Machinejulien pauli
 
The Php Life Cycle
The Php Life CycleThe Php Life Cycle
The Php Life CycleXinchen Hui
 
Mysqlnd, an unknown powerful PHP extension
Mysqlnd, an unknown powerful PHP extensionMysqlnd, an unknown powerful PHP extension
Mysqlnd, an unknown powerful PHP extensionjulien pauli
 
How PHP Works ?
How PHP Works ?How PHP Works ?
How PHP Works ?Ravi Raj
 
Php extensions workshop
Php extensions workshopPhp extensions workshop
Php extensions workshopjulien pauli
 
SymfonyCon 2017 php7 performances
SymfonyCon 2017 php7 performancesSymfonyCon 2017 php7 performances
SymfonyCon 2017 php7 performancesjulien pauli
 
Doctrine 2.0 Enterprise Persistence Layer for PHP
Doctrine 2.0 Enterprise Persistence Layer for PHPDoctrine 2.0 Enterprise Persistence Layer for PHP
Doctrine 2.0 Enterprise Persistence Layer for PHPGuilherme Blanco
 
Zephir - A Wind of Change for writing PHP extensions
Zephir - A Wind of Change for writing PHP extensionsZephir - A Wind of Change for writing PHP extensions
Zephir - A Wind of Change for writing PHP extensionsMark Baker
 
Phpをいじり倒す10の方法
Phpをいじり倒す10の方法Phpをいじり倒す10の方法
Phpをいじり倒す10の方法Moriyoshi Koizumi
 
Streams, sockets and filters oh my!
Streams, sockets and filters oh my!Streams, sockets and filters oh my!
Streams, sockets and filters oh my!Elizabeth Smith
 
PHP 7 performances from PHP 5
PHP 7 performances from PHP 5PHP 7 performances from PHP 5
PHP 7 performances from PHP 5julien pauli
 
Symfony live 2017_php7_performances
Symfony live 2017_php7_performancesSymfony live 2017_php7_performances
Symfony live 2017_php7_performancesjulien pauli
 
Yapcasia2011 - Hello Embed Perl
Yapcasia2011 - Hello Embed PerlYapcasia2011 - Hello Embed Perl
Yapcasia2011 - Hello Embed PerlHideaki Ohno
 

What's hot (20)

Php in 2013 (Web-5 2013 conference)
Php in 2013 (Web-5 2013 conference)Php in 2013 (Web-5 2013 conference)
Php in 2013 (Web-5 2013 conference)
 
Php7 extensions workshop
Php7 extensions workshopPhp7 extensions workshop
Php7 extensions workshop
 
Php and threads ZTS
Php and threads ZTSPhp and threads ZTS
Php and threads ZTS
 
PHP 7 OPCache extension review
PHP 7 OPCache extension reviewPHP 7 OPCache extension review
PHP 7 OPCache extension review
 
IPC2010SE Doctrine2 Enterprise Persistence Layer for PHP
IPC2010SE Doctrine2 Enterprise Persistence Layer for PHPIPC2010SE Doctrine2 Enterprise Persistence Layer for PHP
IPC2010SE Doctrine2 Enterprise Persistence Layer for PHP
 
PHP Internals and Virtual Machine
PHP Internals and Virtual MachinePHP Internals and Virtual Machine
PHP Internals and Virtual Machine
 
The Php Life Cycle
The Php Life CycleThe Php Life Cycle
The Php Life Cycle
 
Mysqlnd, an unknown powerful PHP extension
Mysqlnd, an unknown powerful PHP extensionMysqlnd, an unknown powerful PHP extension
Mysqlnd, an unknown powerful PHP extension
 
Php engine
Php enginePhp engine
Php engine
 
How PHP Works ?
How PHP Works ?How PHP Works ?
How PHP Works ?
 
Php string function
Php string function Php string function
Php string function
 
Php extensions workshop
Php extensions workshopPhp extensions workshop
Php extensions workshop
 
SymfonyCon 2017 php7 performances
SymfonyCon 2017 php7 performancesSymfonyCon 2017 php7 performances
SymfonyCon 2017 php7 performances
 
Doctrine 2.0 Enterprise Persistence Layer for PHP
Doctrine 2.0 Enterprise Persistence Layer for PHPDoctrine 2.0 Enterprise Persistence Layer for PHP
Doctrine 2.0 Enterprise Persistence Layer for PHP
 
Zephir - A Wind of Change for writing PHP extensions
Zephir - A Wind of Change for writing PHP extensionsZephir - A Wind of Change for writing PHP extensions
Zephir - A Wind of Change for writing PHP extensions
 
Phpをいじり倒す10の方法
Phpをいじり倒す10の方法Phpをいじり倒す10の方法
Phpをいじり倒す10の方法
 
Streams, sockets and filters oh my!
Streams, sockets and filters oh my!Streams, sockets and filters oh my!
Streams, sockets and filters oh my!
 
PHP 7 performances from PHP 5
PHP 7 performances from PHP 5PHP 7 performances from PHP 5
PHP 7 performances from PHP 5
 
Symfony live 2017_php7_performances
Symfony live 2017_php7_performancesSymfony live 2017_php7_performances
Symfony live 2017_php7_performances
 
Yapcasia2011 - Hello Embed Perl
Yapcasia2011 - Hello Embed PerlYapcasia2011 - Hello Embed Perl
Yapcasia2011 - Hello Embed Perl
 

Viewers also liked

PHP deploy 2015 flavor - talk from php tour 2015 luxembourg
PHP deploy 2015 flavor - talk from php tour 2015 luxembourgPHP deploy 2015 flavor - talk from php tour 2015 luxembourg
PHP deploy 2015 flavor - talk from php tour 2015 luxembourgQuentin Adam
 
Let's Code our Infrastructure!
Let's Code our Infrastructure!Let's Code our Infrastructure!
Let's Code our Infrastructure!continuousphp
 
Sauf erreur-je-ne-me-trompe-jamais
Sauf erreur-je-ne-me-trompe-jamaisSauf erreur-je-ne-me-trompe-jamais
Sauf erreur-je-ne-me-trompe-jamaisFrederic Bouchery
 
Deploy and Scale your PHP App with AWS ElasticBeanstalk and Docker- PHPTour L...
Deploy and Scale your PHP App with AWS ElasticBeanstalk and Docker- PHPTour L...Deploy and Scale your PHP App with AWS ElasticBeanstalk and Docker- PHPTour L...
Deploy and Scale your PHP App with AWS ElasticBeanstalk and Docker- PHPTour L...Corley S.r.l.
 
Character encoding standard(1)
Character encoding standard(1)Character encoding standard(1)
Character encoding standard(1)Pramila Selvaraj
 
Preparing code for Php 7 workshop
Preparing code for Php 7 workshopPreparing code for Php 7 workshop
Preparing code for Php 7 workshopDamien Seguy
 
DIC To The Limit – deSymfonyDay, Barcelona 2014
DIC To The Limit – deSymfonyDay, Barcelona 2014DIC To The Limit – deSymfonyDay, Barcelona 2014
DIC To The Limit – deSymfonyDay, Barcelona 2014Ronny López
 
Character Encoding issue with PHP
Character Encoding issue with PHPCharacter Encoding issue with PHP
Character Encoding issue with PHPRavi Raj
 
PHP Object Injection Vulnerability in WordPress: an Analysis
PHP Object Injection Vulnerability in WordPress: an AnalysisPHP Object Injection Vulnerability in WordPress: an Analysis
PHP Object Injection Vulnerability in WordPress: an AnalysisPositive Hack Days
 
Introduction to CQRS and Event Sourcing
Introduction to CQRS and Event SourcingIntroduction to CQRS and Event Sourcing
Introduction to CQRS and Event SourcingSamuel ROZE
 
Economía del Desarrollo de Software - PHP Barcelona - Marzo 2015
Economía del Desarrollo de Software - PHP Barcelona - Marzo 2015Economía del Desarrollo de Software - PHP Barcelona - Marzo 2015
Economía del Desarrollo de Software - PHP Barcelona - Marzo 2015Carlos Buenosvinos
 
Json web token api authorization
Json web token api authorizationJson web token api authorization
Json web token api authorizationGiulio De Donato
 
Why do all my ddd apps look the same - Vienna 2014
Why do all my ddd apps look the same - Vienna 2014Why do all my ddd apps look the same - Vienna 2014
Why do all my ddd apps look the same - Vienna 2014Alberto Brandolini
 
Creating hypermedia APIs in a few minutes using the API Platform framework
Creating hypermedia APIs in a few minutes using the API Platform frameworkCreating hypermedia APIs in a few minutes using the API Platform framework
Creating hypermedia APIs in a few minutes using the API Platform frameworkLes-Tilleuls.coop
 

Viewers also liked (20)

The Continuous PHP Pipeline
The Continuous PHP PipelineThe Continuous PHP Pipeline
The Continuous PHP Pipeline
 
PHP deploy 2015 flavor - talk from php tour 2015 luxembourg
PHP deploy 2015 flavor - talk from php tour 2015 luxembourgPHP deploy 2015 flavor - talk from php tour 2015 luxembourg
PHP deploy 2015 flavor - talk from php tour 2015 luxembourg
 
Let's Code our Infrastructure!
Let's Code our Infrastructure!Let's Code our Infrastructure!
Let's Code our Infrastructure!
 
Sauf erreur-je-ne-me-trompe-jamais
Sauf erreur-je-ne-me-trompe-jamaisSauf erreur-je-ne-me-trompe-jamais
Sauf erreur-je-ne-me-trompe-jamais
 
Deploy and Scale your PHP App with AWS ElasticBeanstalk and Docker- PHPTour L...
Deploy and Scale your PHP App with AWS ElasticBeanstalk and Docker- PHPTour L...Deploy and Scale your PHP App with AWS ElasticBeanstalk and Docker- PHPTour L...
Deploy and Scale your PHP App with AWS ElasticBeanstalk and Docker- PHPTour L...
 
PHP 7 new engine
PHP 7 new enginePHP 7 new engine
PHP 7 new engine
 
Character encoding standard(1)
Character encoding standard(1)Character encoding standard(1)
Character encoding standard(1)
 
Preparing code for Php 7 workshop
Preparing code for Php 7 workshopPreparing code for Php 7 workshop
Preparing code for Php 7 workshop
 
DIC To The Limit – deSymfonyDay, Barcelona 2014
DIC To The Limit – deSymfonyDay, Barcelona 2014DIC To The Limit – deSymfonyDay, Barcelona 2014
DIC To The Limit – deSymfonyDay, Barcelona 2014
 
Character Encoding issue with PHP
Character Encoding issue with PHPCharacter Encoding issue with PHP
Character Encoding issue with PHP
 
PHP Object Injection Vulnerability in WordPress: an Analysis
PHP Object Injection Vulnerability in WordPress: an AnalysisPHP Object Injection Vulnerability in WordPress: an Analysis
PHP Object Injection Vulnerability in WordPress: an Analysis
 
Introduction to CQRS and Event Sourcing
Introduction to CQRS and Event SourcingIntroduction to CQRS and Event Sourcing
Introduction to CQRS and Event Sourcing
 
Economía del Desarrollo de Software - PHP Barcelona - Marzo 2015
Economía del Desarrollo de Software - PHP Barcelona - Marzo 2015Economía del Desarrollo de Software - PHP Barcelona - Marzo 2015
Economía del Desarrollo de Software - PHP Barcelona - Marzo 2015
 
Json web token api authorization
Json web token api authorizationJson web token api authorization
Json web token api authorization
 
Why do all my ddd apps look the same - Vienna 2014
Why do all my ddd apps look the same - Vienna 2014Why do all my ddd apps look the same - Vienna 2014
Why do all my ddd apps look the same - Vienna 2014
 
PHP
 PHP PHP
PHP
 
Creating hypermedia APIs in a few minutes using the API Platform framework
Creating hypermedia APIs in a few minutes using the API Platform frameworkCreating hypermedia APIs in a few minutes using the API Platform framework
Creating hypermedia APIs in a few minutes using the API Platform framework
 
Understanding IIS
Understanding IISUnderstanding IIS
Understanding IIS
 
What’s New in PHP7?
What’s New in PHP7?What’s New in PHP7?
What’s New in PHP7?
 
Introduce php7
Introduce php7Introduce php7
Introduce php7
 

Similar to PHP7 is coming

Giới thiệu PHP 7
Giới thiệu PHP 7Giới thiệu PHP 7
Giới thiệu PHP 7ZendVN
 
Elements of Functional Programming in PHP
Elements of Functional Programming in PHPElements of Functional Programming in PHP
Elements of Functional Programming in PHPJarek Jakubowski
 
PHP Versions Upgradation - What's New vs Old Version.pdf
PHP Versions Upgradation - What's New vs Old Version.pdfPHP Versions Upgradation - What's New vs Old Version.pdf
PHP Versions Upgradation - What's New vs Old Version.pdfWPWeb Infotech
 
The why and how of moving to php 5.4
The why and how of moving to php 5.4The why and how of moving to php 5.4
The why and how of moving to php 5.4Wim Godden
 
What's new in PHP 8.0?
What's new in PHP 8.0?What's new in PHP 8.0?
What's new in PHP 8.0?Nikita Popov
 
[4developers2016] PHP 7 (Michał Pipa)
[4developers2016] PHP 7 (Michał Pipa)[4developers2016] PHP 7 (Michał Pipa)
[4developers2016] PHP 7 (Michał Pipa)PROIDEA
 
PHP 8: Process & Fixing Insanity
PHP 8: Process & Fixing InsanityPHP 8: Process & Fixing Insanity
PHP 8: Process & Fixing InsanityGeorgePeterBanyard
 
Php7 HHVM and co
Php7 HHVM and coPhp7 HHVM and co
Php7 HHVM and coweltling
 
What's New in PHP 5.5
What's New in PHP 5.5What's New in PHP 5.5
What's New in PHP 5.5Corey Ballou
 
PHP 7.0 new features (and new interpreter)
PHP 7.0 new features (and new interpreter)PHP 7.0 new features (and new interpreter)
PHP 7.0 new features (and new interpreter)Andrea Telatin
 
Php7 hhvm and co
Php7 hhvm and coPhp7 hhvm and co
Php7 hhvm and coPierre Joye
 
Introducing PHP Latest Updates
Introducing PHP Latest UpdatesIntroducing PHP Latest Updates
Introducing PHP Latest UpdatesIftekhar Eather
 
What To Expect From PHP7
What To Expect From PHP7What To Expect From PHP7
What To Expect From PHP7Codemotion
 
Introduction to Functional Programming (w/ JS)
Introduction to Functional Programming (w/ JS)Introduction to Functional Programming (w/ JS)
Introduction to Functional Programming (w/ JS)Allan Marques Baptista
 

Similar to PHP7 is coming (20)

Giới thiệu PHP 7
Giới thiệu PHP 7Giới thiệu PHP 7
Giới thiệu PHP 7
 
PHP7 Presentation
PHP7 PresentationPHP7 Presentation
PHP7 Presentation
 
Elements of Functional Programming in PHP
Elements of Functional Programming in PHPElements of Functional Programming in PHP
Elements of Functional Programming in PHP
 
PHP Versions Upgradation - What's New vs Old Version.pdf
PHP Versions Upgradation - What's New vs Old Version.pdfPHP Versions Upgradation - What's New vs Old Version.pdf
PHP Versions Upgradation - What's New vs Old Version.pdf
 
The why and how of moving to php 5.4
The why and how of moving to php 5.4The why and how of moving to php 5.4
The why and how of moving to php 5.4
 
Slide
SlideSlide
Slide
 
PHP 5.3
PHP 5.3PHP 5.3
PHP 5.3
 
Sf2 wtf
Sf2 wtfSf2 wtf
Sf2 wtf
 
What's new in PHP 8.0?
What's new in PHP 8.0?What's new in PHP 8.0?
What's new in PHP 8.0?
 
[4developers2016] PHP 7 (Michał Pipa)
[4developers2016] PHP 7 (Michał Pipa)[4developers2016] PHP 7 (Michał Pipa)
[4developers2016] PHP 7 (Michał Pipa)
 
PHP 8: Process & Fixing Insanity
PHP 8: Process & Fixing InsanityPHP 8: Process & Fixing Insanity
PHP 8: Process & Fixing Insanity
 
PHP 7
PHP 7PHP 7
PHP 7
 
Php7 HHVM and co
Php7 HHVM and coPhp7 HHVM and co
Php7 HHVM and co
 
PHP7: Hello World!
PHP7: Hello World!PHP7: Hello World!
PHP7: Hello World!
 
What's New in PHP 5.5
What's New in PHP 5.5What's New in PHP 5.5
What's New in PHP 5.5
 
PHP 7.0 new features (and new interpreter)
PHP 7.0 new features (and new interpreter)PHP 7.0 new features (and new interpreter)
PHP 7.0 new features (and new interpreter)
 
Php7 hhvm and co
Php7 hhvm and coPhp7 hhvm and co
Php7 hhvm and co
 
Introducing PHP Latest Updates
Introducing PHP Latest UpdatesIntroducing PHP Latest Updates
Introducing PHP Latest Updates
 
What To Expect From PHP7
What To Expect From PHP7What To Expect From PHP7
What To Expect From PHP7
 
Introduction to Functional Programming (w/ JS)
Introduction to Functional Programming (w/ JS)Introduction to Functional Programming (w/ JS)
Introduction to Functional Programming (w/ JS)
 

More from julien pauli

Doctrine with Symfony - SymfonyCon 2019
Doctrine with Symfony - SymfonyCon 2019Doctrine with Symfony - SymfonyCon 2019
Doctrine with Symfony - SymfonyCon 2019julien pauli
 
Basics of Cryptography - Stream ciphers and PRNG
Basics of Cryptography - Stream ciphers and PRNGBasics of Cryptography - Stream ciphers and PRNG
Basics of Cryptography - Stream ciphers and PRNGjulien pauli
 
Mastering your home network - Do It Yourself
Mastering your home network - Do It YourselfMastering your home network - Do It Yourself
Mastering your home network - Do It Yourselfjulien pauli
 
Understanding PHP memory
Understanding PHP memoryUnderstanding PHP memory
Understanding PHP memoryjulien pauli
 
Communications Réseaux et HTTP avec PHP
Communications Réseaux et HTTP avec PHPCommunications Réseaux et HTTP avec PHP
Communications Réseaux et HTTP avec PHPjulien pauli
 
PHPTour-2011-PHP_Extensions
PHPTour-2011-PHP_ExtensionsPHPTour-2011-PHP_Extensions
PHPTour-2011-PHP_Extensionsjulien pauli
 
PHPTour 2011 - PHP5.4
PHPTour 2011 - PHP5.4PHPTour 2011 - PHP5.4
PHPTour 2011 - PHP5.4julien pauli
 
Patterns and OOP in PHP
Patterns and OOP in PHPPatterns and OOP in PHP
Patterns and OOP in PHPjulien pauli
 
ZendFramework2 - Présentation
ZendFramework2 - PrésentationZendFramework2 - Présentation
ZendFramework2 - Présentationjulien pauli
 
AlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHPAlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHPjulien pauli
 
Apache for développeurs PHP
Apache for développeurs PHPApache for développeurs PHP
Apache for développeurs PHPjulien pauli
 

More from julien pauli (13)

Doctrine with Symfony - SymfonyCon 2019
Doctrine with Symfony - SymfonyCon 2019Doctrine with Symfony - SymfonyCon 2019
Doctrine with Symfony - SymfonyCon 2019
 
Dns
DnsDns
Dns
 
Basics of Cryptography - Stream ciphers and PRNG
Basics of Cryptography - Stream ciphers and PRNGBasics of Cryptography - Stream ciphers and PRNG
Basics of Cryptography - Stream ciphers and PRNG
 
Mastering your home network - Do It Yourself
Mastering your home network - Do It YourselfMastering your home network - Do It Yourself
Mastering your home network - Do It Yourself
 
Tcpip
TcpipTcpip
Tcpip
 
Understanding PHP memory
Understanding PHP memoryUnderstanding PHP memory
Understanding PHP memory
 
Communications Réseaux et HTTP avec PHP
Communications Réseaux et HTTP avec PHPCommunications Réseaux et HTTP avec PHP
Communications Réseaux et HTTP avec PHP
 
PHPTour-2011-PHP_Extensions
PHPTour-2011-PHP_ExtensionsPHPTour-2011-PHP_Extensions
PHPTour-2011-PHP_Extensions
 
PHPTour 2011 - PHP5.4
PHPTour 2011 - PHP5.4PHPTour 2011 - PHP5.4
PHPTour 2011 - PHP5.4
 
Patterns and OOP in PHP
Patterns and OOP in PHPPatterns and OOP in PHP
Patterns and OOP in PHP
 
ZendFramework2 - Présentation
ZendFramework2 - PrésentationZendFramework2 - Présentation
ZendFramework2 - Présentation
 
AlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHPAlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHP
 
Apache for développeurs PHP
Apache for développeurs PHPApache for développeurs PHP
Apache for développeurs PHP
 

Recently uploaded

Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Networking in the Penumbra presented by Geoff Huston at NZNOG
Networking in the Penumbra presented by Geoff Huston at NZNOGNetworking in the Penumbra presented by Geoff Huston at NZNOG
Networking in the Penumbra presented by Geoff Huston at NZNOGAPNIC
 
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...Neha Pandey
 
Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...
Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...
Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...Delhi Call girls
 
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark WebGDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark WebJames Anderson
 
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting High Prof...
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting  High Prof...VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting  High Prof...
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting High Prof...singhpriety023
 
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providersMoving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providersDamian Radcliffe
 
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779Delhi Call girls
 
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445ruhi
 
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night StandHot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Standkumarajju5765
 
Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.soniya singh
 
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip CallDelhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Callshivangimorya083
 
On Starlink, presented by Geoff Huston at NZNOG 2024
On Starlink, presented by Geoff Huston at NZNOG 2024On Starlink, presented by Geoff Huston at NZNOG 2024
On Starlink, presented by Geoff Huston at NZNOG 2024APNIC
 
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...Diya Sharma
 
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝soniya singh
 

Recently uploaded (20)

Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
 
Networking in the Penumbra presented by Geoff Huston at NZNOG
Networking in the Penumbra presented by Geoff Huston at NZNOGNetworking in the Penumbra presented by Geoff Huston at NZNOG
Networking in the Penumbra presented by Geoff Huston at NZNOG
 
Rohini Sector 26 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 26 Call Girls Delhi 9999965857 @Sabina Saikh No AdvanceRohini Sector 26 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 26 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
 
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
 
Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...
Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...
Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...
 
Russian Call Girls in %(+971524965298 )# Call Girls in Dubai
Russian Call Girls in %(+971524965298  )#  Call Girls in DubaiRussian Call Girls in %(+971524965298  )#  Call Girls in Dubai
Russian Call Girls in %(+971524965298 )# Call Girls in Dubai
 
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark WebGDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
 
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting High Prof...
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting  High Prof...VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting  High Prof...
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting High Prof...
 
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providersMoving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
 
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
 
Rohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No AdvanceRohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
 
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445
 
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night StandHot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
 
Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.
 
Rohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No AdvanceRohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
 
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip CallDelhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
 
On Starlink, presented by Geoff Huston at NZNOG 2024
On Starlink, presented by Geoff Huston at NZNOG 2024On Starlink, presented by Geoff Huston at NZNOG 2024
On Starlink, presented by Geoff Huston at NZNOG 2024
 
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
 
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
 
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
 

PHP7 is coming

  • 1. PHP7 is coming in November 2015
  • 2. Hello  Julien PAULI  PHP user for more than 10y now  Linux / Unix adopter  PHP Internals developper (C language)  PHP 5.5 / 5.6 Release Manager  Working at SensioLabs (Paris)  Likes writing tech articles/books  @julienpauli - jpauli@php.net  Blog at http://jpauli.github.io
  • 3. PHP versions ?  PHP 5.3  Dead  PHP 5.4  Dead  PHP 5.5  Dead (sec fixes only)  PHP 5.6  Current version (Sept 2014), still current  PHP 7  Future version (end 2015)  Major version  PHP 8  2020 ?
  • 4. Timeline  http://php.net/supported-versions.php 2004 2015 5.0 PHP 7.0 2005 2006 2009 5.1 5.2 5.3 5.4 2012 2013 2014 5.5 5.6
  • 9. PHP 7 doctrines  We are in a new major, we may break things  Only majors are allowed to do so (starting from 5.4)  We are devs. we also need to refactor (like you)  Only break when it brings a significant advantage  Think about our users and their migrations  Do not fall into a Python2 vs Python3 war  We'll have PHP 7.1 etc.. and PHP 8.0, probably in 2020.
  • 10. So ?  Functions arguments order will not be touched  Functions() won't be turned into objects->methods()  "Goto" will not disappear  And the earth won't just stop its rotation tomorrow
  • 11. PHP 7 changes  Internal Engine evolutions (Zend Engine 3.0)  Perfs ++  32/64bits platform fully supported  Integer sizes  New parser based on an AST  Some syntaxes change with PHP5  Tidy up old things that were deprecated before  Many new features
  • 12. PHP7 new user features  Exceptions to replace fatal errors  New language syntaxes  ?? operator  <=> operator  Group use  Return type declaration and scalar type hints  Anonymous classes  Other new features (Can't list all here)
  • 13. PHP 7 new features
  • 14. PHP 7 group "use" decl.  Group "use" declaration : use SymfonyComponentConsoleHelperTable; use SymfonyComponentConsoleInputArrayInput; use SymfonyComponentConsoleInputInputInterface; use SymfonyComponentConsoleOutputOutputInterface; use SymfonyComponentConsoleQuestionChoiceQuestion as Choice; use SymfonyComponentConsoleQuestionConfirmationQuestion; use SymfonyComponentConsole{ HelperTable, InputArrayInput, InputInputInterface, OutputOutputInterface, QuestionChoiceQuestion as Choice, QuestionConfirmationQuestion, };
  • 15. PHP 7 ?? operator  ?? : Null Coalesce Operator $username = isset($_GET['user']) ? $_GET['user'] : 'nobody'; $username = $_GET['user'] ?? 'nobody';
  • 16. PHP 7 <=> operator  Combined Comparison (Spaceship) Operator  (expr) <=> (expr) returns 0 if both operands are equal, -1 if the left is greater, and 1 if the right is greater function order_func($a, $b) { return ($a < $b) ? -1 : (($a > $b) ? 1 : 0); } function order_func($a, $b) { return $a <=> $b; }
  • 17. PHP7 Errors and Exceptions
  • 18. PHP7 Exceptions instead of fatals  The engine allows the user to try{}catch{} any call that may generate a fatal error  Every other error stays untouched, only fatals can now be caught  E_RECOVERABLE are turned to exceptions (most of them)  There is no more need to hack with user error handlers, just try-catch now  E_STRICT have been reclassified to E_WARN or E_NOTICE
  • 19. PHP7 Exceptions instead of fatals  The engine now allows the user to try{}catch{} any call that may generate a fatal error foo(); try { foo(); } catch (Error $e) { /* haha */ }
  • 20. PHP7 Exceptions instead of fatals  If the user doesn't catch the engine exception, this latter is back converted to a Fatal Error foo(); Fatal error: Uncaught Error: Call to undefined function foo() in /tmp/foo.php:2 Stack trace: #0 {main} thrown in /tmp/foo.php on line 2
  • 21. PHP7 Exceptions instead of fatals  Some parse errors are catchable (ParseException), especially using eval(); try { $result = eval($code); } catch (ParseException $exception) { }
  • 23. PHP7 Exceptions instead of fatals  PHP errors inherit from Error  User exceptions inherit from Exception (no change)  To catch both, you may catch Throwable  Users can't inherit from Throwable directly try { foo(); } catch (Throwable $e) { /* catch any user defined Exception or catch any fatal Error */ }
  • 24. PHP7 Closures  Closure::call(object $to, [mixed ...$params])  Allows to bind a Closure to a specific object at runtime  Won't work for internal classes : user classes only class Foo { public $bar; } $foo = new Foo; $foo->bar = 3; $foobar = function ($qux) { var_dump($this->bar + $qux); }; $foobar->call($foo, 4); /* int(7) */
  • 25. PHP7 return type declaration  Functions may declare return types.  Types "null" and "resource" are not supported  Those are checked at runtime issuing Fatal errors function foo(): int { return []; } foo(); Fatal error: Return value of foo() must be of the type integer, array returned
  • 26. PHP7 return type declaration  Functions may declare return types  Types "null" and "resource" are not supported  PHP will try to convert them when possible, if not, it issues a fatal error function foo($i): int { return $i; } var_dump(foo("123")); (int)123 var_dump(foo( ["123"] )); Fatal error: Return value of foo() must be of the type integer, array returned
  • 27. PHP7 return type declaration  Call time variance type is allowed interface A { static function make(): A; } class B implements A { static function make(): A { return new B(); } }
  • 28. PHP7 return type declaration  Compile time variance type is not allowed interface A { static function make(): A; } class B implements A { static function make(): B { return new B(); } } Fatal error: Declaration of B::make() must be compatible with A::make(): A
  • 29. PHP7 scalar type hints  Scalar type hints are now allowed in functions arguments declarations  Type "null" and "resource" are not supported  https://wiki.php.net/rfc/scalar_type_hints_v5 function foo(int $i, string $j, bool $k) { }
  • 30. PHP7 scalar type hints  By default, scalar type hints are not honored  The default behavior is that PHP ignores those scalar type hints, but not compound ones (like it used to do) function foo(int $i, string $j, bool $k) { } foo(1, 1, 1); /* OK */ function foo(int $i, array $j) { } foo('baz', 'bar'); Fatal error: Argument 2 passed to foo() must be of the type array, string given
  • 31. PHP7 scalar type hints  PHP converts the scalar type hinted arguments function foo(int $i, string $j, bool $k) { var_dump(func_get_args()); } foo('12', 0, 'foo'); array(3) { [0]=> int(12) [1]=> string(1) "0" [2]=> bool(true) }
  • 32. PHP7 scalar type hints  PHP converts the scalar type hinted arguments, only when this is possible , if not, it emits a fatal error function foo(int $i, string $j, bool $k) { var_dump(func_get_args()); } foo('foo', 0, 'foo'); Fatal error: Argument 1 passed to foo() must be of the type integer, string given
  • 33. PHP7 scalar type hints errors  As Fatal Errors may now be catched, this can be used : function foo(int $i, string $j, bool $k) { var_dump(func_get_args()); } try { foo('foo', 0, 'foo'); } catch (TypeError $e) { echo $e->getMessage(); } Fatal error: Argument 1 passed to foo() must be of the type integer, string given
  • 34. PHP7 scalar type hints  PHP however allows you to declare strict type hints  honored for every future call  no implicit conversion anymore  strict checks must be turned on at function call-time  strick checks are file-bound (not global)  declare() must be the first file statement function foo(int $i, string $j, bool $k) { } foo(1, 'foo', true); /* OK */ declare(strict_types=1); foo('1', 'foo', 'baz'); /* fatal */
  • 35. PHP7 scalar type hints  strict mode is also relevant for return type hints : function foo(int $i) :string { return $i; } var_dump(foo("123 pigs")); string(3) "123" declare(strict_types=1); var_dump(foo(123)); Fatal error: Return value of foo() must be of the type string, integer returned
  • 36. PHP 7 new type hints  Scalar type hints and return types are independant features, one may be used without the other  However, they are both affected by the strict mode  Strict mode is file based only, it doesn't affect other required files  Strict mode is disabled by default  Strict mode may be turned on for every function calls, it doesn't impact function declarations at all
  • 37. Anonymous classes  Like anonymous functions var_dump( new class() { }); object(class@anonymous)#1 (0) { }
  • 38. Anonymous classes  Like anonymous functions $obj->setLogger(new class implements Logger { public function log($msg) { print_r($msg); } }); interface Logger { function log($m); } class Bar { function setLogger(Logger $l) { } } $obj = new Bar;
  • 39. PHP 7 new minor features  Added scanner mode INI_SCANNER_TYPED to yield typed .ini values  Added second parameter for unserialize() function allowing to specify acceptable classes  preg_replace_callback_array()  intdiv()  error_clear_last()  PHP_INT_MIN  random_bytes()  New assertion mechanism (more optimized, useful)  New session features (lazy writes, , read only ...)
  • 41. PHP 7 breakage  Syntax changes that break  Removals  Behavior changes
  • 42. PHP 7 Syntax changes  The compiler has been rewritten entirely  It is now based on an AST  You may use the AST using https://github.com/nikic/php-ast extension  Some syntax changes were necessary to support new features
  • 43. PHP 7 Syntax changes  Indirect variable, property and method references are now interpreted with left-to-right semantics $$foo['bar']['baz'] $foo->$bar['baz'] $foo->$bar['baz']() Foo::$bar['baz']() ($$foo)['bar']['baz'] ($foo->$bar)['baz'] ($foo->$bar)['baz']() (Foo::$bar)['baz']() ${$foo['bar']['baz']} $foo->{$bar['baz']} $foo->{$bar['baz']}() Foo::{$bar['baz']}() In PHP5
  • 44. PHP 7 Syntax changes  list() allows ArrayAccess objects (everytime)  list() doesn't allow unpacking strings anymore  Other minor changes to list() ... list($a, $b) = (object) new ArrayObject([0, 1]); /* $a == 0 and $b == 1 */ $str = "xy"; list($x, $y) = $str; /* $x == null and $y == null */ /* no error */
  • 45. PHP 7 Syntax changes  Invalid octal literals (containing digits > 7) now produce compile errors  Hexadecimal strings are not recognized anymore $i = 0781; // 8 is not a valid octal digit! /* Fatal error: Invalid numeric literal in */ var_dump("0x123" == "291"); var_dump(is_numeric("0x123")); var_dump("0xe" + "0x1"); bool(false) bool (false) int(0) bool(true) bool(true) int(16) In PHP5In PHP7
  • 46. PHP 7 Syntax changes  The new UTF-8 escape character u has been added  Only added in heredocs and double-quoted strings (as usual)  Codepoints above U+10FFFF generate an error  https://wiki.php.net/rfc/unicode_escape echo "u{262F}"; u{262F} ☯ In PHP7In PHP5
  • 47. PHP 7 Removals  Removed ASP (<%) and script (<script language=php>) tags  Removed support for assigning the result of new by reference  Removed support for #-style comments in ini files  $HTTP_RAW_POST_DATA is no longer available. Use the php://input stream instead.  bye bye call_user_method()/call_user_method_array() $a = &new stdclass; Parse error: syntax error, unexpected 'new' (T_NEW)
  • 48. PHP 7 Removals  Removed support for scoped calls to non-static methods from an incompatible $this context  In PHP7, $this will be undefined in this case class A { function foo() { var_dump(get_class($this)); } } class B { function bar() { A::foo(); } } $b = new B; $b->bar();
  • 49. PHP 7 Removals class A { function foo() { var_dump($this); } } class B { function bar() { A::foo(); } } $b = new B; $b->bar(); Deprecated: Non-static method A::foo() should not be called statically, assuming $this from incompatible context object(B) #1 Deprecated: Non-static method A::foo() should not be called statically Notice: Undefined variable: this in /tmp/7.php on line 4 In PHP5 In PHP7
  • 50. PHP 7 Removals  Other removals into extensions :  Date  Curl  DBA  GMP  Mcrypt  OpenSSL  PCRE  Standard  JSON  Many old SAPI removed (Apache1, roxen, tux, isapi ...)
  • 51. PHP 7 changed behaviors
  • 52. PHP 7 changed behaviors  Redefinition of function argument is no longer allowed function foo($a, $b, $b) { } Fatal error: Redefinition of parameter $b in ...
  • 53. PHP 7 changed behaviors  PHP4 constructor types now generate E_DEPRECATED, and will be removed in a next PHP  "Types" have been turned to reserved words against class/trait/interface names class Foo { public function foo() { } } /* E_DEPRECATED */ class String { } Fatal error: "string" cannot be used as a class name
  • 54. PHP 7 changed behaviors  Some reserved keywords in class context however, can now be used  Into a class context, expect the parser to be smoother now :  But you still cannot declare a const named 'class' Project::new('Foo')->private()->for('bar'); class baz { private function private() { } public function const() { } public function list() { } const function = 'bar'; }
  • 55. PHP 7 changed behaviors  func_get_arg() / func_get_args() now return the current scoped variable value function foo($x) { $x++; var_dump(func_get_arg(0)); } foo(1); (int)1 (int)2 In PHP7In PHP5
  • 56. PHP 7 changed behaviors  Exception traces now show the current scoped variable values function foo($x) { $x++; throw new Exception; } foo(1); Stack trace: #0 /tmp/php.php(7): foo(1) #1 {main} Stack trace: #0 /tmp/php.php(7): foo(2) #1 {main} In PHP7In PHP5
  • 57. PHP 7 changed behaviors  Left bitwise shifts by a number of bits beyond the bit width of an integer will always result in 0  Bitwise shifts by negative numbers will now throw a warning and return false var_dump(1 << 64); (int)1 (int)0 In PHP7In PHP5 var_dump(1 >> -1); (int)0 (bool)false Uncaught ArithmeticError In PHP7In PHP5
  • 58. PHP 7 changed behaviors  Iteration with foreach() no longer has any effect on the internal array pointer $array = [0, 1, 2]; foreach ($array as $val) { var_dump(current($array)); } int(1) int(1) int(1) int(0) int(0) int(0) In PHP7In PHP5
  • 59. PHP 7 changed behaviors  When iterating arrays by-reference with foreach(), modifications to the array will continue to influence the iteration. Correct position pointer is maintained $array = [0]; foreach ($array as &$val) { var_dump($val); $array[1] = 1; } int(0) int(0) int(1) In PHP7In PHP5
  • 60. PHP7 : Other changes  More generally , what before used to generate E_DEPRECATED is now removed, or may be very soon
  • 61. PHP 7 new engine
  • 62. PHP 7 new internals  Full 64bit support  New Thread Safety mechanism  New engine memory management  New optimized executor  New optimized structures
  • 63. PHP 7 full 64bit engine  PHP was known to be platform dependent on this crucial criteria  LP64: Linux64 (and most Unixes)  LLP64: Windows64  ILP64: SPARC64 http://www.unix.org/whitepapers/64bit.html string size signed integer Platform int long LP64 32 64 LLP64 32 32 ILP64 64 64
  • 64. PHP 7 full 64bit engine  PHP 7 now uses platform independant sizes  Strings > 2^31  Real 64bit userland PHP integers  LFS (Large File Support)  64bits hash keys  Whatever your platform (OS) : consistency
  • 65. PHP 7 new memory management  PHP7 has reworked every memory management routine  Use less heap and more stack  Zvals are stack allocated  refcount management more accurate  Scalar types are no longer refcounted  Redevelop a new MM heap, more optimized  Based on sized pools (small, medium and large)  CPU cache friendly  Concepts borrowed from tcmalloc
  • 66. PHP 7 thread safety  PHP7 has reworked its thread safety mechanism routine  PHP5 thread safety routine had a ~20% perf impact  This is no more the case in PHP7  TLS is now mature, and it is used  For PHP under Windows (mandatory)  For PHP under Unix, if asked for (usually not)
  • 67. PHP 7 new structures  Critical structures have been reworked  More memory friendly  More CPU friendly (data alignment, cache friendly)  Strings are now refcounted  Objects now share their refcount with other types  Wasn't the case in PHP5  The engine Executor uses a full new stack frame to push and manage arguments  Function calls have been heavilly reworked
  • 69. PHP 7 performances  A lot of tweaks have been performed against PHP 7 code performances.  A lot of internal changes - invisible to userland - have been performed to have a more performant language  CPU cache misses have been heavilly worked on  Spacial locality of code is improved  This results in a language beeing at least twice fast and that consumes at least twice less memory
  • 70. PHP 7 performances ... ... $x = TEST 0.664 0.269 $x = $_GET 0.876 0.480 $x = $GLOBALS['v'] 1.228 0.833 $x = $hash['v'] 1.048 0.652 $x = $str[0] 1.711 1.315 $x = $a ?: null 0.880 0.484 $x = $f ?: tmp 1.367 0.972 $x = $f ? $f : $a 0.905 0.509 $x = $f ? $f : tmp 1.371 0.976 ---------------------------------------------- Total 35.412 ... ... $x = TEST 0.400 0.223 $x = $_GET 0.616 0.440 $x = $GLOBALS['v'] 0.920 0.743 $x = $hash['v'] 0.668 0.491 $x = $str[0] 1.182 1.005 $x = $a ?: null 0.529 0.352 $x = $f ?: tmp 0.614 0.438 $x = $f ? $f : $a 0.536 0.360 $x = $f ? $f : tmp 0.587 0.411 ---------------------------------------------- Total 20.707 PHP7PHP5.6 Zend/micro_bench.php
  • 71. PHP 7 performances Time: 4.51 seconds, Memory: 726.00Mb Time: 2.62 seconds, Memory: 368.00Mb PHP7 PHP5.6 PHPUnit in Symfony2 components Time gain ~ 40% Memory gain ~ 50%
  • 72. PHP 7 performances  Take care of synthetic benchmarks  They only demonstrates basic use cases  Run your own benchmarks  Run your own applications against PHP 7  On a big average, you can expect dividing CPU time and memory consumption by a factor of 2 compared to PHP-5.6, probably even more than 2
  • 73. Thank you for listening !