SlideShare a Scribd company logo
1 of 49
Download to read offline
Javascript for
                  PHP Developer
               Đặng Minh Tuấn - hoctudau.com
                      PHP Day 2012




HOCTUDAU.COM                                   DANG MINH TUAN
About Me
 Đặng Minh Tuấn
  ●   www.ddth.com/member.php/51960-zmt264
  ●   linkhay.com/u/ohisee
  ●   www.facebook.com/dangminhtuan
  ●   www.youtube.com/hoctudau
  ●   hoctudau.com

 Kinh nghiệm:
  ●   2006: FrontEnd Engineer tại World Ideas
  ●   2008: Project Manager kiêm Tech Lead tại NAISCORP (socbay.com)

 Diễn giả PHP Day nhiều năm:
  ●   2008 = HTML, CSS, JS Best Practices
  ●   2009 = HTML, CSS Trends
  ●   2010 = HTML5, CSS3, JS
  ●   2012 += Power your PHP Skill (by learning HTML, CSS, JS :D)

HOCTUDAU.COM                                                        DANG MINH TUAN
Quy ước:
 Chữ cái
 ● JS = Javascript
 ● dev = developer
 ● app = application
 ● hoctudau = tên biến, hàm ngẫu nhiên
 ● hoc tu dau = chuỗi ngẫu nhiên
 Phát âm: Anh hay Việt?
 ● PHP
 ● echo

HOCTUDAU.COM                             DANG MINH TUAN
Quy ước: mầu nền
 PHP và JS giống nhau: Nền trắng, chữ đen




HOCTUDAU.COM                            DANG MINH TUAN
Quy ước: mầu nền
 PHP và JS khác nhau: nền đen, chữ trắng




HOCTUDAU.COM                               DANG MINH TUAN
Phần 1: Vai trò của JS
               trong thế giới web hiện đại




HOCTUDAU.COM                                 DANG MINH TUAN
Cơ duyên nào đưa bạn đến với
 PHP?
 ● Đầu tiên là học làm web tĩnh: HTML, CSS
   trước.
 ● Một số người biết JS trước cả PHP
 ● Sự thực: một số lập trình PHP không giỏi
   HTML, CSS, JS nhưng đa số đều biết
   HTML, CSS, JS ở mức độ nào đó. Hiếm ai
   (tôi chưa gặp ai) chỉ biết mỗi PHP!




HOCTUDAU.COM                            DANG MINH TUAN
Tại sao lập trình viên PHP nên học
(và giỏi) Javascript
● Trong quá khứ xa: ứng dụng web tập trung
  vào server-side hơn.
● Thời gian gần đây: client side trở nên phức
  tạp hơn và thực hiện nhiều nhiệm vụ hơn
  (richer). Web apps cân bằng hơn giữa client
  side và server side (thậm chí là client side
  nhỉnh hơn).
● HTML, CSS, JS làm được nhiều thứ!!!.
● Học không có nghĩa là "copy & paste", hoặc
  biết dùng "tool sinh code" => học như bạn
  đã học PHP
JS làm được gì?
 Tạo ứng dụng mobile bằng HTML, CSS, JS với
 các Web RunTime platforms (WRTs)
 ● iPhone — Titanium Mobile, PhoneGap
 ● Android — Titanium Mobile, PhoneGap)
 ● Palm webOS — Mojo
 ● Sony Ericsson — Sony Ericsson WebSDK
   (PhoneGap)
 ● Nokia — Nokia WRT
 ● Blackberry — PhoneGap
HOCTUDAU.COM                           DANG MINH TUAN
JS làm được gì?
 Và nhiều thứ khác
 ● Brower Extensions: Firefox Addons, Google
   Chrome Extensions ...
 ● Desktop Application: Windows 8 Apps,
   Google Chrome Package Apps, ...
 ● Google Script (Google Forms,
   Spreadsheet...): Enterprise Apps
 ● Web Games, Web Apps
 ● Server side: Node.js

HOCTUDAU.COM                            DANG MINH TUAN
Cần học những gì của JS?
 Không chỉ đơn giản là "tooltip", "menu",
 "chuyển động". Mà còn là:
 ● Quản lý và thực thi những hành vi người
    dùng phức tạp ở giao diện người dùng (UI).
 ● Tương tác với API ở client: DOM, local
    storage ...
 ● Kể cả học các Framework như jQuery thì
    cũng cần nắm vững căn bản về JS (sẽ liệt
    kê kiến thức ở phần cuối bài thuyết trình) vì
    làm jQuery cũng vẫn dùng cái đó.
HOCTUDAU.COM                                 DANG MINH TUAN
Tin tốt
 ● Javascript có cú pháp C-Like (NHƯ PHP).
      Nếu bạn thực hiện những toán đơn giản:
      cộng, trừ, tính số PI, tính sin... thì có thể
      code hoàn toàn như PHP.
 ● Việc học tập giúp bạn trở nên thông minh
      hơn, học nhanh hơn, đáp ứng được nhiều
      yêu cầu (tuyển dụng, của khách...) hơn.
 ● Bây giờ có nhiều JS Frameworks rất tốt:
      jQuery,...
 ● Cộng đồng JS dev: đa dạng, sáng tạo, đông
      đảo
HOCTUDAU.COM                                        DANG MINH TUAN
Tin xấu
 Vài thứ khá khác biệt
 ● Object Model dễ gây hiểu lầm
 ● Scope rất khác biệt
 ● Khả năng tùy biến: rất quái dị
 ● và nhiều khác biệt khác




HOCTUDAU.COM                        DANG MINH TUAN
Học ở đâu và như thế nào?
 Rất nhiều link, sách lởm: lạc hậu hoặc tập
 trung vào các "công thức".
 Vài nguồn đáng tham khảo:
 ● Mozilla’s Core JavaScript Guide
 ● Mozilla’s Core JavaScript Reference
 ● Eloquent JavaScript
 ● JavaScript: The Definitive Guide



HOCTUDAU.COM                                  DANG MINH TUAN
Phần 2: Vài kiến thức JS
              cơ bản
       học nhanh JS trong 15 phút, dành cho
      những lập trình viên PHP chưa biết hoặc
              chỉ biết một chút về JS



HOCTUDAU.COM                               DANG MINH TUAN
Chú ý
bạn là PHP developer, tức là coi như bạn đã
biết kiến thức căn bản và tư duy lập trình:
● bản chất của biến, đối tượng
● các kiểu biến: số, chuỗi, mảng, lớp ...
● phép gán, biểu thức, biểu thức chính quy ...
● các phép toán, toán tử ...
● lệnh điều kiện (rẽ nhánh): if, else, switch ...
● vòng lặp: while, do, for ...
● nguyên lý DRY
Đặt tên biến: Giống
 $n = 1;               $n = 1;
 $b = true;            $b = true;
 $s = "hoc tu dau";    $s = "hoc tu dau";




HOCTUDAU.COM                                DANG MINH TUAN
Đặt tên biến: Khác
 n=1                  $n = 1;
 $ = 1;
 var n = 1;
 var x = 0, y = '';   $x = 0; $y = '';




HOCTUDAU.COM                             DANG MINH TUAN
Khai báo biến: Mảng
 var a = [1,2,3];   $a = array(1,2,3);




HOCTUDAU.COM                             DANG MINH TUAN
Khai báo biến: Mảng
 $a = [1,2,3];     PHP 5.4
                   $a = [1,2,3];




HOCTUDAU.COM                       DANG MINH TUAN
Khai báo biến: Mảng liên kết (assoc)
var o = {               $o = array(
             "one":1,              "one"=>1,
             "two":2               "two"=>2
        };                         );
                        PHP 5.4
                        ["one"=>1, "two"=>2]
Bản chất và Nhập dữ liệu
 Javascript: Chạy ở client-side      PHP: chạy ở server và lấy được dữ
 <div id="x">5</div>                 liệu gửi từ client-side lên
 <input id="y">                      <form>
 <script>                                 <input name="y">
 a = document.getElementById("x");        <input type="submit">
 b = a.innerHTML;                    </form>
 c = document.getElementById("y");   <?php
 d = c.value;                             $a = $_GET['y'];




HOCTUDAU.COM                                                    DANG MINH TUAN
Bản chất và Xuất dữ liệu
Javascript: Chạy ở client-side      PHP: chạy ở server và gửi được dữ
<div id="x">5</div>                 liệu xuống client-side
<input id="y">                      <form>
<script>                                 <input name="y">
a = document.getElementById("x");        <input type="submit">
b = a.innerHTML;                    </form>
a.innerHTML = 2 * b;                <?php
c = document.getElementById("y");        $a = $_GET['y'];
d = c.value;                             echo 2 * $a;
c.value = 3 * d;
JS Hello World - Event-Driven Programming
Cú pháp
if (1===1) {...}                      if (1===1) {...}
switch, for, while, do-               switch, for, while, do-
while                                 while
for (var i=0, out=''; i<100; i++) {   for ($i=0, $out=''; $i<100; $i++) {
     out += i + ',';                       $out .= $i . ',';
}                                     }
funtion hoctudau(a,b=2) {             funtion hoctudau($a,$b=2) {
     return a*b;                           return $a*$b;
}                                     }
Closures (Anonymous functions)
var hoctudau = function (a,b) {
  return a * b;
}
hoctudau(3, 4); //12

 PHP 5.3 (PHP 5.4 hỗ trợ $this)
 $hoctudau = function ($a,$b) {
   return $a * $b;
 }
 $hoctudau(3, 4); //12
Function Scope: Phạm vi hàm
$a = function () {               $a = function () {
     $c =3;                           $c =3;
     $b = function ($a, $b) {         $b = function ($a, $b) {
          return $c * $a * $b;             return $c * $a * $b;
     };                               };
     return $b;                       return $b;
};                               };
$b = $a();                       $b = $a();
alert($b(1, 2)); //6             echo($b(1, 2));
                                 //Notice: Undefined variable: c
                                 //0
Tạo và gọi hàm trong JS




  Lưu ý: nếu muốn làm tốt hơn, nâng cao
  hơn thì nên tìm hiểu về Unobstrusive JS
Bắt lỗi
 try {                           try {
      throw new Error('ouch');        throw new Exception('ouch');
 } catch (e) {                   } catch (Exception $e) {
      msg = e.message;                msg = $e -> getMessage();
 }                               }




HOCTUDAU.COM                                                  DANG MINH TUAN
Toán tử
 nối chuỗi:               nối chuỗi:
 x = 'hoc' + 'tu';        $x = 'hoc' . 'tu';
 x += 'dau'; //hoctudau   $x .= 'dau'; //hoctudau




HOCTUDAU.COM                                DANG MINH TUAN
Constructors/Classes
 var hoctudau = new OnlineCenter();



    $hoctudau = new OnlineCenter();




HOCTUDAU.COM                          DANG MINH TUAN
PHP Class
Class                               class OnlineCenter {
                                        var $name; //PHP 4
                                        public $name; //PHP 5
JS constructor function
                                        function __construct($name) {
function OnlineCenter(name) {
                                             $this->name = $name;
     this.name = name;
                                        }
     this.getName = function () {
                                        function getName() {
          return this.name;
                                             return $this->name;
     }
                                        }
}
                                    }
var hoctudau = new OnlineCenter
                                    $hoctudau = new OnlineCenter
("HocTuDau");
                                    ("HocTuDau");
hoctudau.getName(); //HocTuDau
                                    hoctudau->getName();//HocTuDau
PHP Class
Class                              class OnlineCenter {
                                       var $name; //PHP 4
                                       public $name; //PHP 5
JS Prototype
                                       function __construct($name) {
function OnlineCenter (name) {
                                            $this->name = $name;
     this.name = name;
                                       }
}
                                       function getName() {
OnlineCenter.prototype.getName =
                                            return $this->name;
function() {
                                       }
     return this.name;
                                   }
}
                                   $hoctudau = new OnlineCenter
var hoctudau = new OnlineCenter    ("HocTuDau");
("HocTuDau");
                                   hoctudau->getName();//HocTuDau
hoctudau.getName(); //HocTuDau
Class
 JS Object literal                PHP Literal
 var hoctudau = {                 $hoctudau = (object) array();
      name: "HocTuDau",           $hoctudau->name = 'HocTudau';
                                  $hoctudau->getName = function() {
      getName: function() {
                                       return $GLOBALS['hoctudau']->name;
          return this.name;       };
      }
 };                               $method = $hoctudau->getName;
 hoctudau.getName(); //HocTuDau   echo $method();//HocTuDau




HOCTUDAU.COM                                                        DANG MINH TUAN
Class
JS Object literal                PHP (5.4) Literal
var hoctudau = {                 https://github.com/aviat4ion/JSObject
     name: "HocTuDau",           $hoctudau = new JSObject(
     getName: function() {            'name' => 'HocTuDau';
                                      'getName' => function() {
         return this.name;
                                           return $this->name;
     }                                }
};                               );
hoctudau.getName(); //HocTuDau
                                 $hoctudau->getName();//HocTuDau
Funny JS 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


HOCTUDAU.COM                                     DANG MINH TUAN
9 global functions
4 number-related          4 number-related
parseInt()                intval()
parseFloat()              floatval()
isNaN()                   is_nan()
isFinite()                is_finite()
4 to encode/decode URIs   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()
...
Literals
var o = {};                  var o = new Object();
var a = [];                  var a = new Array();
var re = /[a-z]/gmi;         var re = new RegExp("[a-z]", "gmi");
var f = function(..) {...}   var f = new Function("..","...");
function f(..) {...}
var s = 'hoctudau';          var s = new String('hoctudau');
var n = 123;                 var n = new Number(123);
var b = true;                var b = new Boolean(true);
Object.prototype
var o = {};
o.toString(); // "[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('hoc tu dau'); //[1,2,3,4,'hoc tu dau']
 a.pop(); //[1,2,3]
 a.unshift('hoc tu dau'); //['hoc tu dau',1,2,3,4]
 a.shift(); //[2,3,4]
 a = a.concat(5,6,'htd'); //[1,2,3,4,5,6,'htd']



HOCTUDAU.COM                                    DANG MINH TUAN
Array.prototype
 var a = [3,2,4,1,2];
 a.sort; //[1,2,2,3,4]
 a.indexOf(2); //1
 a.lastIndexOf(2); //4
 a.slice(1,3); //[2,4]
 a.splice(...); //remove and add item(s)
 a.reverse(); //[2,1,4,2,3]
 a.join(' > '); //"3 > 2 > 4 > 1 > 2" ~ implode()

HOCTUDAU.COM                                        DANG MINH TUAN
RegExp.prototype
 var re = /[a-z]/gmi;
 re.exec("hoc tu dau"); //"h" (returns matches)
 re.test("hoc tu dau"); //true (returns true|false)
 re.lastIndex;
 re.source; //"[a-z]"
 /[0-9]/g.global; //true
 /[0-9]/m.multiline; //true
 /[0-9]/i.ignoreCase; //true

HOCTUDAU.COM                                    DANG MINH TUAN
String.prototype
 var s = 'Hoc Tu Dau';
 s.length; //10
 s.indexOf('u'); //5
 s.lastIndexOf('u'); //9
 s.charAt(1); //"o"
 s.charCodeAt(1); //111
 s.toLowerCase(); //'hoc tu dau'
 s.toUpperCase(); //HOC TU DAU'

HOCTUDAU.COM                       DANG MINH TUAN
String.prototype
var s = 'hoc tu dau';
s.split(" "); //["hoc", "tu", "dau"] - có thể dùng (/ /)
s.replace(/ /g, ""); //"hoctudau"
s.concat('.com'); //"hoc tu dau.com"
s.search(/tu/); ; //4
s.match(/[a-z]/g); ; //["h", "o", "c" ...
s.slice(4,6); //"tu"
s.substring(0,3); //"hoc"
s.substr(0,3); //"hoc"
Number.prototype
 new Number(123).toFixed(2); // 123.00
 (1000000000000).toExponential(); //1e+12
 (1000000000000).toPrecision(3); //1.00e+12
 Number.MIN_VALUE; // 5e-324
 Number.POSITIVE_INFINITY; //Infinity
 Number.NaN; //NaN




HOCTUDAU.COM                             DANG MINH TUAN
Math
 Constants
 ● Math.E, Math.PI ... and about 6 more
 Methods
 ● Math.min(), Math.max(),
 ● Math.random(), Math.round(), Math.sin(),
 ● ... and about 14 more ...




HOCTUDAU.COM                              DANG MINH TUAN
Date
var d = new Date(2012, 12, 21);
d.getDate(); //21
d.getDay(); //1
d.getFullYear(); //2013 !!!
d.getMonth(); //0 !!!
d.getHours();
d.setFullYear(); d.setHours(); ...
d.toString(); d.toTimeString(); d.toDateString();...
Date.now(); Date.parse(); ...
Q&A & resources
                http://bit.ly/phpday2012




HOCTUDAU.COM                               DANG MINH TUAN

More Related Content

What's hot

Ebook học Javascript cơ bản tới nâng cao
Ebook học Javascript cơ bản tới nâng caoEbook học Javascript cơ bản tới nâng cao
Ebook học Javascript cơ bản tới nâng caoTrung Thanh Nguyen
 
Bài 7: Thư viện jQuery và thư viện jQuery UI - Giáo trình FPT
Bài 7: Thư viện jQuery và thư viện jQuery UI - Giáo trình FPTBài 7: Thư viện jQuery và thư viện jQuery UI - Giáo trình FPT
Bài 7: Thư viện jQuery và thư viện jQuery UI - Giáo trình FPTMasterCode.vn
 
Bai tap java_script-html-2016
Bai tap java_script-html-2016Bai tap java_script-html-2016
Bai tap java_script-html-2016viethoang89
 
Bài 3: Cấu trúc điều khiển, hàm và xử lý sự kiện - Giáo trình FPT
Bài 3: Cấu trúc điều khiển, hàm và xử lý sự kiện - Giáo trình FPTBài 3: Cấu trúc điều khiển, hàm và xử lý sự kiện - Giáo trình FPT
Bài 3: Cấu trúc điều khiển, hàm và xử lý sự kiện - Giáo trình FPTMasterCode.vn
 
BÀI 7 Làm việc với thành phần mới và phạm vi ứng dụng của HTML5 - Giáo trình FPT
BÀI 7 Làm việc với thành phần mới và phạm vi ứng dụng của HTML5 - Giáo trình FPTBÀI 7 Làm việc với thành phần mới và phạm vi ứng dụng của HTML5 - Giáo trình FPT
BÀI 7 Làm việc với thành phần mới và phạm vi ứng dụng của HTML5 - Giáo trình FPTMasterCode.vn
 
The First 2015 Saigon WordPress Meetup
The First 2015 Saigon WordPress MeetupThe First 2015 Saigon WordPress Meetup
The First 2015 Saigon WordPress MeetupKhanhPham
 
05 - Phan Thai Trung - Tu dong dat hang tu he thong ban le lon nhat Trung Quoc
05 - Phan Thai Trung - Tu dong dat hang tu he thong ban le lon nhat Trung Quoc05 - Phan Thai Trung - Tu dong dat hang tu he thong ban le lon nhat Trung Quoc
05 - Phan Thai Trung - Tu dong dat hang tu he thong ban le lon nhat Trung QuocNguyen Duc Phu
 
Bai tap thuc hanh javascript
Bai tap thuc hanh javascriptBai tap thuc hanh javascript
Bai tap thuc hanh javascriptnkquank7d
 
Tu hoc javascript
Tu hoc javascriptTu hoc javascript
Tu hoc javascriptzingoncmu2
 
Hoc Jquery Trong 1h
Hoc Jquery Trong 1hHoc Jquery Trong 1h
Hoc Jquery Trong 1hDang Tuan
 
Phan thai trung tu dong dat hang tu he thong ban le lon nhat trung quoc
Phan thai trung   tu dong dat hang tu he thong ban le lon nhat trung quocPhan thai trung   tu dong dat hang tu he thong ban le lon nhat trung quoc
Phan thai trung tu dong dat hang tu he thong ban le lon nhat trung quocTrung Phan Thai
 

What's hot (16)

Ebook học Javascript cơ bản tới nâng cao
Ebook học Javascript cơ bản tới nâng caoEbook học Javascript cơ bản tới nâng cao
Ebook học Javascript cơ bản tới nâng cao
 
Bài 7: Thư viện jQuery và thư viện jQuery UI - Giáo trình FPT
Bài 7: Thư viện jQuery và thư viện jQuery UI - Giáo trình FPTBài 7: Thư viện jQuery và thư viện jQuery UI - Giáo trình FPT
Bài 7: Thư viện jQuery và thư viện jQuery UI - Giáo trình FPT
 
Javascript and dom_html
Javascript and dom_htmlJavascript and dom_html
Javascript and dom_html
 
Giao Trinh Jquery
Giao Trinh JqueryGiao Trinh Jquery
Giao Trinh Jquery
 
Bai tap java_script-html-2016
Bai tap java_script-html-2016Bai tap java_script-html-2016
Bai tap java_script-html-2016
 
Bài 3: Cấu trúc điều khiển, hàm và xử lý sự kiện - Giáo trình FPT
Bài 3: Cấu trúc điều khiển, hàm và xử lý sự kiện - Giáo trình FPTBài 3: Cấu trúc điều khiển, hàm và xử lý sự kiện - Giáo trình FPT
Bài 3: Cấu trúc điều khiển, hàm và xử lý sự kiện - Giáo trình FPT
 
BÀI 7 Làm việc với thành phần mới và phạm vi ứng dụng của HTML5 - Giáo trình FPT
BÀI 7 Làm việc với thành phần mới và phạm vi ứng dụng của HTML5 - Giáo trình FPTBÀI 7 Làm việc với thành phần mới và phạm vi ứng dụng của HTML5 - Giáo trình FPT
BÀI 7 Làm việc với thành phần mới và phạm vi ứng dụng của HTML5 - Giáo trình FPT
 
The First 2015 Saigon WordPress Meetup
The First 2015 Saigon WordPress MeetupThe First 2015 Saigon WordPress Meetup
The First 2015 Saigon WordPress Meetup
 
05 - Phan Thai Trung - Tu dong dat hang tu he thong ban le lon nhat Trung Quoc
05 - Phan Thai Trung - Tu dong dat hang tu he thong ban le lon nhat Trung Quoc05 - Phan Thai Trung - Tu dong dat hang tu he thong ban le lon nhat Trung Quoc
05 - Phan Thai Trung - Tu dong dat hang tu he thong ban le lon nhat Trung Quoc
 
Bài tập javascript
Bài tập javascriptBài tập javascript
Bài tập javascript
 
Kiem tra javascript
Kiem tra javascriptKiem tra javascript
Kiem tra javascript
 
Bai tap thuc hanh javascript
Bai tap thuc hanh javascriptBai tap thuc hanh javascript
Bai tap thuc hanh javascript
 
Tu hoc javascript
Tu hoc javascriptTu hoc javascript
Tu hoc javascript
 
Hoc Jquery Trong 1h
Hoc Jquery Trong 1hHoc Jquery Trong 1h
Hoc Jquery Trong 1h
 
Lập trình hướng đối tượng - p3
Lập trình hướng đối tượng - p3Lập trình hướng đối tượng - p3
Lập trình hướng đối tượng - p3
 
Phan thai trung tu dong dat hang tu he thong ban le lon nhat trung quoc
Phan thai trung   tu dong dat hang tu he thong ban le lon nhat trung quocPhan thai trung   tu dong dat hang tu he thong ban le lon nhat trung quoc
Phan thai trung tu dong dat hang tu he thong ban le lon nhat trung quoc
 

Viewers also liked

001 Middle East Intro
001 Middle East  Intro001 Middle East  Intro
001 Middle East IntroCADSPRO LLC
 
US in the Middle East Part 2
US in the Middle East Part 2US in the Middle East Part 2
US in the Middle East Part 2skallens
 
Inventions: The computer
Inventions: The computerInventions: The computer
Inventions: The computerandreasupertino
 
Similarities
SimilaritiesSimilarities
Similaritiesippnw
 
M01 Oo Intro
M01 Oo IntroM01 Oo Intro
M01 Oo IntroDang Tuan
 
October War_Effective Egyptian Preprarations Enable Strategic Surprise
October War_Effective Egyptian Preprarations Enable Strategic SurpriseOctober War_Effective Egyptian Preprarations Enable Strategic Surprise
October War_Effective Egyptian Preprarations Enable Strategic SurpriseW. Troy Ayres
 
Golda Meir And Arab Israeli Relations 35 Years After[1]
Golda Meir And Arab Israeli Relations 35 Years After[1]Golda Meir And Arab Israeli Relations 35 Years After[1]
Golda Meir And Arab Israeli Relations 35 Years After[1]Hackelmeier_Library
 
Algorithms Vs Meta Language
Algorithms Vs Meta LanguageAlgorithms Vs Meta Language
Algorithms Vs Meta LanguageKelly Bauer
 
Meloni
MeloniMeloni
Melonigalcec
 
Topic 1 intro power and ideas
Topic 1 intro power and ideasTopic 1 intro power and ideas
Topic 1 intro power and ideasHafidz Haron
 
The Social Corporate Revolution
The Social Corporate Revolution   The Social Corporate Revolution
The Social Corporate Revolution Stefano Mizzella
 
The Arab Spring: A simple compartmental model for the dynamics of a revolution
The Arab Spring: A simple compartmental model for the dynamics of a revolutionThe Arab Spring: A simple compartmental model for the dynamics of a revolution
The Arab Spring: A simple compartmental model for the dynamics of a revolutionHans De Sterck
 
Poverty and Hunger Reduction – a new mix of growth and social protection poli...
Poverty and Hunger Reduction – a new mix of growth and social protection poli...Poverty and Hunger Reduction – a new mix of growth and social protection poli...
Poverty and Hunger Reduction – a new mix of growth and social protection poli...Joachim von Braun
 
Donald Wilhite, University of Lincoln: Integrated national drought management
Donald Wilhite, University of Lincoln: Integrated national drought managementDonald Wilhite, University of Lincoln: Integrated national drought management
Donald Wilhite, University of Lincoln: Integrated national drought managementNAPExpo 2014
 
1948 Arab–Israeli
1948 Arab–Israeli1948 Arab–Israeli
1948 Arab–Israelijakblack
 
Nuclear power
Nuclear powerNuclear power
Nuclear powerAparna
 

Viewers also liked (20)

001 Middle East Intro
001 Middle East  Intro001 Middle East  Intro
001 Middle East Intro
 
US in the Middle East Part 2
US in the Middle East Part 2US in the Middle East Part 2
US in the Middle East Part 2
 
Inventions: The computer
Inventions: The computerInventions: The computer
Inventions: The computer
 
Similarities
SimilaritiesSimilarities
Similarities
 
M01 Oo Intro
M01 Oo IntroM01 Oo Intro
M01 Oo Intro
 
October War_Effective Egyptian Preprarations Enable Strategic Surprise
October War_Effective Egyptian Preprarations Enable Strategic SurpriseOctober War_Effective Egyptian Preprarations Enable Strategic Surprise
October War_Effective Egyptian Preprarations Enable Strategic Surprise
 
Golda Meir And Arab Israeli Relations 35 Years After[1]
Golda Meir And Arab Israeli Relations 35 Years After[1]Golda Meir And Arab Israeli Relations 35 Years After[1]
Golda Meir And Arab Israeli Relations 35 Years After[1]
 
Algorithms Vs Meta Language
Algorithms Vs Meta LanguageAlgorithms Vs Meta Language
Algorithms Vs Meta Language
 
Meloni
MeloniMeloni
Meloni
 
Topic 1 intro power and ideas
Topic 1 intro power and ideasTopic 1 intro power and ideas
Topic 1 intro power and ideas
 
The Social Corporate Revolution
The Social Corporate Revolution   The Social Corporate Revolution
The Social Corporate Revolution
 
The Arab Spring: A simple compartmental model for the dynamics of a revolution
The Arab Spring: A simple compartmental model for the dynamics of a revolutionThe Arab Spring: A simple compartmental model for the dynamics of a revolution
The Arab Spring: A simple compartmental model for the dynamics of a revolution
 
WWI 5 Weapons
WWI 5 WeaponsWWI 5 Weapons
WWI 5 Weapons
 
A global picture of drought occurrence, magnitude, and preparedness
A global picture of drought occurrence, magnitude, and preparednessA global picture of drought occurrence, magnitude, and preparedness
A global picture of drought occurrence, magnitude, and preparedness
 
Poverty and Hunger Reduction – a new mix of growth and social protection poli...
Poverty and Hunger Reduction – a new mix of growth and social protection poli...Poverty and Hunger Reduction – a new mix of growth and social protection poli...
Poverty and Hunger Reduction – a new mix of growth and social protection poli...
 
Chapter7
Chapter7Chapter7
Chapter7
 
Donald Wilhite, University of Lincoln: Integrated national drought management
Donald Wilhite, University of Lincoln: Integrated national drought managementDonald Wilhite, University of Lincoln: Integrated national drought management
Donald Wilhite, University of Lincoln: Integrated national drought management
 
1948 Arab–Israeli
1948 Arab–Israeli1948 Arab–Israeli
1948 Arab–Israeli
 
Chapter9
Chapter9Chapter9
Chapter9
 
Nuclear power
Nuclear powerNuclear power
Nuclear power
 

Similar to Javascript for php developer

Lập trình hướng đối tượng trong PHP
Lập trình hướng đối tượng trong PHPLập trình hướng đối tượng trong PHP
Lập trình hướng đối tượng trong PHPJino Hoàng
 
PHP.pdf
PHP.pdfPHP.pdf
PHP.pdfTinPh6
 
Chương 2: Ngôn ngữ PHP
Chương 2: Ngôn ngữ PHPChương 2: Ngôn ngữ PHP
Chương 2: Ngôn ngữ PHPHồ Lợi
 
Chapter 4 - Introduction to PHP.pdf
Chapter 4 - Introduction to PHP.pdfChapter 4 - Introduction to PHP.pdf
Chapter 4 - Introduction to PHP.pdfLPhct2
 
Lập trình hướng đối tượng trong PHP
 Lập trình hướng đối tượng trong PHP Lập trình hướng đối tượng trong PHP
Lập trình hướng đối tượng trong PHPNETKO Solution
 
Lập trình cơ bản: Function, khái niệm hàm, phân loại hàm trong Java (có ví dụ...
Lập trình cơ bản: Function, khái niệm hàm, phân loại hàm trong Java (có ví dụ...Lập trình cơ bản: Function, khái niệm hàm, phân loại hàm trong Java (có ví dụ...
Lập trình cơ bản: Function, khái niệm hàm, phân loại hàm trong Java (có ví dụ...CodeGym Đà Nẵng
 
PHP có thể làm gì? 9 Thứ thú vị có thể làm với PHP
PHP có thể làm gì?  9 Thứ thú vị có thể làm với PHPPHP có thể làm gì?  9 Thứ thú vị có thể làm với PHP
PHP có thể làm gì? 9 Thứ thú vị có thể làm với PHPNIIT - ICT Hà Nội
 
E learning lab - Tim hieu Cake PHP
E learning lab - Tim hieu Cake PHPE learning lab - Tim hieu Cake PHP
E learning lab - Tim hieu Cake PHPelearninglabvn
 
Bài 2 Các kỹ thuật lập trình MySQL với PHP nâng cao - Xây dựng ứng dụng web
Bài 2 Các kỹ thuật lập trình MySQL với PHP nâng cao - Xây dựng ứng dụng webBài 2 Các kỹ thuật lập trình MySQL với PHP nâng cao - Xây dựng ứng dụng web
Bài 2 Các kỹ thuật lập trình MySQL với PHP nâng cao - Xây dựng ứng dụng webMasterCode.vn
 
Golang web database3
Golang web database3Golang web database3
Golang web database3NISCI
 
Cq lt hdt-th2011-02-tuan04
Cq lt hdt-th2011-02-tuan04Cq lt hdt-th2011-02-tuan04
Cq lt hdt-th2011-02-tuan04. .
 
The Art of Readable Code - DongPV
The Art of Readable Code - DongPVThe Art of Readable Code - DongPV
The Art of Readable Code - DongPVĐông Đô
 
Javascript tong-hop a-z
Javascript tong-hop a-zJavascript tong-hop a-z
Javascript tong-hop a-zManhh Nguyễn
 
Web course php co ban
Web course   php co banWeb course   php co ban
Web course php co ban慂 志慂
 

Similar to Javascript for php developer (20)

Lesson 2 practice
Lesson 2 practiceLesson 2 practice
Lesson 2 practice
 
Lập trình hướng đối tượng trong PHP
Lập trình hướng đối tượng trong PHPLập trình hướng đối tượng trong PHP
Lập trình hướng đối tượng trong PHP
 
PHP.pdf
PHP.pdfPHP.pdf
PHP.pdf
 
Chương 2: Ngôn ngữ PHP
Chương 2: Ngôn ngữ PHPChương 2: Ngôn ngữ PHP
Chương 2: Ngôn ngữ PHP
 
Chapter 4 - Introduction to PHP.pdf
Chapter 4 - Introduction to PHP.pdfChapter 4 - Introduction to PHP.pdf
Chapter 4 - Introduction to PHP.pdf
 
Lập trình hướng đối tượng trong PHP
 Lập trình hướng đối tượng trong PHP Lập trình hướng đối tượng trong PHP
Lập trình hướng đối tượng trong PHP
 
Power your PHP skill
Power your PHP skillPower your PHP skill
Power your PHP skill
 
Lập trình cơ bản: Function, khái niệm hàm, phân loại hàm trong Java (có ví dụ...
Lập trình cơ bản: Function, khái niệm hàm, phân loại hàm trong Java (có ví dụ...Lập trình cơ bản: Function, khái niệm hàm, phân loại hàm trong Java (có ví dụ...
Lập trình cơ bản: Function, khái niệm hàm, phân loại hàm trong Java (có ví dụ...
 
Php02 ngon nguphp
Php02 ngon nguphpPhp02 ngon nguphp
Php02 ngon nguphp
 
PHP có thể làm gì? 9 Thứ thú vị có thể làm với PHP
PHP có thể làm gì?  9 Thứ thú vị có thể làm với PHPPHP có thể làm gì?  9 Thứ thú vị có thể làm với PHP
PHP có thể làm gì? 9 Thứ thú vị có thể làm với PHP
 
Flutter vs React Native 2018
Flutter vs React Native 2018Flutter vs React Native 2018
Flutter vs React Native 2018
 
E learning lab - Tim hieu Cake PHP
E learning lab - Tim hieu Cake PHPE learning lab - Tim hieu Cake PHP
E learning lab - Tim hieu Cake PHP
 
Web301 slide 2
Web301   slide 2Web301   slide 2
Web301 slide 2
 
Bài 2 Các kỹ thuật lập trình MySQL với PHP nâng cao - Xây dựng ứng dụng web
Bài 2 Các kỹ thuật lập trình MySQL với PHP nâng cao - Xây dựng ứng dụng webBài 2 Các kỹ thuật lập trình MySQL với PHP nâng cao - Xây dựng ứng dụng web
Bài 2 Các kỹ thuật lập trình MySQL với PHP nâng cao - Xây dựng ứng dụng web
 
Golang web database3
Golang web database3Golang web database3
Golang web database3
 
Cq lt hdt-th2011-02-tuan04
Cq lt hdt-th2011-02-tuan04Cq lt hdt-th2011-02-tuan04
Cq lt hdt-th2011-02-tuan04
 
Bai th08 php voi csdl
Bai th08 php voi csdlBai th08 php voi csdl
Bai th08 php voi csdl
 
The Art of Readable Code - DongPV
The Art of Readable Code - DongPVThe Art of Readable Code - DongPV
The Art of Readable Code - DongPV
 
Javascript tong-hop a-z
Javascript tong-hop a-zJavascript tong-hop a-z
Javascript tong-hop a-z
 
Web course php co ban
Web course   php co banWeb course   php co ban
Web course php co ban
 

More from Dang Tuan

Ube Databases
Ube DatabasesUbe Databases
Ube DatabasesDang Tuan
 
Session02 Part Ii
Session02 Part IiSession02 Part Ii
Session02 Part IiDang Tuan
 
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UML
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UMLPHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UML
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UMLDang Tuan
 
M02 Uml Overview
M02 Uml OverviewM02 Uml Overview
M02 Uml OverviewDang Tuan
 
UML for OOAD
UML for OOADUML for OOAD
UML for OOADDang Tuan
 
Object-Oriented Analysis & Design (OOAD) Domain Modeling Introduction
  Object-Oriented Analysis & Design (OOAD)  Domain Modeling Introduction  Object-Oriented Analysis & Design (OOAD)  Domain Modeling Introduction
Object-Oriented Analysis & Design (OOAD) Domain Modeling IntroductionDang Tuan
 
Introduction to Modeling Java and UML
Introduction to Modeling Java and UMLIntroduction to Modeling Java and UML
Introduction to Modeling Java and UMLDang Tuan
 
Information Systems Analysis and Design Overview of OOAD, UML, and RUP
 Information Systems Analysis and Design Overview of OOAD, UML, and RUP Information Systems Analysis and Design Overview of OOAD, UML, and RUP
Information Systems Analysis and Design Overview of OOAD, UML, and RUPDang Tuan
 
Ooad Overview
Ooad OverviewOoad Overview
Ooad OverviewDang Tuan
 
M03 2 Behavioral Diagrams
M03 2 Behavioral DiagramsM03 2 Behavioral Diagrams
M03 2 Behavioral DiagramsDang Tuan
 
M05 Metamodel
M05 MetamodelM05 Metamodel
M05 MetamodelDang Tuan
 
M04 Design Patterns
M04 Design PatternsM04 Design Patterns
M04 Design PatternsDang Tuan
 
M03 1 Structuraldiagrams
M03 1 StructuraldiagramsM03 1 Structuraldiagrams
M03 1 StructuraldiagramsDang Tuan
 
Xay Dung Web Tu Bat Dau Den Hoan Chinh Bang Css
Xay Dung Web Tu Bat Dau Den Hoan Chinh Bang CssXay Dung Web Tu Bat Dau Den Hoan Chinh Bang Css
Xay Dung Web Tu Bat Dau Den Hoan Chinh Bang CssDang Tuan
 

More from Dang Tuan (18)

Ube Databases
Ube DatabasesUbe Databases
Ube Databases
 
Chapter1
Chapter1Chapter1
Chapter1
 
Chapter3
Chapter3Chapter3
Chapter3
 
Chapter5
Chapter5Chapter5
Chapter5
 
Session02 Part Ii
Session02 Part IiSession02 Part Ii
Session02 Part Ii
 
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UML
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UMLPHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UML
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UML
 
Ooad Uml
Ooad UmlOoad Uml
Ooad Uml
 
M02 Uml Overview
M02 Uml OverviewM02 Uml Overview
M02 Uml Overview
 
UML for OOAD
UML for OOADUML for OOAD
UML for OOAD
 
Object-Oriented Analysis & Design (OOAD) Domain Modeling Introduction
  Object-Oriented Analysis & Design (OOAD)  Domain Modeling Introduction  Object-Oriented Analysis & Design (OOAD)  Domain Modeling Introduction
Object-Oriented Analysis & Design (OOAD) Domain Modeling Introduction
 
Introduction to Modeling Java and UML
Introduction to Modeling Java and UMLIntroduction to Modeling Java and UML
Introduction to Modeling Java and UML
 
Information Systems Analysis and Design Overview of OOAD, UML, and RUP
 Information Systems Analysis and Design Overview of OOAD, UML, and RUP Information Systems Analysis and Design Overview of OOAD, UML, and RUP
Information Systems Analysis and Design Overview of OOAD, UML, and RUP
 
Ooad Overview
Ooad OverviewOoad Overview
Ooad Overview
 
M03 2 Behavioral Diagrams
M03 2 Behavioral DiagramsM03 2 Behavioral Diagrams
M03 2 Behavioral Diagrams
 
M05 Metamodel
M05 MetamodelM05 Metamodel
M05 Metamodel
 
M04 Design Patterns
M04 Design PatternsM04 Design Patterns
M04 Design Patterns
 
M03 1 Structuraldiagrams
M03 1 StructuraldiagramsM03 1 Structuraldiagrams
M03 1 Structuraldiagrams
 
Xay Dung Web Tu Bat Dau Den Hoan Chinh Bang Css
Xay Dung Web Tu Bat Dau Den Hoan Chinh Bang CssXay Dung Web Tu Bat Dau Den Hoan Chinh Bang Css
Xay Dung Web Tu Bat Dau Den Hoan Chinh Bang Css
 

Javascript for php developer

  • 1. Javascript for PHP Developer Đặng Minh Tuấn - hoctudau.com PHP Day 2012 HOCTUDAU.COM DANG MINH TUAN
  • 2. About Me Đặng Minh Tuấn ● www.ddth.com/member.php/51960-zmt264 ● linkhay.com/u/ohisee ● www.facebook.com/dangminhtuan ● www.youtube.com/hoctudau ● hoctudau.com Kinh nghiệm: ● 2006: FrontEnd Engineer tại World Ideas ● 2008: Project Manager kiêm Tech Lead tại NAISCORP (socbay.com) Diễn giả PHP Day nhiều năm: ● 2008 = HTML, CSS, JS Best Practices ● 2009 = HTML, CSS Trends ● 2010 = HTML5, CSS3, JS ● 2012 += Power your PHP Skill (by learning HTML, CSS, JS :D) HOCTUDAU.COM DANG MINH TUAN
  • 3. Quy ước: Chữ cái ● JS = Javascript ● dev = developer ● app = application ● hoctudau = tên biến, hàm ngẫu nhiên ● hoc tu dau = chuỗi ngẫu nhiên Phát âm: Anh hay Việt? ● PHP ● echo HOCTUDAU.COM DANG MINH TUAN
  • 4. Quy ước: mầu nền PHP và JS giống nhau: Nền trắng, chữ đen HOCTUDAU.COM DANG MINH TUAN
  • 5. Quy ước: mầu nền PHP và JS khác nhau: nền đen, chữ trắng HOCTUDAU.COM DANG MINH TUAN
  • 6. Phần 1: Vai trò của JS trong thế giới web hiện đại HOCTUDAU.COM DANG MINH TUAN
  • 7. Cơ duyên nào đưa bạn đến với PHP? ● Đầu tiên là học làm web tĩnh: HTML, CSS trước. ● Một số người biết JS trước cả PHP ● Sự thực: một số lập trình PHP không giỏi HTML, CSS, JS nhưng đa số đều biết HTML, CSS, JS ở mức độ nào đó. Hiếm ai (tôi chưa gặp ai) chỉ biết mỗi PHP! HOCTUDAU.COM DANG MINH TUAN
  • 8. Tại sao lập trình viên PHP nên học (và giỏi) Javascript ● Trong quá khứ xa: ứng dụng web tập trung vào server-side hơn. ● Thời gian gần đây: client side trở nên phức tạp hơn và thực hiện nhiều nhiệm vụ hơn (richer). Web apps cân bằng hơn giữa client side và server side (thậm chí là client side nhỉnh hơn). ● HTML, CSS, JS làm được nhiều thứ!!!. ● Học không có nghĩa là "copy & paste", hoặc biết dùng "tool sinh code" => học như bạn đã học PHP
  • 9. JS làm được gì? Tạo ứng dụng mobile bằng HTML, CSS, JS với các Web RunTime platforms (WRTs) ● iPhone — Titanium Mobile, PhoneGap ● Android — Titanium Mobile, PhoneGap) ● Palm webOS — Mojo ● Sony Ericsson — Sony Ericsson WebSDK (PhoneGap) ● Nokia — Nokia WRT ● Blackberry — PhoneGap HOCTUDAU.COM DANG MINH TUAN
  • 10. JS làm được gì? Và nhiều thứ khác ● Brower Extensions: Firefox Addons, Google Chrome Extensions ... ● Desktop Application: Windows 8 Apps, Google Chrome Package Apps, ... ● Google Script (Google Forms, Spreadsheet...): Enterprise Apps ● Web Games, Web Apps ● Server side: Node.js HOCTUDAU.COM DANG MINH TUAN
  • 11. Cần học những gì của JS? Không chỉ đơn giản là "tooltip", "menu", "chuyển động". Mà còn là: ● Quản lý và thực thi những hành vi người dùng phức tạp ở giao diện người dùng (UI). ● Tương tác với API ở client: DOM, local storage ... ● Kể cả học các Framework như jQuery thì cũng cần nắm vững căn bản về JS (sẽ liệt kê kiến thức ở phần cuối bài thuyết trình) vì làm jQuery cũng vẫn dùng cái đó. HOCTUDAU.COM DANG MINH TUAN
  • 12. Tin tốt ● Javascript có cú pháp C-Like (NHƯ PHP). Nếu bạn thực hiện những toán đơn giản: cộng, trừ, tính số PI, tính sin... thì có thể code hoàn toàn như PHP. ● Việc học tập giúp bạn trở nên thông minh hơn, học nhanh hơn, đáp ứng được nhiều yêu cầu (tuyển dụng, của khách...) hơn. ● Bây giờ có nhiều JS Frameworks rất tốt: jQuery,... ● Cộng đồng JS dev: đa dạng, sáng tạo, đông đảo HOCTUDAU.COM DANG MINH TUAN
  • 13. Tin xấu Vài thứ khá khác biệt ● Object Model dễ gây hiểu lầm ● Scope rất khác biệt ● Khả năng tùy biến: rất quái dị ● và nhiều khác biệt khác HOCTUDAU.COM DANG MINH TUAN
  • 14. Học ở đâu và như thế nào? Rất nhiều link, sách lởm: lạc hậu hoặc tập trung vào các "công thức". Vài nguồn đáng tham khảo: ● Mozilla’s Core JavaScript Guide ● Mozilla’s Core JavaScript Reference ● Eloquent JavaScript ● JavaScript: The Definitive Guide HOCTUDAU.COM DANG MINH TUAN
  • 15. Phần 2: Vài kiến thức JS cơ bản học nhanh JS trong 15 phút, dành cho những lập trình viên PHP chưa biết hoặc chỉ biết một chút về JS HOCTUDAU.COM DANG MINH TUAN
  • 16. Chú ý bạn là PHP developer, tức là coi như bạn đã biết kiến thức căn bản và tư duy lập trình: ● bản chất của biến, đối tượng ● các kiểu biến: số, chuỗi, mảng, lớp ... ● phép gán, biểu thức, biểu thức chính quy ... ● các phép toán, toán tử ... ● lệnh điều kiện (rẽ nhánh): if, else, switch ... ● vòng lặp: while, do, for ... ● nguyên lý DRY
  • 17. Đặt tên biến: Giống $n = 1; $n = 1; $b = true; $b = true; $s = "hoc tu dau"; $s = "hoc tu dau"; HOCTUDAU.COM DANG MINH TUAN
  • 18. Đặt tên biến: Khác n=1 $n = 1; $ = 1; var n = 1; var x = 0, y = ''; $x = 0; $y = ''; HOCTUDAU.COM DANG MINH TUAN
  • 19. Khai báo biến: Mảng var a = [1,2,3]; $a = array(1,2,3); HOCTUDAU.COM DANG MINH TUAN
  • 20. Khai báo biến: Mảng $a = [1,2,3]; PHP 5.4 $a = [1,2,3]; HOCTUDAU.COM DANG MINH TUAN
  • 21. Khai báo biến: Mảng liên kết (assoc) var o = { $o = array( "one":1, "one"=>1, "two":2 "two"=>2 }; ); PHP 5.4 ["one"=>1, "two"=>2]
  • 22. Bản chất và Nhập dữ liệu Javascript: Chạy ở client-side PHP: chạy ở server và lấy được dữ <div id="x">5</div> liệu gửi từ client-side lên <input id="y"> <form> <script> <input name="y"> a = document.getElementById("x"); <input type="submit"> b = a.innerHTML; </form> c = document.getElementById("y"); <?php d = c.value; $a = $_GET['y']; HOCTUDAU.COM DANG MINH TUAN
  • 23. Bản chất và Xuất dữ liệu Javascript: Chạy ở client-side PHP: chạy ở server và gửi được dữ <div id="x">5</div> liệu xuống client-side <input id="y"> <form> <script> <input name="y"> a = document.getElementById("x"); <input type="submit"> b = a.innerHTML; </form> a.innerHTML = 2 * b; <?php c = document.getElementById("y"); $a = $_GET['y']; d = c.value; echo 2 * $a; c.value = 3 * d;
  • 24. JS Hello World - Event-Driven Programming
  • 25. Cú pháp if (1===1) {...} if (1===1) {...} switch, for, while, do- switch, for, while, do- while while for (var i=0, out=''; i<100; i++) { for ($i=0, $out=''; $i<100; $i++) { out += i + ','; $out .= $i . ','; } } funtion hoctudau(a,b=2) { funtion hoctudau($a,$b=2) { return a*b; return $a*$b; } }
  • 26. Closures (Anonymous functions) var hoctudau = function (a,b) { return a * b; } hoctudau(3, 4); //12 PHP 5.3 (PHP 5.4 hỗ trợ $this) $hoctudau = function ($a,$b) { return $a * $b; } $hoctudau(3, 4); //12
  • 27. Function Scope: Phạm vi hàm $a = function () { $a = function () { $c =3; $c =3; $b = function ($a, $b) { $b = function ($a, $b) { return $c * $a * $b; return $c * $a * $b; }; }; return $b; return $b; }; }; $b = $a(); $b = $a(); alert($b(1, 2)); //6 echo($b(1, 2)); //Notice: Undefined variable: c //0
  • 28. Tạo và gọi hàm trong JS Lưu ý: nếu muốn làm tốt hơn, nâng cao hơn thì nên tìm hiểu về Unobstrusive JS
  • 29. Bắt lỗi try { try { throw new Error('ouch'); throw new Exception('ouch'); } catch (e) { } catch (Exception $e) { msg = e.message; msg = $e -> getMessage(); } } HOCTUDAU.COM DANG MINH TUAN
  • 30. Toán tử nối chuỗi: nối chuỗi: x = 'hoc' + 'tu'; $x = 'hoc' . 'tu'; x += 'dau'; //hoctudau $x .= 'dau'; //hoctudau HOCTUDAU.COM DANG MINH TUAN
  • 31. Constructors/Classes var hoctudau = new OnlineCenter(); $hoctudau = new OnlineCenter(); HOCTUDAU.COM DANG MINH TUAN
  • 32. PHP Class Class class OnlineCenter { var $name; //PHP 4 public $name; //PHP 5 JS constructor function function __construct($name) { function OnlineCenter(name) { $this->name = $name; this.name = name; } this.getName = function () { function getName() { return this.name; return $this->name; } } } } var hoctudau = new OnlineCenter $hoctudau = new OnlineCenter ("HocTuDau"); ("HocTuDau"); hoctudau.getName(); //HocTuDau hoctudau->getName();//HocTuDau
  • 33. PHP Class Class class OnlineCenter { var $name; //PHP 4 public $name; //PHP 5 JS Prototype function __construct($name) { function OnlineCenter (name) { $this->name = $name; this.name = name; } } function getName() { OnlineCenter.prototype.getName = return $this->name; function() { } return this.name; } } $hoctudau = new OnlineCenter var hoctudau = new OnlineCenter ("HocTuDau"); ("HocTuDau"); hoctudau->getName();//HocTuDau hoctudau.getName(); //HocTuDau
  • 34. Class JS Object literal PHP Literal var hoctudau = { $hoctudau = (object) array(); name: "HocTuDau", $hoctudau->name = 'HocTudau'; $hoctudau->getName = function() { getName: function() { return $GLOBALS['hoctudau']->name; return this.name; }; } }; $method = $hoctudau->getName; hoctudau.getName(); //HocTuDau echo $method();//HocTuDau HOCTUDAU.COM DANG MINH TUAN
  • 35. Class JS Object literal PHP (5.4) Literal var hoctudau = { https://github.com/aviat4ion/JSObject name: "HocTuDau", $hoctudau = new JSObject( getName: function() { 'name' => 'HocTuDau'; 'getName' => function() { return this.name; return $this->name; } } }; ); hoctudau.getName(); //HocTuDau $hoctudau->getName();//HocTuDau
  • 36. Funny JS 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 HOCTUDAU.COM DANG MINH TUAN
  • 37. 9 global functions 4 number-related 4 number-related parseInt() intval() parseFloat() floatval() isNaN() is_nan() isFinite() is_finite() 4 to encode/decode URIs 4 to encode/decode URIs encodeURIComponent() urlencode() decodeURIComponent() urldecode() encodeURI() ?? decodeURI() ?? eval() eval()
  • 39. Literals var o = {}; var o = new Object(); var a = []; var a = new Array(); var re = /[a-z]/gmi; var re = new RegExp("[a-z]", "gmi"); var f = function(..) {...} var f = new Function("..","..."); function f(..) {...} var s = 'hoctudau'; var s = new String('hoctudau'); var n = 123; var n = new Number(123); var b = true; var b = new Boolean(true);
  • 40. Object.prototype var o = {}; o.toString(); // "[object Object]" o.valueOf() === o; //true o.hasOwnProperty('toString'); //false o.propertyIsEnumerable('toString'); //false o.isPrototypeOf(Array); //false o.constructor === Object; //true
  • 41. Array.prototype var a = [1,2,3,4]; a.length; // 4 a.push('hoc tu dau'); //[1,2,3,4,'hoc tu dau'] a.pop(); //[1,2,3] a.unshift('hoc tu dau'); //['hoc tu dau',1,2,3,4] a.shift(); //[2,3,4] a = a.concat(5,6,'htd'); //[1,2,3,4,5,6,'htd'] HOCTUDAU.COM DANG MINH TUAN
  • 42. Array.prototype var a = [3,2,4,1,2]; a.sort; //[1,2,2,3,4] a.indexOf(2); //1 a.lastIndexOf(2); //4 a.slice(1,3); //[2,4] a.splice(...); //remove and add item(s) a.reverse(); //[2,1,4,2,3] a.join(' > '); //"3 > 2 > 4 > 1 > 2" ~ implode() HOCTUDAU.COM DANG MINH TUAN
  • 43. RegExp.prototype var re = /[a-z]/gmi; re.exec("hoc tu dau"); //"h" (returns matches) re.test("hoc tu dau"); //true (returns true|false) re.lastIndex; re.source; //"[a-z]" /[0-9]/g.global; //true /[0-9]/m.multiline; //true /[0-9]/i.ignoreCase; //true HOCTUDAU.COM DANG MINH TUAN
  • 44. String.prototype var s = 'Hoc Tu Dau'; s.length; //10 s.indexOf('u'); //5 s.lastIndexOf('u'); //9 s.charAt(1); //"o" s.charCodeAt(1); //111 s.toLowerCase(); //'hoc tu dau' s.toUpperCase(); //HOC TU DAU' HOCTUDAU.COM DANG MINH TUAN
  • 45. String.prototype var s = 'hoc tu dau'; s.split(" "); //["hoc", "tu", "dau"] - có thể dùng (/ /) s.replace(/ /g, ""); //"hoctudau" s.concat('.com'); //"hoc tu dau.com" s.search(/tu/); ; //4 s.match(/[a-z]/g); ; //["h", "o", "c" ... s.slice(4,6); //"tu" s.substring(0,3); //"hoc" s.substr(0,3); //"hoc"
  • 46. Number.prototype new Number(123).toFixed(2); // 123.00 (1000000000000).toExponential(); //1e+12 (1000000000000).toPrecision(3); //1.00e+12 Number.MIN_VALUE; // 5e-324 Number.POSITIVE_INFINITY; //Infinity Number.NaN; //NaN HOCTUDAU.COM DANG MINH TUAN
  • 47. Math Constants ● Math.E, Math.PI ... and about 6 more Methods ● Math.min(), Math.max(), ● Math.random(), Math.round(), Math.sin(), ● ... and about 14 more ... HOCTUDAU.COM DANG MINH TUAN
  • 48. Date var d = new Date(2012, 12, 21); d.getDate(); //21 d.getDay(); //1 d.getFullYear(); //2013 !!! d.getMonth(); //0 !!! d.getHours(); d.setFullYear(); d.setHours(); ... d.toString(); d.toTimeString(); d.toDateString();... Date.now(); Date.parse(); ...
  • 49. Q&A & resources http://bit.ly/phpday2012 HOCTUDAU.COM DANG MINH TUAN