ICTsharing - Blog chia sẻ kiến thức về ICT: php

Hot

Post Top Ad

Hiển thị các bài đăng có nhãn php. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn php. Hiển thị tất cả bài đăng

Thứ Năm, 3 tháng 1, 2019

Từ khóa parent và final trong hướng đối tượng PHP - Bài 5

18:15 0
Tiếp theo, Chúng ta sẽ nói tới 2 từ khóa quan trọng là parentfinal. Thông qua việc vận dụng 2 từ khóa này, chúng ta sẽ hiểu được thêm về khái niệm ghi đè trong hướng đối tượng ra sao.

(*) parent :
Parent::Ten_phuong_thuc();

Khi chưa có từ khóa Parent này sẽ cho ra kết quả là:
Teacher
Nó sẽ ưu tiên nhận lớp gần nó nhất, Ngược lại khi có thêm parent vào thì nó sẽ nhận thêm cả lớp cha.

Kết quả là:
ictsharing.comTeacher
 Như vậy từ khóa Parent là từ khóa khắc phục sự kiện ghi đè xẩy ra và chỉ có tác dụng một cấp cha.

(*) final : Hạn chế tối đa việc ghi đè
- Khi chúng ta khai báo một phương thức là final thì không có một phương thức nào có thể override(ghi đè lại được).
Như ví dụ trên, nếu chúng ta cho từ khóa final vào thì nó sẽ hiểu rằng đó là lớp cuối cùng rồi không được kế thừa nữa từ đó dẫn tới bị lỗi.


Kết quả trả về sẽ báo không được ghi đè:
 Fatal error: Class BCD may not inherit from final class (ABC) in E:\xampp\htdocs\hocphp\hocmvc\vd03.php on line 24

 Vậy phần này chúng ta nắm được cách ghi đè và cách chống ghi đè.
=> Final là không cho phép phương thức đó bị ghi đè, nghĩa là chỉ cần ở lớp cha có từ khóa final là lớp đó sẽ không được kế thừa và ghi đè.

Nghĩa là: Cho phép phương thức nào đó là phương thức cuối cùng. Cho phép lớp nào đó là lớp cuối cùng

Xem thêm

Kế thừa trong hướng đối tượng PHP - Bài 4

17:38 0
Tiếp tục ở phần này. Ta tìm hiểu về sự kế thừa trong hướng đối tượng, kế thừa chính là yếu tố quan trọng và đóng vai trò mấu chốt của hướng đối tượng. Vận dụng sự kế thừa như nào để đạt được hiểu quả cao nhất trong việc viết ứng dụng.

Cú pháp:
 Class con extends cha{      }
Điểm nhấn:
 - Khi lớp con kế thừa lớp cha, thì có thể sử dụng lại tất cả những phương thức và thuộc tính của lớp cha. Miễn là chúng không mang cơ chế private.
 - Chỉ có lớp con mới có thể sử dụng được những thuộc tính và phương thức của lớp cha. Một lớp con chỉ có thể kế thừa được một lớp Cha.

Ví dụ:

Kết quả sau khi chạy là:
ABCDBCDECDEFDEFI

Xem thêm

Các cơ chế trong hướng đối tượng - Bài 3

17:17 0
Ở phần này, ta sẽ cùng tìm hiểu về 3 cơ chế quan trọng trong hướng đối tượng là public, protected, private. Qua đó ta phân biệt sự khác nhau giữa chúng đồng thời có thể vận dụng chúng một cách hiệu quả khi làm việc với hướng đối tượng.

(*) Public: 
 Có thể sử dụng những đối tượng để truy cập vào phương thức và thuộc tính mang cơ chế này. Dĩ nhiên nó hỗ trợ sự kế thừa.

(*) protected:
 Không thể sử dụng những đối tượng để truy cập vào các phương thức và thuộc tính, nó hỗ trợ sự kế thừa.

(*) Private:
Không thể sử dụng những đối tượng để truy cập vào các phương thức và thuộc tính, không hỗ trợ sự kế thừa.

Ví dụ:

Khi chạy ra kết quả là: ABCD

Thay đổi thành:
 echo $a->bcd
Kết quả lỗi
Fatal error: Uncaught Error: Cannot access protected property ABC::$bcd in E:\xampp\htdocs\hocphp\hocmvc\vd02.php:28 Stack trace: #0 {main} thrown in E:\xampp\htdocs\hocphp\hocmvc\vd02.php on line 28
Thay đổi thành:
 echo $a->cde
Kết quả lại càng không thể truy cập được vì là private
Fatal error: Uncaught Error: Cannot access private property ABC::$cde in E:\xampp\htdocs\hocphp\hocmvc\vd02.php:28 Stack trace: #0 {main} thrown in E:\xampp\htdocs\hocphp\hocmvc\vd02.php on line 28

Mỗi cơ chế có cách sử dụng riêng, khi sử dụng các bạn chú ý để sử dụng nó phù hợp hơn
Xem thêm

Lập trình hướng đối tượng trong PHP - bài 1

16:22 0
Sự có mặt của lập trình hướng đối tượng, đã giúp cho ngôn ngữ PHP trở nên linh động và uyển chuyển hơn rất nhiều so với phương pháp lập trình thủ tục. Với cách viết và làm việc theo hướng đối tượng sẽ phần nào giúp cho mã nguồn của bạn trở nên trong sáng. Và quan trọng nhất vẫn là tính dễ mở rộng, phát triển ứng dụng.

Lập trình hướng đối tượng cũng là bài học quan trọng nhất trong toàn khóa học PHP Nâng cao, vì nó mở ra kiến thức nền cho việc nghiên cứu các kiến thức cao hơn như làm việc với các PHP Framework.

==> Vậy tại sao phải lập trình hướng đối tượng?
Khi chúng ta làm một dự án lớn mà không sử dụng lập trình hướng đối tượng thì rất khó để cùng nhau làm việc. Lập trình hướng đối tượng sẽ giúp ráp code lại với nhanh dễ dàng hơn.
Ngoài ra, đối với phương pháp lập trình thông thường thì việc nâng cấp rất khó khăn. 

Tóm lại lập trình hướng đối tượng qua các từ khóa:
 + Dễ mở rộng
 + Dễ nâng cấp
 + Thao tác chuẩn mực

I. Khái niệm:
- Lập trình hướng đối tượng (gọi tắt là OOP - object-oriented programming) là một kĩ thuật lập trình hỗ trợ công nghệ đối tượng. Nếu như trước kia là các kiểu lập trình hướng thủ tục, hướng modun,.. thì giờ đây thế giới đang hướng về sử dụng hướng đối tượng. Nếu như trước đây chúng ta lập trình với hướng thủ tục thì sẽ chia thành các hàm để xử lý, thì giờ đây khi sử dụng hướng đối tượng thì chúng ta sẽ chia ra thành các đối tượng để xử lý.

VD: Mình sẽ ví dụ với mọi người về một bài toán lấy ra tên tuổi của một nhân viên bằng hai phương pháp:

Lập trình hướng thủ tục.
function getPersonnel()
{
    $name = 'Vu Van A';
    $age = 32;
    return $name . '-' . $age;
}
Lập trình hướng đối tượng -OOP
<?php

class Personnel
{
    private $name = 'Vu Van A';
    private $age = 32;

    public function getPersonnel()
    {
        return $this->name . '-' . $this->age;
    }
}
(*) Thuộc tính (đặc điểm để nhận dạng ra sự vật):
  Là những biến được khởi tạo trong một lớp có kèm theo những cơ chế.

(*) Phương thức (hành động):
 Là những hàm được khởi tạo trọng một lớp và có kèm theo những cớ chế.

(*) Lớp (Tổng hợp đóng gói):
 Là sự đóng gói các phương thức và thuộc tính với nhau.

(*) Đối tượng:
 Là sự thể hiện lại của một lớp.

II. Ưu điểm
-Vì lập trình hướng đối tượng ra đời sau nên nó khắc phục được tất cả các điểm yếu của các phương pháp lập trình trước đó. Cụ thể nó các ưu điểm sau:
  • Dễ dàng quản lý code khi có sự thay đổi chương trình.
  • Dễ mở rộng dự án.
  • Tiết kiệm được tài nguyên đáng kể cho hệ thống.
  • Có tính bảo mật cao.
  • Có tính tái sử dụng cao.

Xem thêm

Hàm khởi tạo và hủy trong hướng đối tượng - bài 2

16:16 0

Tiếp tục ở phần này, chúng ta sẽ cùng tìm hiểu về khái niệm __construct() và __destruct(). Đây được xem là 2 hàm magic method, là dạng phương thức đặc biệt, chúng sẽ tự động được gọi khi các bạn tiến hành khởi tạo 1 đối tượng.

1. Hàm  __construct()
- Phương thức khởi tạo là một phương thức mà khi chúng ta khởi tạo một class thì nó luôn được gọi kèm theo. Phương thức khởi tạo cũng sử dụng được đầy đủ chức năng của các phương thức bình thường khác trong class và trong một class có thể có hoặc không có phương thức khởi tạo.

- Trong PHP có hỗ trợ chúng ta 2 cách khai báo phương thức khởi tạo:

Cách 1: Khai báo trùng với tên của class (PHP version > 7x không hỗ trợ nữa).
VD:
class Abc
{
    //Khai báo phương thức khởi tạo
    public function Abc()
    {
        echo 'Class ABC được khởi tạo';
    }
}

new Abc();
//kết quả: Class Abc được khởi tạo
Cách 2: Khai báo phương thức có tên  __construct()
VD:
class Abc
{
    public function __construct()
    {
        echo 'Class Abc được khởi tạo';
    }
}

new Abc();
//kết quả: Class Foo được khởi tạo
2. Hàm  __destruct()


- Phương thức hủy trong class sẽ được gọi khi class đó được hủy. Nó thường dùng để giải phóng tài nguyên của một class và trong một class có thể có hoặc không có phương thức hủy.
- Để khai báo phương thức hủy trong class thì chúng ta chỉ cần khai báo phương thức có name là __destruct().
VD:
class Abc
{
    public function __destruct()
    {
        echo 'Class Abc được hủy';
    }
}

$abc = new Abc();
//kết quả: Class Abc được hủy
Khi mà một class có đầy đủ phương thức khởi tạo và phương thức hủy thì sẽ như sau:
class Abc
{
    public function __construct()
    {
        echo 'Class Abc được khởi tạo';
    }

    public function getMessage()
    {
        echo 'Đây là class Abc';
    }

    public function __destruct()
    {
        echo 'Class Abc được hủy';
    }
}

$abc = new Abc();
//kết quả: Class Abc được khởi tạo
$abc->getMessage();
//kết quả: Đây là class Abc
//kết quả: Class Abc được hủy
3. Phương thức khởi tạo và Hủy trong kế thừa
- Khi một class có phương thức khởi tạo và phương thức hủy kế thừa từ một class cũng có phương thức khởi tạo và phương thức hủy thì phương thức khởi tạo và phương thức hủy sẽ nhận của class được kế thừa.
VD:
class Bar
{
    public function __construct()
    {
        echo 'Class Bar được khởi tạo';
    }

    public function __destruct()
    {
        echo 'Class Bar được hủy';
    }
}

class Foo extends Bar
{
    public function __construct()
    {
        echo 'Class Foo được khởi tạo';
    }

    public function __destruct()
    {
        echo 'Class Foo được hủy';
    }
}

$foo = new Foo();
//Kết quả: Class Foo được khởi tạo
//kết quả: Class Foo được hủy
- Nếu như bạn muốn sử dụng được phương thức khởi tạo và phương thức hủy trong class cha thì bạn chỉ cần gọi lại phương thức đó của lớp cha.
VD:
class Bar
{
    public function __construct()
    {
        echo 'Class Bar được khởi tạo';
    }

    public function __destruct()
    {
        echo 'Class Bar được hủy';
    }
}

class Foo extends Bar
{
    public function __construct()
    {
        //gọi phương thức khởi tạo của class cha
        parent::__construct();
        echo 'Class Foo được khởi tạo';
    }

    public function __destruct()
    {
        //gọi phương thức hủy của class cha
        parent::__destruct();
        echo 'Class Foo được hủy';
    }
}

$foo = new Foo();
//Kết quả: Class Bar được khởi tạo
//Kết quả: Class Foo được khởi tạo
//kết quả: Class Bar được hủy
//kết quả: Class Foo được hủy
==> Trong thực tế thì phương thức khởi tạo được sử dụng rất nhiều còn phương thức hủy thì hầu như không sử dụng.
Xem thêm

Post Top Ad

Your Ad Spot