PHP dành cho JavaScript Developer

Ngày đăng: 19/01/2021   -    Cập nhật: 20/01/2021
Mình bắt đầu học cách lập trình vào vài năm trước với HTML, CSS và JavaScript. Kể từ khi bắt đầu, PHP đã luôn là ngôn ngữ mình muốn học.


Cũng khá khó để nhảy vào HỌC LẬP TRÌNH PHP nếu bạn chưa bao giờ chạm vào dòng code nào trước đây. Nhưng nếu bạn đã học JavaScript cơ bản rồi thì lại khác.


> Note: Nếu đang làm về JavaScript thì càng dễ


Vì vậy, đó là lý do tại sao mình viết bài PHP dành cho JavaScript Developer này. Mình muốn có thể giúp những người khác giống như mình, những người chỉ cần tìm hiểu nhanh về PHP.


PHP dành cho JavaScript Developer


1. Cú pháp cơ bản của PHP



Một trong những điểm khác biệt lớn nhất giữa cú pháp của PHP và JavaScript là dấu chấm phẩy ; là bắt buộc ở cuối câu lệnh PHP.


Lúc đầu, dùng JS mình không quan tâm lắm nên khi dùng PHP có đôi lúc cũng quên. Vì thế, đây là thứ mà mình muốn nhắc bạn đầu tiên.



Đừng quên ;


Sử dụng PHP



Trong JavaScript, bạn chỉ cần lưu tệp với đuôi .js là có thể chạy code. Tuy nhiên, trong PHP, bạn cần sử dụng các thẻ <?php ?>, ngay cả trong một tệp đã được lưu với đuôi là .php



<?php
    // Code PHP của bạn ở đây
?>
 


> Lưu ý: Mặc dù bạn có thể viết ?> ở cuối file PHP nhưng phải bỏ đi ở các tệp chỉ chứa PHP: https://www.php-fig.org/psr/psr-12/


Khai báo biến trong PHP



Tạo một biến trong PHP rất đơn giản. Giống như JavaScript, PHP là một ngôn ngữ kiểu dynamic và do đó, bạn không phải khai báo kiểu dữ liệu của biến.


Nhưng lưu ý, luôn sử dụng ký hiệu $ ở đầu để biểu thị các biến.




// Luôn sử dụng ký hiệu $ ở đầu
// để tạo biến trong PHP
$bienA = "Học PHP";
 


Theo mặc định trong PHP, bất kỳ biến nào bạn khai báo đều có thể thay đổi được. Nó có thể được thay đổi hoàn toàn ở bất cứ đâu.


Khai báo hằng số trong PHP



PHP có một hàm đặc biệt được gọi là define() được sử dụng để tạo cụ thể các biến không thể thay đổi (Hằng số).


Tên hằng số hợp lệ bắt đầu bằng một chữ cái hoặc dấu gạch dưới _ (không có dấu $ trước tên hằng).


> Lưu ý: Không giống như các biến, hằng số tự động là toàn cục.


Hàm define() cần 3 đối số:



  • Tên của biến
  • Và giá trị bạn muốn gán cho nó.
  • Phân biệt chữ hoa chữ thường


Theo mặc định (false), biến này cũng phân biệt chữ hoa chữ thường.



// Khai báo hằng số
define('DOMAIN_NAME'"niithanoi.edu.vn");

echo DOMAIN_NAME; // niithanoi.edu.vn
 


Bạn có thể khiến nó không phân biệt chữ hoa chữ thường bằng cách truyền true làm đối số thứ 3.



// Khai báo hằng số
// true: Không phân biệt HOA thường
// Mặc định false: Có phân biệt HOA thường

define('DOMAIN_NAME'"niithanoi.edu.vn"true);

echo domain_name; // niithanoi.edu.vn
 


Khai báo mảng PHP



Giống như mảng trong JavaScript, mảng PHP có thể được tạo bằng ký hiệu dấu ngoặc [ ] hoặc bằng một hàm trong PHP.



// Khai báo mảng trong PHP
$mangPHP = [1234];
 


Mảng kết hợp của PHP tương đương với một Đối tượng JavaScript và là một cách để tạo một tập hợp các cặp key / value trong PHP mà không cần import một module nào đó.


Việc gán giá trị cho một khóa trong PHP được ký hiệu là =>




// Khai báo mảng kết hợp trong PHP
$mangPHP = ['key1' => 'value1''key2' => 'value2'];
 


Hàm trong PHP



Các hàm trong PHP rất giống với JavaScript (ES5).



// Khai báo hàm trong PHP
function hamPHP($thamSo) {
    return $thamSo;
}
 


Sự khác biệt thực sự duy nhất mà mình có thể tìm thấy giữa hai ngôn ngữ về vấn đề này là PHP có một toán tử: &


Nó là được sử dụng như thế này:




// Khai báo biến
$bienA = 10;

// Xem giá trị của $bienA
echo $bienA# Kết quả: 10

// Hàm cộng 10
function cong10(&$thamSo) {
    return $thamSo += 10;
}

// Gọi hàm
cong10($bienA);

// Xem lại giá trị của $bienA
echo $bienA# Kết quả: 20
 


Như vậy, bạn thấy đó. Sự thay đổi trong hàm cong10 có tác động thay đổi biến ở ngoài hàm.


Ngược lại, nếu bạn không sử dụng &$thamSo mà sử dụng $thamSo thì sự thay đổi của $bienA trong hàm cong10 không làm thay đổi $bienA ở ngoài hàm.



Vòng lặp trong PHP



Giống như hàm, các vòng lặp trong PHP không khác nhiều so với cách chúng được viết bằng JavaScript.


Một ngoại lệ là vòng lặp foreach của PHP thay đổi dựa trên loại mảng mà bạn đang cố gắng lặp lại.


Mảng bình thường:




// Lặp qua mảng thông thường
foreach($tenMang as $bienDaiDien) {
    // Code của bạn
}
 


Đối với mảng kết hợp:



// Lặp qua mảng kết hợp
foreach($tenMang as $khoa => $giaTri) {
    // Code của bạn
}
 


2. Class và OOP trong PHP



Khái niệm class trong PHP khác với JavaScript khá nhiều.


Mặc dù PHP không khởi đầu như một Ngôn ngữ lập trình hướng đối tượng. Nó tương tự như JavaScript — tính năng hướng đối tượng (OOP) này đã được thêm vào từ phiên bản PHP 5.



Chỉ định mức độ truy cập (Access Modifier)



Trong JS chuẩn, các từ khóa bổ trợ chỉ định mức độ truy cập là không cần thiết cho các class. Đối với PHP, nó cũng không bắt buộc.


Các Modifier mà bạn có trong PHP là:



  • public: Khi chúng ta xác định các thành viên của class là public, thì chúng có thể truy cập từ mọi nơi, ngay cả từ bên ngoài phạm vi class.
  • private: Khi chúng ta định nghĩa các thành viên của lớp là private, chúng chỉ có thể được truy cập từ bên trong chính class đó.
  • protected: Cũng giống như private, với một ngoại lệ, các thành viên của class được định nghĩa là protected vẫn có thể được truy cập từ lớp con của nó (Nếu nó được kế thừa kế thừa).
  • abstract: Từ khóa này chỉ được sử dụng cho các class PHP và các hàm thành viên của nó để đạt được sự trừu tượng.
  • final: Các phương thức của class được định nghĩa là final là không thể thay đổi hoặc ghi đè bởi bất kỳ lớp con nào.


Mặc dù nó là không bắt buộc, nhưng khi tạo một class trong PHP, tốt nhất là sử dụng các từ khóa này để cho class biết nó cần làm gì với các thuộc tính và phương thức của nó.



class SinhVien {
    private $ten;
    public function __construct($ten) {
        $this -> ten = $ten;
    }
}
 


Bạn sẽ nhận thấy một vài điều trong đoạn code trên.


Đầu tiên có lẽ sẽ là hai từ khóa bổ trợ privatepublic.


Ở đây, chúng ta đang khai báo một biến private được gọi là $ten sẽ chỉ có thể truy cập được qua SinhVien.


Thứ hai, là từ khóa public mà chúng ta đang sử dụng cùng với phương thức __construct được tích hợp sẵn của PHP.


Điều này cho phép chúng ta khởi tạo một class như thể nó là một hàm, giống như chúng ta làm trong JavaScript.




$sinhVienA = new SinhVien("Ngọc Anh");
 


This và Arrow



Tiếp tục với ví dụ SinhVien ở trên, bạn sẽ nhận thấy rằng chúng ta đang sử dụng giống như cách chúng ta sử dụng trong JavaScript.


Sự khác biệt ở đây là chúng tôi đang sử dụng một mũi tên -> để truy cập ten trên class.




class SinhVien {
    public $ten;
    public function __constructor($ten) {
        $this->ten = $ten;
    }
}
 


Chúng ta cũng sẽ sử dụng con trỏ -> này để truy cập bất kỳ thứ gì trên class mà chúng tôi cần sử dụng trong toàn bộ code của mình.


Còn đây là một class trong JavaScript:




class SinhVien {
    constructor(ten) {
        this.ten = ten;
    }
}
 


Getter và Setter trong PHP



GettersSetters là các phương thức của class được sử dụng để lấythiết lập (hoặc cập nhật) giá trị của các thuộc tính trong class.


Trong JavaScript, chúng ta thường không cần tạo chúng và tương tự như vậy, chúng không bắt buộc trong PHP.


Nhưng bạn sẽ thấy chúng thường xuyên trong PHP, vì vậy mình nghĩ rằng bạn cần xem xét chỗ này kỹ hơn.


Về cơ bản, chúng ta đang cố hạn chế việc sửa đổi / lấy dữ liệu từ bên ngoài theo cách thức không được phép.


Chúng ta chỉ cho phép lấy và sửa đổi dữ liệu theo cách chúng ta muốn.




class SinhVien {
    private $ten;
    public function __construct($ten) {
        $this->ten = $ten;
    }

    // Phương thức getter
    public function get_ten() {
        return $this->ten;
    }

    // Phương thức setter
    public function set_ten($ten) {
        $this->ten = $ten;
    }
}

$sinhVienA = new SinhVien("Ngọc Anh");

echo $sinhVienA->get_ten(); // Ngọc Anh
 


> Lưu ý: Thực sự thì setters không cần thiết trong PHP.


Kế thừa trong PHP



Kế thừa trong PHP là khi một lớp dẫn xuất từ ​​một lớp khác.


Lớp con sẽ kế thừa tất cả các thuộc tính và phương thức publicprotected từ lớp cha. Ngoài ra, nó có thể có các thuộc tính và phương thức private.


Một lớp kế thừa được xác định bằng cách sử dụng từ khóa extends.


Hãy xem một ví dụ:




class SinhVien {
    private $ten;
    public $tuoi;

    // Hàm khởi tạo
    public function __construct($ten, $tuoi) {
        $this->ten = $ten;
        $this->tuoi = $tuoi;
    }

    // Phương thức
    public function thongTin() {
        echo "Sinh viên {$this->ten} hiện {$this->tuoi} tuổi.";
    }
}

// Class SinhVienNam 1 kế thừa (mở rộng) Class SinhVien
class SinhVienNam1 extends SinhVien {
    public function thongBao() {
        echo "Chào thanh xuân!";
    }
}

// Khởi tạo đối tượng mới
$sinhVienNam1 = new SinhVienNam1("Ngọc Anh"18);

// Gọi phương thức của lớp cha
$sinhVienNam1->thongTin();
echo "<br />";
// Gọi phương thức của lớp con
$sinhVienNam1->thongBao();
 


Kết quả ta được:



Sinh viên Ngọc Anh hiện 18 tuổi.
Chào thanh xuân!
 


Như bạn thấy, trong class SinhVienNam1 không có khai báo hàm khởi tạo, biến, phương thức gì cả nhưng vẫn gọi được. Đó là vì nó đã kế thừa toàn bộ từ class SinhVien


Và trong class SinhVienNam1 chúng ta tạo thêm một phương thức thongBao() của riêng nó.


Bây giờ, chúng ta thử thay đổi phương thức thongTin() thành protected và thử gọi nó ở bên ngoài class thử xem.




class SinhVien {
    private $ten;
    public $tuoi;

    // Hàm khởi tạo
    public function __construct($ten, $tuoi) {
        $this->ten = $ten;
        $this->tuoi = $tuoi;
    }

    // Phương thức
    protected function thongTin() {
        echo "Sinh viên {$this->ten} hiện {$this->tuoi} tuổi.";
    }
}

// Class SinhVienNam 1 kế thừa (mở rộng) Class SinhVien
class SinhVienNam1 extends SinhVien {
    public function thongBao() {
       echo "Chào thanh xuân!";
    }
}

// Khởi tạo đối tượng mới
$sinhVienNam1 = new SinhVienNam1("Ngọc Anh"18);

// Gọi phương thức của lớp con
$sinhVienNam1->thongBao();
echo "<br />";
// Gọi phương thức protected của lớp cha
$sinhVienNam1->thongTin();
 


Kết quả:



Chào thanh xuân!
 


Như vậy, chúng ta không thể gọi phương thức protected từ bên ngoài class dẫn xuất.


Còn bây giờ, thử gọi phương thức protected bên trong class dẫn xuất như bên dưới xem sao nhé:




class SinhVien {
    private $ten;
    public $tuoi;

    // Hàm khởi tạo
    public function __construct($ten, $tuoi) {
        $this->ten = $ten;
        $this->tuoi = $tuoi;
    }

    // Phương thức
    protected function thongTin() {
        echo "Sinh viên {$this->ten} hiện {$this->tuoi} tuổi.";
    }
}

// Class SinhVienNam 1 kế thừa (mở rộng) Class SinhVien
class SinhVienNam1 extends SinhVien {
    public function thongBao() {
        $this->thongTin();
        echo  "<br />";
        echo "Chào thanh xuân!";
    }
}

// Khởi tạo đối tượng mới
$sinhVienNam1 = new SinhVienNam1("Ngọc Anh"18);

// Gọi phương thức của lớp con
$sinhVienNam1->thongBao();
 


Kết quả:



Sinh viên Ngọc Anh hiện 18 tuổi.
Chào thanh xuân!
 


Chúng ta cũng có thể ghi đè phương thức.



class SinhVien {
    private $ten;
    private $tuoi;

    // Hàm khởi tạo
    public function __construct($ten, $tuoi) {
        $this->ten = $ten;
        $this->tuoi = $tuoi;
    }

    // Phương thức
    public function thongTin() {
        echo "Sinh viên {$this->ten} hiện {$this->tuoi} tuổi.";
    }
}

// Class SinhVienNam1
class SinhVienNam1 extends SinhVien {
    private $canNang;

    // Ghi đè phương thức constructor
    public function __construct($ten, $tuoi, $canNang) {
        $this->ten = $ten;
        $this->tuoi = $tuoi;
        $this->canNang = $canNang;
    }

    // Ghi đè phương thức
    public function thongTin() {
        echo "{$this->ten} hiện {$this->tuoi} tuổi.";
        echo "<br />";
        echo "{$this->canNang} kg";
    }
}

// Khởi tạo đối tượng mới
$sinhVienNam1 = new SinhVienNam1("Ngọc Anh"1880);

// Gọi phương thức của lớp con
$sinhVienNam1->thongTin();
 


Kết quả:



Ngọc Anh hiện 18 tuổi.
80 kg
 


Phương thức Static


Trong PHP, phương thức stactic có thể gọi trực tiếp



class SinhVien {
    public static function phuongThucStatic() {
        echo "Xin chào!";
    }
}

SinhVien::phuongThucStatic(); // Xin chào!
 


Ngoài ra, trong class, chúng ta có thể có phương thức stactic và phương thức non-static. Để truy cập phương thức static ở trong class chúng ta sử dụng từ khóa self và dấu 2 chấm ::


Ví dụ:



class SinhVien {
    public static function phuongThucStatic() {
        echo "Xin chào!";
    }
    public function __construct() {
        self::phuongThucStatic();
    }
}

new SinhVien(); // Xin chào!
 


Tổng kết



Như vậy là mình đã giới thiệu qua về PHP cho JavaScript Developer. Cũng đơn giản thôi phải không?


PHP vốn đã là một ngôn ngữ dễ học, nếu bạn đã quen với JavaScript rồi thì càng dễ học PHP nữa (Sẽ có đôi chút khác nhau nhưng không vấn đề gì).


Thế nên, hãy tự tin mở rộng kiến thức của mình.



---
HỌC VIỆN ĐÀO TẠO CNTT NIIT - ICT HÀ NỘI
Học Lập trình chất lượng cao (Since 2002). Học thực tế + Tuyển dụng ngay!
Đc: Tầng 3, 25T2, N05, Nguyễn Thị Thập, Cầu Giấy, Hà Nội
SĐT: 02435574074 - 0968051561
Email: hello@niithanoi.edu.vn
Fanpage: https://facebook.com/NIIT.ICT/
 
#niit #niithanoi #niiticthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp #java #php #python
Bình luận Facebook
Khóa học liên quan đến bài viết

Khóa học PHP Full stack [2023] cho người mới bắt đầu

96 giờ
Khóa học Lập trình PHP Full stack, phiên bản cập nhật lần thứ 8. Dạy Lập trình PHP bài bản từ Front end đến Back end + Laravel. Hướng dẫn làm 2 Dự Án Web lớn

KHÓA HỌC PYTHON HƯỚNG ĐỐI TƯỢNG

50 giờ
Khóa học giúp học viên sử dụng thành thạo ngôn ngữ Lập trình Python (3x). Hiểu và phát triển được Ứng dụng Web với Django Framework. Học thực hành với Giảng viên cao cấp.

Lập trình PHP với Laravel Framework

42 giờ
Khóa học Lập trình PHP với Laravel Framework được NIIT - ICT HÀ NỘI xây dựng nhằm hoàn thiện kỹ năng lập trình web các các bạn đã biết Lập trình Web PHP thuần.

Khóa học Java Full stack (IJFD)

104 giờ
Học lập trình Java Fullstack với khóa học được xây dựng theo lộ trình bài bản, từ JAVA CƠ BẢN đến JAVA WEB và nâng cao về JAVA FRAMEWORK như: Spring Boot, Hibernate
Mục lục
Đăng ký tư vấn
Nhân viên gọi điện tư vấn miễn phí sau khi đăng ký
Được cập nhật các ưu đãi sớm nhất
Hotline: 0383180086
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Hãy đăng ký để nhận những thông tin mới nhất về học bổng mới nhất tại NIIT - ICT Hà Nội
top
Đóng lại Đăng ký học tại NIIT - ICT Hà Nội
6260+ học viên đã theo học tại NIIT - ICT Hà Nội và có việc làm tốt trong ngành lập trình. Nắm lấy cơ hội ngay hôm nay!
Chọn khóa học
  • KHÓA HỌC LẬP TRÌNH FRONT END VỚI REACT.JS
  • KHÓA HỌC LẬP TRÌNH PHP WEB
  • Khóa học PHP Full stack [2023] cho người mới bắt đầu
  • Khóa học BIG DATA với Hadoop và Spark
  • Khóa học Lập trình Android tại Hà Nội
  • [Tuyển sinh 2023] Lập trình viên Quốc tế DigiNxt
  • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại Hà Nội
  • LẬP TRÌNH GAME
    • Khóa học Lập trình Game Unity
  • LẬP TRÌNH WEB FRONT END
    • KHÓA HỌC PYTHON HƯỚNG ĐỐI TƯỢNG
    • KHÓA HỌC ANGULAR & TYPESCRIPT (FRONT END)
  • LẬP TRÌNH WEB BACK END
    • LẬP TRÌNH JAVA WEB VỚI FRAME WORK
    • Lập trình Web với Django
    • Lập trình PHP với Laravel Framework
  • CHƯƠNG TRÌNH ĐÀO TẠO ỨNG DỤNG CÔNG NGHỆ
    • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại TP HCM
  • LẬP TRÌNH WEB FULL STACK
    • Khóa học Java Full stack (IJFD)
  • LẬP TRÌNH MOBILE
    • FRONT-END VỚI REACTJS VÀ REACT NATIVE
    • Lập trình Android Nâng cao
  • ĐÀO TẠO CHO DOANH NGHIỆP
    • KHÓA HỌC BUSINESS ANALYSIC TỪ CƠ BẢN ĐẾN NÂNG CAO 2023
    • Khóa học Magento: Làm chủ CMS TMĐT lớn nhất
    • Khóa học IOT: Xây dựng Sản phẩm IOT với Raspberry Pi
    • Khóa học Automation Testing Chuyên nghiệp
  • KHÓA HỌC DỰ ÁN
    • Học sử dụng bộ Office: Word, Excel, Power Point, Mail chuyên nghiệp
  • KHÓA HỌC KHÁC
    • VBA Excel Toàn Tập (Cơ Bản - Nâng Cao)
    • VBA Excel Nâng cao
    • Khóa học JMeter: Performance Testing
    • Khóa học Tester đạt chuẩn Quốc tế ISTQB Foundation Level
    • Khoá Học Tester đạt chuẩn quốc tế ISTQB Advanced Level
Bạn chưa chọn khóa học cần đăng ký
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Đăng ký học thành công!
Cảm ơn bạn đã đăng ký học tại NIIT - ICT HÀ NỘI!