SlideShare ist ein Scribd-Unternehmen logo
1 von 53
Downloaden Sie, um offline zu lesen
MIGRATING TO
NEW PHP VERSIONS
Washington DC, USA
TOWARDS PHP 70
Changing version is always a big challenge
Backward incompatibilities
New features
How to spot them ?
SPEAKER
Damien Seguy
CTO at exakat
Static code analysis for PHP
PHP LINTING
command line : php -l filename.php
Will only parse the code,
not execution
Will spot compilation problems
PHP -L WILL FIND
Short array syntax
Function subscripting
Code that won’t compile anyway
PHP 7 LINTING
Methods with the same name as their class will not be
constructors in a future version of PHP
Cannot use abcInt as Int because 'Int' is a special class
name
Switch statements may only contain one default clause
Redefinition of parameter $%s
syntax error, unexpected 'new' (T_NEW)
WHERE ELSE CODE WILL BREAK?
PHP running has 3 stages
parsed
compiled
executed
Checked with lint
Checked with data and UT
Checked code review
GETTING READY
http://php.net/manual/en/migration70.php
UPGRADING TO PHP 7, Davey Shafik
https://github.com/php/php-src/blob/master/
UPGRADING
https://github.com/php/php-src/blob/master/NEWS
get_headers() has an extra parameter in 7.1
WHAT WILL CHANGE?
Incompatible changes
Deprecated changes
Changed features
New features
INCOMPATIBILITIES
Features that were dropped
Features that were added
ADDED STRUCTURES
Functions Classes Constants
5.3 40 2 80
5.4 0 9 78
5.5 12 11 57
5.6 1 10 10
7.0 10 10 41
Total 1293 153 1149
NAME IMPACT
get_resources(), intdiv()
PREG_JIT_STACKLIMIT_ERROR
Error, Date
REMOVED FEATURES
$HTTP_RAW_POST_DATA
Replace it by php://input
php://input is now reusable
REMOVED FEATURES
ext/mysql
Look for mysql_* functions
Probably in Db/Adapter
ext/ereg
ereg, ereg_replace, split, sql_regcase
USORT
<?php
$array = array(
    'foo',
    'bar',
    'php'
);
usort($array, function($a, $b) {
    return 0;
}
);
print_r($array);
Array
(
[0] => php
[1] => bar
[2] => foo
)
Array
(
[0] => foo
[1] => bar
[2] => php
)
PHP 5
PHP 7
WHERE TO LOOK FOR ?
Find the name of the structure (function name…)
Grep, or IDE’s search function will help you
$HTTP_RAW_POST_DATA
Look for mysql_*
Look ereg, split, usort
PREG_REPLACE AND /E
preg_replace(‘/ /e’, ‘evaled code’, $haystack)
replaced preg_replace_callback(‘/ /‘, closure, $haystack)
preg_replace_callback_array()
PREG_REPLACE_CALLBACK_ARRAY
<?php 
$code = "abbbb";
$spec = 'c';
echo preg_replace_callback_array(
    array(
        "/a/" => function($matches) {
                        return strtoupper($matches[0]);
                 },
        "/b/" => function($matches) use ($spec) {
static $i = 0;
$i++;
               return "B$i$spec";
        }
    ), $code);
AB1cB2cB3cB4c
DEFAULT_CHARSET
iconv.input_encoding
iconv.output_encoding
iconv.internal_encoding
mbstring.http_input
mbstring.http_output
mbstring.internal_encoding
default_charset
DEFAULT_CHARSET
htmlentities()
PHP 5.3 : ISO-8859-1
PHP 5.4 : UTF-8
PHP 5.6 : default_charset (also UTF 8)
WHERE TO LOOK FOR ?
preg_replace
Search for preg_replace function calls
Refine with /e, multiples calls
default_charset
Search for ini_set, ini_get, ini_get_all, ini_restore, get_cfg_var
Seach in php.ini, .htaccess
Search for htmlentities(), html_entity_decode() and htmlspecialchars()
DEPRECATED FEATURES
Methods with the same name as their
class will not be constructors in a
future version of PHP; foo has a
deprecated constructor
Not happening if a parent case has a __constructor()
Not happening if the class is in a namespace
Deprecated: Methods with the same name as their class
will not be constructors in a future version of PHP;
foo has a deprecated constructor
PHP 4 CONSTRUCTORS
Use the E_DEPRECATED error level while in DEV
Check the logs
CALL-TIME PASS-BY-REFERENCE
References are in the function signature
Deprecated warnings until PHP 7
A nice Parse error in PHP 7
<?php  
$a = 3;  
function f($b) {  
    $b++;  
}  
f(&$a);  
print $a;  
?>
PHP Parse error: syntax error, unexpected '&' in
WHERE TO LOOK FOR ?
Use error level
Set error_level to maximum
Spot errors in the log
Refine
Great to reduce log size
INCOMPATIBLE CONTEXT
<?php 
class A { 
     function f() { echo get_class($this); } 
} 
A::f(); 
?>
Notice: Undefined variable: this in
A
Deprecated: Non-static method A::f() should not be called statically in
Notice: Undefined variable: this in
A
EASY TO SPOT
Use the E_DEPRECATED or strict while in DEV
Strict Standards: Non-static method A::f() should not
be called statically in test.php on line 6
Deprecated: Non-static method A::f() should not be
called statically in test.php on line 6
CHANGED BEHAVIOR
Indirect expressions
SEARCH FOR SITUATIONS
Search for :: operator
Get the class
then the method
then the static keyword
Needs a automated auditing tool
Exakat, Code sniffer, IDE
STATIC ANALYZIS
PHP 5, PHP 7
Psr-4
ClearPHP
Performance
 
 

SUMMARY
PHP lint is your friend
Search in the code
With Grep
Directly, or indirectly
With the logs
Use static analysis tools
NEW FEATURES
They require willpower
Breaks backward compatibility
FUD
Search for places to apply them like for
incompatibilities
NEW FEATURES
Fixing
Modernization
New feature
FIXING
EMPTY() UPGRADE
No need anymore to expressions in a variable for empty()!
Fatal error: Can't use function return value in write context in test.php on line 6
5.5
<?php  
function myFunction() { 
    return -2 ; 
} 
if (empty(myFunction() + 2)) { 
    echo "This means 0!n"; 
} 
?>
MODERNIZATION
SPACESHIP OPERATOR
Replaces a lot of code
Mainly useful for usort and co
Very Cute
<?php 
// PHP 5.6
if ($a > $b) {
 echo 1;
} elseif ($a < $b) {
  echo -1;
} else {
  echo 0;
}
// PHP 7.0
echo $a <=> $b; // 0
NULL-COALESCE
Shorter way to give a test for NULL and failover
<?php 
// PHP 5.6
$x = $_GET['x'] === null ? 'default' : $_GET['x'];
// PHP 7.0
$x = $_GET['x'] ?? 'default';
?>
DIRNAME() SECOND ARG
<?php  
$path = '/a/b/c/d/e/f';
// PHP 5.6
$root = dirname(dirname(dirname($x)));
// PHP 7
$root = dirname($path, 3);
?>
… VARIADIC
replaces func_get_args()
Easier to read
<?php 
// PHP 5.5
function array_power($pow) {  
   $integers = func_get_args();
   array_unshift($integers);
   foreach($integers as $i) {  
      print "$i ^ $pow  = ". pow($i, $pow)."n";
   }  
}  
   
// PHP 7.0
function array_power($pow, ...$integers) {  
   foreach($integers as $i) {  
      print "$i ^ $pow  = ". ($i ** $pow)."n"; 
   }  
5.6
VARIADIC …
<?php 
// Avoid! 
foreach($source as $x) {
  if (is_array($x))
     $final = array_merge($final, $x);
  }
}
VARIADIC …
<?php 
$collection = [];
foreach($source as $x) {
  if (is_array($x))
     $collection[] = $x;
  }
}
// PHP 5.5
$final = call_user_func_array('array_merge', $collection);
   
// PHP 7.0
$final = array_merge(...$collection);
REALLY NEW
SCALAR TYPE TYPEHINT
Whenever type is tested
<?php  
function foo(string $x) {
   if (!is_string($x)) {
     throw new Exception('Type error while calling '.__FUNCTION__);
   }
}
GENERATORS
<?php  
function factors($limit) { 
    yield 2; 
    yield 3;
    yield from prime_database();
    for ($i = 1001; $i <= $limit; $i += 2) { 
        yield $i; 
    } 
} 
$prime = 1357; 
foreach (factors(sqrt($prime)) as $n) { 
    echo "$n ". ($prime % $n ? ' not ' : '') . " factorn"; 
}
GENERATORS
New yield keyword
Save memory from
n down to 1 value
Good for long or infinite loops
Search for range(), for() or loops
literals, database result sets, file lines
<?php  
class Version { 
    const MAJOR = 2; 
    const MIDDLE = ONE; 
    const MINOR = 1; 
    const FULL = Version::MAJOR.'.'.Version::MIDDLE.'.'.Version::MINOR.
'-'.PHP_VERSION; 
    const SHORT = Version::MAJOR.'.'.Version::MIDDLE; 
    const COMPACT = Version::MAJOR.Version::MIDDLE.Version::MINOR; 
    const AN_ARRAY = [1,2,3,4];
    public function f($a = (MAJOR == 2) ? 3 : Version::MINOR ** 3) { 
        return $a; 
    } 
}
CONSTANT SCALAR EXPRESSIONS
Code automation
Keep it simple
Won’t accept functioncalls
Won't accept variables
CONSTANT SCALAR EXPRESSIONS
Lots of properties should be constants
<?php  
class Version { 
    const SUPPORTED = ['1.0', '1.1', '2.0', '2.1'];
    private $an_array = [1,2,3,4];
    public function isSupported($x) { 
        return isset(Version::SUPPORTED[$x]);
    } 
}
SUMMARY
Check the manuals
PHP lint is your friend
Search in the code
Use static analysis tools
THANK YOU!
damien.seguy@gmail.com
http://joind.in/talk/view/14770

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

PLSQL Coding Guidelines - Part 6
PLSQL Coding Guidelines - Part 6PLSQL Coding Guidelines - Part 6
PLSQL Coding Guidelines - Part 6
 
2021.laravelconf.tw.slides2
2021.laravelconf.tw.slides22021.laravelconf.tw.slides2
2021.laravelconf.tw.slides2
 
PL/SQL & SQL CODING GUIDELINES – Part 7
PL/SQL & SQL CODING GUIDELINES – Part 7PL/SQL & SQL CODING GUIDELINES – Part 7
PL/SQL & SQL CODING GUIDELINES – Part 7
 
PHP slides
PHP slidesPHP slides
PHP slides
 
Php exceptions
Php exceptionsPhp exceptions
Php exceptions
 
PHP
PHPPHP
PHP
 
Php.ppt
Php.pptPhp.ppt
Php.ppt
 
PHP
PHPPHP
PHP
 
Php string function
Php string function Php string function
Php string function
 
Static Analysis of PHP Code – IPC Berlin 2016
Static Analysis of PHP Code – IPC Berlin 2016Static Analysis of PHP Code – IPC Berlin 2016
Static Analysis of PHP Code – IPC Berlin 2016
 
Listen afup 2010
Listen afup 2010Listen afup 2010
Listen afup 2010
 
Introduction to PHP
Introduction to PHPIntroduction to PHP
Introduction to PHP
 
How to write maintainable code without tests
How to write maintainable code without testsHow to write maintainable code without tests
How to write maintainable code without tests
 
Continuous Quality Assurance
Continuous Quality AssuranceContinuous Quality Assurance
Continuous Quality Assurance
 
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
 
PHP - Introduction to PHP Error Handling
PHP -  Introduction to PHP Error HandlingPHP -  Introduction to PHP Error Handling
PHP - Introduction to PHP Error Handling
 
Php mysql ppt
Php mysql pptPhp mysql ppt
Php mysql ppt
 
Handling error & exception in php
Handling error & exception in phpHandling error & exception in php
Handling error & exception in php
 
PHP - Introduction to PHP - Mazenet Solution
PHP - Introduction to PHP - Mazenet SolutionPHP - Introduction to PHP - Mazenet Solution
PHP - Introduction to PHP - Mazenet Solution
 
Trying to learn C# (NDC Oslo 2019)
Trying to learn C# (NDC Oslo 2019)Trying to learn C# (NDC Oslo 2019)
Trying to learn C# (NDC Oslo 2019)
 

Andere mochten auch

Smartphones & Mobile Internet
Smartphones & Mobile InternetSmartphones & Mobile Internet
Smartphones & Mobile Internet
TOG International
 
MANJUSHREE PALIT CV_April 2016
MANJUSHREE PALIT CV_April 2016MANJUSHREE PALIT CV_April 2016
MANJUSHREE PALIT CV_April 2016
Manjushree Palit
 

Andere mochten auch (16)

Wikis
WikisWikis
Wikis
 
Ego For You
Ego For YouEgo For You
Ego For You
 
Smartphones & Mobile Internet
Smartphones & Mobile InternetSmartphones & Mobile Internet
Smartphones & Mobile Internet
 
Biblioteca virtual
Biblioteca virtualBiblioteca virtual
Biblioteca virtual
 
MANJUSHREE PALIT CV_April 2016
MANJUSHREE PALIT CV_April 2016MANJUSHREE PALIT CV_April 2016
MANJUSHREE PALIT CV_April 2016
 
Comercio internacional
Comercio internacionalComercio internacional
Comercio internacional
 
Fhc z'dublin'i planning without robot
Fhc z'dublin'i planning without robotFhc z'dublin'i planning without robot
Fhc z'dublin'i planning without robot
 
Veterinaria
VeterinariaVeterinaria
Veterinaria
 
OnlineTyari Case Study
OnlineTyari Case StudyOnlineTyari Case Study
OnlineTyari Case Study
 
Kesha Skirnevskiy, Zebrainy
Kesha Skirnevskiy, ZebrainyKesha Skirnevskiy, Zebrainy
Kesha Skirnevskiy, Zebrainy
 
Alexander Lukin, Yandex
Alexander Lukin, YandexAlexander Lukin, Yandex
Alexander Lukin, Yandex
 
Eugene Krasichkov, Intel
Eugene Krasichkov, IntelEugene Krasichkov, Intel
Eugene Krasichkov, Intel
 
Andrey Zimenko, WG Labs
Andrey Zimenko, WG LabsAndrey Zimenko, WG Labs
Andrey Zimenko, WG Labs
 
Matthew Wilson, Director of Business Development, Rovio Entertainment
Matthew Wilson, Director of Business Development, Rovio EntertainmentMatthew Wilson, Director of Business Development, Rovio Entertainment
Matthew Wilson, Director of Business Development, Rovio Entertainment
 
Hunt for dead code
Hunt for dead codeHunt for dead code
Hunt for dead code
 
Huerta de las Pilas - Acuifero english version
Huerta de las Pilas - Acuifero   english versionHuerta de las Pilas - Acuifero   english version
Huerta de las Pilas - Acuifero english version
 

Ähnlich wie Preparing for the next php version

PHP 5.3 Overview
PHP 5.3 OverviewPHP 5.3 Overview
PHP 5.3 Overview
jsmith92
 
3. build your own php extension ai ti aptech
3. build your own php extension   ai ti aptech3. build your own php extension   ai ti aptech
3. build your own php extension ai ti aptech
Quang Anh Le
 
07 build your-own_php_extension
07 build your-own_php_extension07 build your-own_php_extension
07 build your-own_php_extension
Nguyen Duc Phu
 

Ähnlich wie Preparing for the next php version (20)

Php 7 compliance workshop singapore
Php 7 compliance workshop singaporePhp 7 compliance workshop singapore
Php 7 compliance workshop singapore
 
Last train to php 7
Last train to php 7Last train to php 7
Last train to php 7
 
Start using PHP 7
Start using PHP 7Start using PHP 7
Start using PHP 7
 
Preparing for the next PHP version (5.6)
Preparing for the next PHP version (5.6)Preparing for the next PHP version (5.6)
Preparing for the next PHP version (5.6)
 
Php7 HHVM and co
Php7 HHVM and coPhp7 HHVM and co
Php7 HHVM and co
 
PHP 8: What's New and Changed
PHP 8: What's New and ChangedPHP 8: What's New and Changed
PHP 8: What's New and Changed
 
Php7 hhvm and co
Php7 hhvm and coPhp7 hhvm and co
Php7 hhvm and co
 
Giới thiệu PHP 7
Giới thiệu PHP 7Giới thiệu PHP 7
Giới thiệu PHP 7
 
Damien seguy php 5.6
Damien seguy php 5.6Damien seguy php 5.6
Damien seguy php 5.6
 
Building Testable PHP Applications
Building Testable PHP ApplicationsBuilding Testable PHP Applications
Building Testable PHP Applications
 
Living With Legacy Code
Living With Legacy CodeLiving With Legacy Code
Living With Legacy Code
 
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?
 
PHP 5.3 Overview
PHP 5.3 OverviewPHP 5.3 Overview
PHP 5.3 Overview
 
[4developers2016] PHP 7 (Michał Pipa)
[4developers2016] PHP 7 (Michał Pipa)[4developers2016] PHP 7 (Michał Pipa)
[4developers2016] PHP 7 (Michał Pipa)
 
Review unknown code with static analysis
Review unknown code with static analysisReview unknown code with static analysis
Review unknown code with static analysis
 
Preparing code for Php 7 workshop
Preparing code for Php 7 workshopPreparing code for Php 7 workshop
Preparing code for Php 7 workshop
 
Guidelines php 8 gig
Guidelines php 8 gigGuidelines php 8 gig
Guidelines php 8 gig
 
PHP 7 - Above and Beyond
PHP 7 - Above and BeyondPHP 7 - Above and Beyond
PHP 7 - Above and Beyond
 
3. build your own php extension ai ti aptech
3. build your own php extension   ai ti aptech3. build your own php extension   ai ti aptech
3. build your own php extension ai ti aptech
 
07 build your-own_php_extension
07 build your-own_php_extension07 build your-own_php_extension
07 build your-own_php_extension
 

Mehr von Damien Seguy

Mehr von Damien Seguy (20)

Strong typing @ php leeds
Strong typing  @ php leedsStrong typing  @ php leeds
Strong typing @ php leeds
 
Strong typing : adoption, adaptation and organisation
Strong typing : adoption, adaptation and organisationStrong typing : adoption, adaptation and organisation
Strong typing : adoption, adaptation and organisation
 
Qui a laissé son mot de passe dans le code
Qui a laissé son mot de passe dans le codeQui a laissé son mot de passe dans le code
Qui a laissé son mot de passe dans le code
 
Analyse statique et applications
Analyse statique et applicationsAnalyse statique et applications
Analyse statique et applications
 
Top 10 pieges php afup limoges
Top 10 pieges php   afup limogesTop 10 pieges php   afup limoges
Top 10 pieges php afup limoges
 
Top 10 php classic traps DPC 2020
Top 10 php classic traps DPC 2020Top 10 php classic traps DPC 2020
Top 10 php classic traps DPC 2020
 
Meilleur du typage fort (AFUP Day, 2020)
Meilleur du typage fort (AFUP Day, 2020)Meilleur du typage fort (AFUP Day, 2020)
Meilleur du typage fort (AFUP Day, 2020)
 
Top 10 php classic traps confoo
Top 10 php classic traps confooTop 10 php classic traps confoo
Top 10 php classic traps confoo
 
Tout pour se préparer à PHP 7.4
Tout pour se préparer à PHP 7.4Tout pour se préparer à PHP 7.4
Tout pour se préparer à PHP 7.4
 
Top 10 php classic traps php serbia
Top 10 php classic traps php serbiaTop 10 php classic traps php serbia
Top 10 php classic traps php serbia
 
Top 10 php classic traps
Top 10 php classic trapsTop 10 php classic traps
Top 10 php classic traps
 
Top 10 chausse trappes
Top 10 chausse trappesTop 10 chausse trappes
Top 10 chausse trappes
 
Code review workshop
Code review workshopCode review workshop
Code review workshop
 
Understanding static analysis php amsterdam 2018
Understanding static analysis   php amsterdam 2018Understanding static analysis   php amsterdam 2018
Understanding static analysis php amsterdam 2018
 
Review unknown code with static analysis php ce 2018
Review unknown code with static analysis   php ce 2018Review unknown code with static analysis   php ce 2018
Review unknown code with static analysis php ce 2018
 
Everything new with PHP 7.3
Everything new with PHP 7.3Everything new with PHP 7.3
Everything new with PHP 7.3
 
Php 7.3 et ses RFC (AFUP Toulouse)
Php 7.3 et ses RFC  (AFUP Toulouse)Php 7.3 et ses RFC  (AFUP Toulouse)
Php 7.3 et ses RFC (AFUP Toulouse)
 
Tout sur PHP 7.3 et ses RFC
Tout sur PHP 7.3 et ses RFCTout sur PHP 7.3 et ses RFC
Tout sur PHP 7.3 et ses RFC
 
Review unknown code with static analysis php ipc 2018
Review unknown code with static analysis   php ipc 2018Review unknown code with static analysis   php ipc 2018
Review unknown code with static analysis php ipc 2018
 
Code review for busy people
Code review for busy peopleCode review for busy people
Code review for busy people
 

Kürzlich hochgeladen

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Kürzlich hochgeladen (20)

Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 

Preparing for the next php version