SlideShare a Scribd company logo
1 of 84
Download to read offline
JavaScript for PHP developers
Stoyan Stefanov

March 11, 2011
Confoo.ca, Montreal
Stoyan Stefanov
¤  SAP Labs in Montreal

¤  Yahoo! Music, Web Performance, Search,
  YSlow, smush.it
¤  Facebook
Stoyan Stefanov - Books
JavaScript – first impressions
DOM/BOM
¤  These days libraries can take care of most pains

¤  Let’s focus on the core JavaScript (ECMAScript)
  language
JavaScript core
¤  C-like syntax

¤  Small built-in API
  ¤  (I’ll show you most of it in 15 minutes)
Strange things
¤  Functions are objects

¤  Functions provide scope

¤  Closures (in PHP since 5.3)

¤  Prototypes

¤  No classes
Syntax
Mostly the same as PHP
Variables
var n = 1;	
	
    $n = 1;
Variables
var b = true;	
	
    $b = true;
Variables
var s = "confoo";	
	
    $s = "confoo";
Arrays
var a =       [1,2,3];	
	
    $a = array(1,2,3);
Assoc arrays
var o = {	
  	     	   	"one": 1,	
  	     	   	"two": 2	
  	     	 };	
   $o = array(	
  	     	   	"one" => 1,	
  	     	   	"two" => 2	
  	     	 );
if
if (1 === 1) {	
 	universe = "fine";	
};	
if (1 === 1) {	
 	$universe = "fine";	
};
falsy values
0, "", false, undefined, null	
	
0 == ""    // true	
0 === "" // false
switch
var a = 1;	
var result = "";	
switch (a) {	
     case 1:     // strict comparison	
       result = "a is 1"; 	
       break;	
     default:	
       result = "@#$";	
}
try-catch
try {	
     throw new Error('ouch');	
} catch (e) {	
     msg = e.message;	
}	
try {	
     throw new Exception('ouch');	
} catch (Exception $e) {	
     $msg = $e->getMessage();	
}
while
var i = 0, out = '';	
while (i < 100) {	
     out += ++i + ",";	
}	
$i = 0; $out = '';	
while ($i < 100) {	
     $out .= ++$i . ",";	
}
do-while
var i = 0, out = '';	
do {	
  out += ++i + ",";	
} while (i < 100);	
$i = 0; $out = '';	
do {	
  $out .= ++$i . ",";	
} while ($i < 100);
for
for (var i = 0, out = ''; i < 100; i++) {	
     out += i + ',';	
}	
	
for ($i = 0, $out = ''; $i < 100; $i++) {	
     $out .= $i . ',';	
}
for-in/foreach
for (var k in stuff) {	
     keys += k;	
     values += stuff[k];	
}	
foreach ($stuff as $k => $v) {	
     $keys .= $k;	
     $values .= $v;	
}
function
function junction(a, b) {	
     return a * b;	
}	
function junction($a, $b) {	
     return $a * $b;	
}
function
function junction(a, b) {	
     b = b || 2;	
     return a * b;	
}	
function junction($a, $b = 2) {	
     return $a * $b;	
}
function
function junction(a, b) {	
     b = typeof b !== "undefined" ? b : 2;	
     return a * b;	
}	
function junction($a, $b = 2) {	
     return $a * $b;	
}
functions are objects
var junction = function (a, b) {	
  return a * b;	
};	
junction(3, 4); // 12	
junction.length; // 2
functions are objects
junction.call(null, 3, 4); // 12	

junction.apply(null, [3, 4]); // 12	

	

	

	

call_user_func('junction', 3, 4);	

call_user_func_array('junction', array(3, 4));
closures
var junction = function (a, b) {	
  return a * b;	
};	
junction(3, 4); // 12	
$junction = function($a, $b) {	
  return $a * $b;	
};	
$junction(3, 4); // 12
function scope
$a = function() {	

  $c = 3;	

  $b = function($a, $b) {	

      return $c * $a * $b;	

  };	

  return $b;	

};	

$b = $a();	

$b(1, 2); // 0 in PHP, 6 in JS
Constructors/Classes
var fido = new Dog();	
	
	
    $fido = new Dog();
PHP Class
class Dog {	

     var $name;	

     function __construct($name) {	

          $this->name = $name;	

     } 	

     function getName() {	

          return $this->name;	

     }	
                                  $fido = new Dog("Fido");	
}	                                $fido->getName(); // Fido
JS constructor function
function Dog (name) {	

     this.name = name;	

     this.getName = function () {	

       return this.name;	

     };	

}	

var fido = new Dog("Fido");	

fido.getName();
JS constructor function
¤  Constructors are just functions

¤  Functions called with new…	

¤  …return this…	

¤  …implicitly.
Constructor and prototype
function Dog (name) {	

     this.name = name;	

}	

Dog.prototype.getName = function () {	

     return this.name;	

};	

var fido = new Dog("Fido");	

fido.getName();
Prototypes
¤  Every function has a prototype property

¤  It’s useless, unless …

¤  … the functions is called with new.
Constructor and prototype
function Dog (name) {	

     this.name = name;	

}	

Dog.prototype.getName = function () {	

     return this.name;	

};	

var fido = new Dog("Fido");	

fido.getName(); // Fido
Object literals
var fido = {	
  name: "Fido",	
  getName: function() {	
       return this.name;	
  }	
};	
fido.getName(); // Fido
Object literals
var fido = {};
Object literals
var fido = {};	
fido.name = "Fido";
Object literals
var fido = {	
    name: "Fido" 	
};	
	
fido.name; // Fido
Object literals
var fido = {	
  name: "Fido",	
  getName: function() {	
       return this.name;	
  }	
};	
fido.getName(); // Fido
Literals
var fido = {};	
fido.name = "Fido";	
	
$fido = (object) array();	
$fido->name = "Fido";	
	
$fido = new stdClass();	
$fido->name = "Fido";
Literals in PHP
$fido = (object)array();	
$fido->name = 'Fido';	
$fido->getName = function() {	
    return $GLOBALS['fido']->name;	
};	
	
$method = $fido->getName;	
echo $method();
Literals in PHP
$fido = new JSObject();	
$fido->name = 'Fido';	
$fido->getName = function($self) {	
    return $self->name;	
};	
	
$fido->getName(); // Fido
Literals in PHP
class JSObject {	

     function __call($name, $args) {	

          if (is_callable($this->$name)) {	

               array_unshift($args, $this);	

               return call_user_func_array($this->$name, $args);	

          }	

     }	

}
Funny operators
¤  typeof
  ¤  typeof 1; // "number"	
  ¤  typeof(1);	

¤  instanceof
  ¤  ([1,2]) instanceof Array; // true	
  ¤  ([1,2]) instanceof Object; // true	

¤  delete
  ¤  var o = {a: 1}; delete o.a; o.a; // undefined	

¤  void
  ¤  returns undefined whatever the operand
The built-in API
In 15 minutes or less
Global object
¤  something Like $GLOBALS[] but object

¤  May or may not be accessible directly

¤  Accessible as window in browsers
3 global properties
¤  NaN	

¤  Infinity	

¤  undefined
9 global functions
¤  4 number-related                PHP:
  ¤  parseInt()	                intval()	
  ¤  parseFloat()	            floatval()	
  ¤  isNaN()	                   is_nan()	
  ¤  isFinite()	             is_finite()	

¤  4 to encode/decode URIs
  ¤  encodeURIComponent()	   urlencode()	
  ¤  decodeURIComponent()	   urldecode()	
  ¤  encodeURI()	                   ??()	
  ¤  decodeURI()	                   ??()	

¤  eval()	                      eval()
9+ constructors
¤  Object()	

¤  Array()	

¤  RegExp()	

¤  Function()	

¤  String()	

¤  Number()	

¤  Boolean()	

¤  Error(), SyntaxError()…	

¤  Date()
We don’t need no constructors
¤  object literals	

// yep	
var o = {};	
// nope	
var o = new Object();
We don’t need no constructors
¤  array literals	

// yep	
var a = [];	
// nope	
var a = new Array();
We don’t need no constructors
¤  regular expression literals	

// yep	
var re = /[a-z]/gmi;	
// proly nope	
var re = new RegExp("[a-z]", "gmi");
We don’t need no constructors
¤  functions	

// yep	
var f = function(a, b) {return a + b;};	
// yep	
function f(a, b) {return a + b;}	
//   nope	
var f = new Function("a, b",	
     	     	     	   	   "return a + b;");
We don’t need no constructors
¤  strings	

// yep	
var s = "confoo";	
// nope	
var s = new String("confoo");	
	
s.substr(3); // "foo"	
"confoo".substr(0, 4); // "conf"
We don’t need no constructors
¤  numbers	

// yep	
var n = 1.2345;	
// nope	
var n = new Number(1.2345);	
	
n.toFixed(2); // 1.23
We don’t need no constructors
¤  boolean	

// yep	
var b = true;	
// nope, why would you ever	
var b = new Boolean(true);
We don’t need no constructors
¤  Errors	

throw new Error("Ouch");	
// but you could also	
throw {	
   name: "MyError",	
   message: "Ouch"	
};
Constructors
¤  Object()	

¤  Array()	

¤  RegExp()	

¤  Function()	

¤  String()	

¤  Number()	

¤  Boolean()	

¤  Error(), SyntaxError()…	


¤  Date()
The built-in API (contd.)
Properties and methods
Object.prototype
var o = {}; 	
o.toString(); // "[object Object]"	
o.toLocaleString(); // "[object Object]"	
o.valueOf() === o; // true	
o.hasOwnProperty('toString'); // false 	

o.propertyIsEnumerable('toString'); // false	
o.isPrototypeOf(Array); // false	
o.constructor === Object; // true
Array.prototype
var a = [1,2,3,4];	
a.length; // 4	
a.push('dude'); // 5, the length	
a.pop(); // "dude"	
a.unshift('dude'); // 5, the length	
a.shift(); // "dude"	
a.concat(5,6,7); // [1,2,3,4,5,6,7]
Array.prototype
a.sort(callback); 	
a.indexOf(3); // 2	
a.lastIndexOf(3); // 2	
a.slice(1, 3);   // [2, 3]	
a.splice(...); // remove and add	
a.reverse(); // [4, 3, 2, 1]	
a.join(' > '); // implode()
RegExp.prototype
var re = /[a-z]/gmi;	
	
re.exec("somestring"); // returns matches	
re.test("somestring"); // returns true|false	
	

re.lastIndex;	
re.source; // "[a-z]"	
	
/[0-9]/g.global;        // true	
/[0-9]/m.multiline;     // true	
/[0-9]/i.ignoreCase; // true
Function.prototype
¤  length	

¤  name // not standard	

¤  call()	

¤  apply()
String.prototype
var s = "confoo";           	
s.length; // 6	
s.indexOf('o'); // 1	
s.lastIndexOf('o'); // 5	
s.charAt(1); // "o"	
s.charCodeAt(1); // 111
String.prototype
s.toLowerCase();	
s.toUppercase();	
s.toLocaleLowerCase();	
s.toLocaleUpperCase();	
s.localeCompare();
String.prototype
s.split(/f/); // ["con", "oo"]	
s.concat('.ca'); // "confoo.ca"	
s.search(/foo/); // 3	
s.replace(/o/g, "@"); // c@nf@@	
s.match(/[a-z]/g); // ["c", "o", "n", ..	
s.slice(3, 6); // "foo"	
s.substring(0, 3); // "con", substr() too
Number.protoype
new Number(123).toFixed(2); // "123.00"	
(1000000000000).toExponential(); // "1e+12"	
(1000000000000).toPrecision(3);   // "1.00e+12"	
	
Number.MAX_VALUE; // 1.7976931348623157e+308	
Number.MIN_VALUE; // 5e-324	
Number.POSITIVE_INFINITY; // Infinity	
Number.NEGATIVE_INFINITY; // -Infinity	
Number.NaN; // NaN
Math
¤  Not a constructor

¤  Constants

    	Math.E, Math.PI... and 6 more	
¤  Methods

    	Math.min(), Math.max(), 	
    	Math.random(), Math.sin() 	
    	... and 14 more
Error.prototype
¤  name	

¤  message
Date.prototype
¤  You’re on your own!
var d = new Date(2011, 3, 11);	

d.getDate(); d.getDay(); d.getFullYear(); d.getHours();
d.getMilliseconds(); d.getMinutes(); d.getMonth();
d.getSeconds(); d.getTime(); d.getTimezoneOffset();
d.getUTCDate(); d.getUTCDay(); d.getUTCFullYear();
d.getUTCHours(); d.getUTCMilliseconds(); d.getUTCMinutes();
d.getUTCMonth(); d.getUTCSeconds(); d.getYear(); d.setDate();
d.setFullYear(); d.setHours(); d.setMilliseconds();
d.setMinutes(); d.setMonth(); d.setSeconds(); d.setTime();
d.setUTCDate(); d.setUTCFullYear(); d.setUTCHours();
d.setUTCMilliseconds(); d.setUTCMinutes(); d.setUTCMonth();
d.setUTCSeconds(); d.setYear(); d.toDateString();
d.toGMTString(); d.toLocaleDateString(); d.toLocaleFormat();
d.toLocaleTimeString(); d.toString(); d.toTimeString();
d.toUTCString();	

Date.now(); Date.parse(); Date.UTC();
Constructors
¤  Object()	

¤  Array()	

¤  RegExp()	

¤  Function()	

¤  String()	

¤  Number() + Math	

¤  Boolean()	

¤  Error(), SyntaxError()…	

¤  Date()
Quiz
What have we learned today?
¤  JavaScript has classes



      C
¤  Arrays are objects



      C
¤  Functions are objects



      C
¤  Classes have a prototype property




      C
¤  Objects have a prototype property




      C
¤  Functions have a prototype
 property



      C
¤  Prototype properties are used with
   new	



      C
phpjs.org
¤  When you miss a PHP function in JavaScript
Learning
¤  https://developer.mozilla.org/en/JavaScript/
  Reference
¤  ECMAScript tweeps: @DmitrySoshnikov,
  @abozhilov, @kangax, @WebReflection
¤  http://jsmentors.com




¤  Slides: http://slideshare.net/stoyan/
Thank you!

More Related Content

What's hot

Scalable JavaScript Design Patterns
Scalable JavaScript Design PatternsScalable JavaScript Design Patterns
Scalable JavaScript Design PatternsAddy Osmani
 
Understanding Object Oriented Javascript - Coffee@DBG June
Understanding Object Oriented Javascript - Coffee@DBG JuneUnderstanding Object Oriented Javascript - Coffee@DBG June
Understanding Object Oriented Javascript - Coffee@DBG JuneDeepu S Nath
 
JavaScript 1 for high school
JavaScript 1 for high schoolJavaScript 1 for high school
JavaScript 1 for high schooljekkilekki
 
Javascript Prototype Visualized
Javascript Prototype VisualizedJavascript Prototype Visualized
Javascript Prototype Visualized军 沈
 
The many facets of code reuse in JavaScript
The many facets of code reuse in JavaScriptThe many facets of code reuse in JavaScript
The many facets of code reuse in JavaScriptLeonardo Borges
 
Javascript basics
Javascript basicsJavascript basics
Javascript basicsSolv AS
 
TypeScript Introduction
TypeScript IntroductionTypeScript Introduction
TypeScript IntroductionDmitry Sheiko
 
Google Guava - Core libraries for Java & Android
Google Guava - Core libraries for Java & AndroidGoogle Guava - Core libraries for Java & Android
Google Guava - Core libraries for Java & AndroidJordi Gerona
 
Learn JavaScript by modeling Rubik Cube
Learn JavaScript by modeling Rubik CubeLearn JavaScript by modeling Rubik Cube
Learn JavaScript by modeling Rubik CubeManoj Kumar
 
From android/java to swift (3)
From android/java to swift (3)From android/java to swift (3)
From android/java to swift (3)allanh0526
 
Type Driven Development with TypeScript
Type Driven Development with TypeScriptType Driven Development with TypeScript
Type Driven Development with TypeScriptGarth Gilmour
 
Let's refine your Scala Code
Let's refine your Scala CodeLet's refine your Scala Code
Let's refine your Scala CodeTech Triveni
 
Stuff you didn't know about action script
Stuff you didn't know about action scriptStuff you didn't know about action script
Stuff you didn't know about action scriptChristophe Herreman
 
Justjava 2007 Arquitetura Java EE Paulo Silveira, Phillip Calçado
Justjava 2007 Arquitetura Java EE Paulo Silveira, Phillip CalçadoJustjava 2007 Arquitetura Java EE Paulo Silveira, Phillip Calçado
Justjava 2007 Arquitetura Java EE Paulo Silveira, Phillip CalçadoPaulo Silveira
 
bullismo e scuola primaria
bullismo e scuola primariabullismo e scuola primaria
bullismo e scuola primariaimartini
 
Building native Android applications with Mirah and Pindah
Building native Android applications with Mirah and PindahBuilding native Android applications with Mirah and Pindah
Building native Android applications with Mirah and PindahNick Plante
 

What's hot (20)

Scalable JavaScript Design Patterns
Scalable JavaScript Design PatternsScalable JavaScript Design Patterns
Scalable JavaScript Design Patterns
 
Javascript tid-bits
Javascript tid-bitsJavascript tid-bits
Javascript tid-bits
 
Understanding Object Oriented Javascript - Coffee@DBG June
Understanding Object Oriented Javascript - Coffee@DBG JuneUnderstanding Object Oriented Javascript - Coffee@DBG June
Understanding Object Oriented Javascript - Coffee@DBG June
 
JavaScript Primer
JavaScript PrimerJavaScript Primer
JavaScript Primer
 
JavaScript Primer
JavaScript PrimerJavaScript Primer
JavaScript Primer
 
JavaScript 1 for high school
JavaScript 1 for high schoolJavaScript 1 for high school
JavaScript 1 for high school
 
Javascript Prototype Visualized
Javascript Prototype VisualizedJavascript Prototype Visualized
Javascript Prototype Visualized
 
The many facets of code reuse in JavaScript
The many facets of code reuse in JavaScriptThe many facets of code reuse in JavaScript
The many facets of code reuse in JavaScript
 
Javascript basics
Javascript basicsJavascript basics
Javascript basics
 
TypeScript Introduction
TypeScript IntroductionTypeScript Introduction
TypeScript Introduction
 
Google Guava - Core libraries for Java & Android
Google Guava - Core libraries for Java & AndroidGoogle Guava - Core libraries for Java & Android
Google Guava - Core libraries for Java & Android
 
Learn JavaScript by modeling Rubik Cube
Learn JavaScript by modeling Rubik CubeLearn JavaScript by modeling Rubik Cube
Learn JavaScript by modeling Rubik Cube
 
From android/java to swift (3)
From android/java to swift (3)From android/java to swift (3)
From android/java to swift (3)
 
Type Driven Development with TypeScript
Type Driven Development with TypeScriptType Driven Development with TypeScript
Type Driven Development with TypeScript
 
Let's refine your Scala Code
Let's refine your Scala CodeLet's refine your Scala Code
Let's refine your Scala Code
 
Stuff you didn't know about action script
Stuff you didn't know about action scriptStuff you didn't know about action script
Stuff you didn't know about action script
 
Justjava 2007 Arquitetura Java EE Paulo Silveira, Phillip Calçado
Justjava 2007 Arquitetura Java EE Paulo Silveira, Phillip CalçadoJustjava 2007 Arquitetura Java EE Paulo Silveira, Phillip Calçado
Justjava 2007 Arquitetura Java EE Paulo Silveira, Phillip Calçado
 
bullismo e scuola primaria
bullismo e scuola primariabullismo e scuola primaria
bullismo e scuola primaria
 
jQuery Fundamentals
jQuery FundamentalsjQuery Fundamentals
jQuery Fundamentals
 
Building native Android applications with Mirah and Pindah
Building native Android applications with Mirah and PindahBuilding native Android applications with Mirah and Pindah
Building native Android applications with Mirah and Pindah
 

Viewers also liked

ひろ子 in Objective-C
ひろ子 in Objective-Cひろ子 in Objective-C
ひろ子 in Objective-CTaketo Sano
 
2.5 Trillion Oil Scam
2.5 Trillion Oil Scam2.5 Trillion Oil Scam
2.5 Trillion Oil Scamtheoilman
 
07 09 04 Ctqi Standard
07 09 04 Ctqi Standard07 09 04 Ctqi Standard
07 09 04 Ctqi StandardKieran F Ring
 
Isotopes And Radioactivity 09
Isotopes And Radioactivity 09Isotopes And Radioactivity 09
Isotopes And Radioactivity 09Paula Mills
 
The Art Of Writing A Business Plan (Zafar)
The Art Of Writing A Business Plan (Zafar)The Art Of Writing A Business Plan (Zafar)
The Art Of Writing A Business Plan (Zafar)Naeem Zafar
 
Cmc chapter 09
Cmc chapter 09Cmc chapter 09
Cmc chapter 09Jane Hamze
 
Python and R for quantitative finance
Python and R for quantitative financePython and R for quantitative finance
Python and R for quantitative financeLuca Sbardella
 
09. Development Plan For Pcmc
09. Development Plan For Pcmc09. Development Plan For Pcmc
09. Development Plan For PcmcRanjit Gadgil
 
Abc analysis1234
Abc analysis1234Abc analysis1234
Abc analysis1234Ashok Reddy
 
Seductive Interactions (Idea 09 Version)
Seductive Interactions (Idea 09 Version)Seductive Interactions (Idea 09 Version)
Seductive Interactions (Idea 09 Version)Stephen Anderson
 
Infographics Jayan Narayanan
Infographics   Jayan NarayananInfographics   Jayan Narayanan
Infographics Jayan NarayananJayan Narayanan
 
E Co C Bratislava 09 Persoenlichkeit
E Co C Bratislava 09 PersoenlichkeitE Co C Bratislava 09 Persoenlichkeit
E Co C Bratislava 09 Persoenlichkeitthomasabauer
 
mediscript Kalendar 2013 "Lernen heisst Entdecken"
mediscript Kalendar 2013 "Lernen heisst Entdecken"mediscript Kalendar 2013 "Lernen heisst Entdecken"
mediscript Kalendar 2013 "Lernen heisst Entdecken"mediscript Team
 
Lernen Mit Web 2.0 (IHK Stuttgart Juli 2009)
Lernen Mit Web 2.0 (IHK Stuttgart Juli 2009)Lernen Mit Web 2.0 (IHK Stuttgart Juli 2009)
Lernen Mit Web 2.0 (IHK Stuttgart Juli 2009)Martina Goehring
 
Unbezahlte arbeitszeit in_Österreich
Unbezahlte arbeitszeit in_ÖsterreichUnbezahlte arbeitszeit in_Österreich
Unbezahlte arbeitszeit in_ÖsterreichFESD GKr
 
Kelantan
KelantanKelantan
Kelantanwmzuri
 
Financial Institutions Must Support Their Clients on Twitter
Financial Institutions Must Support Their Clients on TwitterFinancial Institutions Must Support Their Clients on Twitter
Financial Institutions Must Support Their Clients on TwitterChristophe Langlois
 
EdChang - Parallel Algorithms For Mining Large Scale Data
EdChang - Parallel Algorithms For Mining Large Scale DataEdChang - Parallel Algorithms For Mining Large Scale Data
EdChang - Parallel Algorithms For Mining Large Scale Datagu wendong
 

Viewers also liked (20)

ひろ子 in Objective-C
ひろ子 in Objective-Cひろ子 in Objective-C
ひろ子 in Objective-C
 
Tagging - web 2 expo 2008
Tagging - web 2 expo 2008Tagging - web 2 expo 2008
Tagging - web 2 expo 2008
 
2.5 Trillion Oil Scam
2.5 Trillion Oil Scam2.5 Trillion Oil Scam
2.5 Trillion Oil Scam
 
07 09 04 Ctqi Standard
07 09 04 Ctqi Standard07 09 04 Ctqi Standard
07 09 04 Ctqi Standard
 
Isotopes And Radioactivity 09
Isotopes And Radioactivity 09Isotopes And Radioactivity 09
Isotopes And Radioactivity 09
 
The Art Of Writing A Business Plan (Zafar)
The Art Of Writing A Business Plan (Zafar)The Art Of Writing A Business Plan (Zafar)
The Art Of Writing A Business Plan (Zafar)
 
Cmc chapter 09
Cmc chapter 09Cmc chapter 09
Cmc chapter 09
 
Python and R for quantitative finance
Python and R for quantitative financePython and R for quantitative finance
Python and R for quantitative finance
 
09. Development Plan For Pcmc
09. Development Plan For Pcmc09. Development Plan For Pcmc
09. Development Plan For Pcmc
 
Abc analysis1234
Abc analysis1234Abc analysis1234
Abc analysis1234
 
Seductive Interactions (Idea 09 Version)
Seductive Interactions (Idea 09 Version)Seductive Interactions (Idea 09 Version)
Seductive Interactions (Idea 09 Version)
 
PMP Preparation - 09 Human Resource Management
PMP Preparation - 09 Human Resource ManagementPMP Preparation - 09 Human Resource Management
PMP Preparation - 09 Human Resource Management
 
Infographics Jayan Narayanan
Infographics   Jayan NarayananInfographics   Jayan Narayanan
Infographics Jayan Narayanan
 
E Co C Bratislava 09 Persoenlichkeit
E Co C Bratislava 09 PersoenlichkeitE Co C Bratislava 09 Persoenlichkeit
E Co C Bratislava 09 Persoenlichkeit
 
mediscript Kalendar 2013 "Lernen heisst Entdecken"
mediscript Kalendar 2013 "Lernen heisst Entdecken"mediscript Kalendar 2013 "Lernen heisst Entdecken"
mediscript Kalendar 2013 "Lernen heisst Entdecken"
 
Lernen Mit Web 2.0 (IHK Stuttgart Juli 2009)
Lernen Mit Web 2.0 (IHK Stuttgart Juli 2009)Lernen Mit Web 2.0 (IHK Stuttgart Juli 2009)
Lernen Mit Web 2.0 (IHK Stuttgart Juli 2009)
 
Unbezahlte arbeitszeit in_Österreich
Unbezahlte arbeitszeit in_ÖsterreichUnbezahlte arbeitszeit in_Österreich
Unbezahlte arbeitszeit in_Österreich
 
Kelantan
KelantanKelantan
Kelantan
 
Financial Institutions Must Support Their Clients on Twitter
Financial Institutions Must Support Their Clients on TwitterFinancial Institutions Must Support Their Clients on Twitter
Financial Institutions Must Support Their Clients on Twitter
 
EdChang - Parallel Algorithms For Mining Large Scale Data
EdChang - Parallel Algorithms For Mining Large Scale DataEdChang - Parallel Algorithms For Mining Large Scale Data
EdChang - Parallel Algorithms For Mining Large Scale Data
 

Similar to JavaScript for PHP developers

Jsphp 110312161301-phpapp02
Jsphp 110312161301-phpapp02Jsphp 110312161301-phpapp02
Jsphp 110312161301-phpapp02Seri Moth
 
PHPCon 2016: PHP7 by Witek Adamus / XSolve
PHPCon 2016: PHP7 by Witek Adamus / XSolvePHPCon 2016: PHP7 by Witek Adamus / XSolve
PHPCon 2016: PHP7 by Witek Adamus / XSolveXSolve
 
Why async and functional programming in PHP7 suck and how to get overr it?
Why async and functional programming in PHP7 suck and how to get overr it?Why async and functional programming in PHP7 suck and how to get overr it?
Why async and functional programming in PHP7 suck and how to get overr it?Lucas Witold Adamus
 
The Beauty Of Java Script V5a
The Beauty Of Java Script V5aThe Beauty Of Java Script V5a
The Beauty Of Java Script V5arajivmordani
 
ES6 PPT FOR 2016
ES6 PPT FOR 2016ES6 PPT FOR 2016
ES6 PPT FOR 2016Manoj Kumar
 
Good Evils In Perl (Yapc Asia)
Good Evils In Perl (Yapc Asia)Good Evils In Perl (Yapc Asia)
Good Evils In Perl (Yapc Asia)Kang-min Liu
 
Node.js for PHP developers
Node.js for PHP developersNode.js for PHP developers
Node.js for PHP developersAndrew Eddie
 
Generating Power with Yield
Generating Power with YieldGenerating Power with Yield
Generating Power with YieldJason Myers
 
SPL: The Missing Link in Development
SPL: The Missing Link in DevelopmentSPL: The Missing Link in Development
SPL: The Missing Link in Developmentjsmith92
 
Your code sucks, let's fix it - DPC UnCon
Your code sucks, let's fix it - DPC UnConYour code sucks, let's fix it - DPC UnCon
Your code sucks, let's fix it - DPC UnConRafael Dohms
 
JavaScript Literacy
JavaScript LiteracyJavaScript Literacy
JavaScript LiteracyDavid Jacobs
 
The History of PHPersistence
The History of PHPersistenceThe History of PHPersistence
The History of PHPersistenceHugo Hamon
 
Web Optimization Summit: Coding for Performance
Web Optimization Summit: Coding for PerformanceWeb Optimization Summit: Coding for Performance
Web Optimization Summit: Coding for Performancejohndaviddalton
 

Similar to JavaScript for PHP developers (20)

Jsphp 110312161301-phpapp02
Jsphp 110312161301-phpapp02Jsphp 110312161301-phpapp02
Jsphp 110312161301-phpapp02
 
PHPCon 2016: PHP7 by Witek Adamus / XSolve
PHPCon 2016: PHP7 by Witek Adamus / XSolvePHPCon 2016: PHP7 by Witek Adamus / XSolve
PHPCon 2016: PHP7 by Witek Adamus / XSolve
 
ES2015 New Features
ES2015 New FeaturesES2015 New Features
ES2015 New Features
 
Why async and functional programming in PHP7 suck and how to get overr it?
Why async and functional programming in PHP7 suck and how to get overr it?Why async and functional programming in PHP7 suck and how to get overr it?
Why async and functional programming in PHP7 suck and how to get overr it?
 
The Beauty of Java Script
The Beauty of Java ScriptThe Beauty of Java Script
The Beauty of Java Script
 
The Beauty Of Java Script V5a
The Beauty Of Java Script V5aThe Beauty Of Java Script V5a
The Beauty Of Java Script V5a
 
ES6 PPT FOR 2016
ES6 PPT FOR 2016ES6 PPT FOR 2016
ES6 PPT FOR 2016
 
Say It With Javascript
Say It With JavascriptSay It With Javascript
Say It With Javascript
 
Good Evils In Perl (Yapc Asia)
Good Evils In Perl (Yapc Asia)Good Evils In Perl (Yapc Asia)
Good Evils In Perl (Yapc Asia)
 
Node.js for PHP developers
Node.js for PHP developersNode.js for PHP developers
Node.js for PHP developers
 
Generating Power with Yield
Generating Power with YieldGenerating Power with Yield
Generating Power with Yield
 
SPL: The Missing Link in Development
SPL: The Missing Link in DevelopmentSPL: The Missing Link in Development
SPL: The Missing Link in Development
 
Your code sucks, let's fix it - DPC UnCon
Your code sucks, let's fix it - DPC UnConYour code sucks, let's fix it - DPC UnCon
Your code sucks, let's fix it - DPC UnCon
 
Php 5.6
Php 5.6Php 5.6
Php 5.6
 
Wakanday JS201 Best Practices
Wakanday JS201 Best PracticesWakanday JS201 Best Practices
Wakanday JS201 Best Practices
 
JavaScript Literacy
JavaScript LiteracyJavaScript Literacy
JavaScript Literacy
 
Oops in php
Oops in phpOops in php
Oops in php
 
The History of PHPersistence
The History of PHPersistenceThe History of PHPersistence
The History of PHPersistence
 
Web Optimization Summit: Coding for Performance
Web Optimization Summit: Coding for PerformanceWeb Optimization Summit: Coding for Performance
Web Optimization Summit: Coding for Performance
 
Unittests für Dummies
Unittests für DummiesUnittests für Dummies
Unittests für Dummies
 

More from Stoyan Stefanov

JavaScript Performance Patterns
JavaScript Performance PatternsJavaScript Performance Patterns
JavaScript Performance PatternsStoyan Stefanov
 
JavaScript performance patterns
JavaScript performance patternsJavaScript performance patterns
JavaScript performance patternsStoyan Stefanov
 
High Performance Social Plugins
High Performance Social PluginsHigh Performance Social Plugins
High Performance Social PluginsStoyan Stefanov
 
JavaScript навсякъде
JavaScript навсякъдеJavaScript навсякъде
JavaScript навсякъдеStoyan Stefanov
 
JavaScript is everywhere
JavaScript is everywhereJavaScript is everywhere
JavaScript is everywhereStoyan Stefanov
 
JavaScript shell scripting
JavaScript shell scriptingJavaScript shell scripting
JavaScript shell scriptingStoyan Stefanov
 
Progressive Downloads and Rendering - take #2
Progressive Downloads and Rendering - take #2Progressive Downloads and Rendering - take #2
Progressive Downloads and Rendering - take #2Stoyan Stefanov
 
Progressive Downloads and Rendering
Progressive Downloads and RenderingProgressive Downloads and Rendering
Progressive Downloads and RenderingStoyan Stefanov
 
Voices that matter: High Performance Web Sites
Voices that matter: High Performance Web SitesVoices that matter: High Performance Web Sites
Voices that matter: High Performance Web SitesStoyan Stefanov
 
Psychology of performance
Psychology of performancePsychology of performance
Psychology of performanceStoyan Stefanov
 
CSS and image optimization
CSS and image optimizationCSS and image optimization
CSS and image optimizationStoyan Stefanov
 
High-performance DOM scripting
High-performance DOM scriptingHigh-performance DOM scripting
High-performance DOM scriptingStoyan Stefanov
 
The business of performance
The business of performanceThe business of performance
The business of performanceStoyan Stefanov
 

More from Stoyan Stefanov (20)

Reactive JavaScript
Reactive JavaScriptReactive JavaScript
Reactive JavaScript
 
YSlow hacking
YSlow hackingYSlow hacking
YSlow hacking
 
Liking performance
Liking performanceLiking performance
Liking performance
 
JavaScript Performance Patterns
JavaScript Performance PatternsJavaScript Performance Patterns
JavaScript Performance Patterns
 
JavaScript performance patterns
JavaScript performance patternsJavaScript performance patterns
JavaScript performance patterns
 
High Performance Social Plugins
High Performance Social PluginsHigh Performance Social Plugins
High Performance Social Plugins
 
Social Button BFFs
Social Button BFFsSocial Button BFFs
Social Button BFFs
 
JavaScript навсякъде
JavaScript навсякъдеJavaScript навсякъде
JavaScript навсякъде
 
JavaScript is everywhere
JavaScript is everywhereJavaScript is everywhere
JavaScript is everywhere
 
JavaScript shell scripting
JavaScript shell scriptingJavaScript shell scripting
JavaScript shell scripting
 
WPO @ PubCon 2010
WPO @ PubCon 2010WPO @ PubCon 2010
WPO @ PubCon 2010
 
Progressive Downloads and Rendering - take #2
Progressive Downloads and Rendering - take #2Progressive Downloads and Rendering - take #2
Progressive Downloads and Rendering - take #2
 
Progressive Downloads and Rendering
Progressive Downloads and RenderingProgressive Downloads and Rendering
Progressive Downloads and Rendering
 
Performance patterns
Performance patternsPerformance patterns
Performance patterns
 
Voices that matter: High Performance Web Sites
Voices that matter: High Performance Web SitesVoices that matter: High Performance Web Sites
Voices that matter: High Performance Web Sites
 
Psychology of performance
Psychology of performancePsychology of performance
Psychology of performance
 
3-in-1 YSlow
3-in-1 YSlow3-in-1 YSlow
3-in-1 YSlow
 
CSS and image optimization
CSS and image optimizationCSS and image optimization
CSS and image optimization
 
High-performance DOM scripting
High-performance DOM scriptingHigh-performance DOM scripting
High-performance DOM scripting
 
The business of performance
The business of performanceThe business of performance
The business of performance
 

Recently uploaded

KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostMatt Ray
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...Aggregage
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Adtran
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopBachir Benyammi
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdfPedro Manuel
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URLRuncy Oommen
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7DianaGray10
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesMd Hossain Ali
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6DianaGray10
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1DianaGray10
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024D Cloud Solutions
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Websitedgelyza
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxGDSC PJATK
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXTarek Kalaji
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesDavid Newbury
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfAijun Zhang
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1DianaGray10
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationIES VE
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioChristian Posta
 

Recently uploaded (20)

KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 Workshop
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdf
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URL
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7
 
20150722 - AGV
20150722 - AGV20150722 - AGV
20150722 - AGV
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Website
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptx
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBX
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond Ontologies
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdf
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and Istio
 

JavaScript for PHP developers