PHP Language - Vài Phút Phút Tìm Hiểu Public, Protected và Private

Lâu rồi mình cũng chưa có ra bài viết mới nhân tiện vừa tròn 2 tháng chuyển qua team Backend. Được vật lộn với đống Unit TestPHP nên mình cũng có vài thứ để chia sẽ cho các anh em, ahihi.

Hôm nay chúng ta sẽ nói về Public, ProtectedPrivate ở hàm hoặc biến trong ngôn ngữ PHP nói riêng hoặc OOP nói chung.

Chúng Là Cái Chi Chi:

Ở trên mạng thì có rất nhiều bài viết định nghĩa rồi, ở đây mình chỉ tóm tắt ngắn ngọn lại như sau:

Public: là kiểu dữ liệu khai báo thuộc loại công cộng, những phương thức hoặc biến với kiểu dữ liệu này sẽ được truy xuất và sử dụng ở đâu cũng được.

Private: là kiểu kiểu dữ liệu khai báo thuộc loại nội bộ, những phương thức hoặc biến với kiểu dữ liệu này sẽ được truy xuất và sử dụng trong nội bộ của Class nơi mà phương thức hoặc biến đó được khai báo.

Protected: là kiểu dữ liệu khai báo cũng thuộc loại nội bộ như Private, nhưng thêm vào đó những phương thức hoặc biến với kiểu dữ liệu này ngoài việc sử dụng trong nội bộ Class, chúng còn có thể được truy xuất ở Class con kế thừa Class khai báo hàm hoặc phương thức đó.

alt text

Ví Dụ:

Để hiểu thêm về những khái niệm trên chúng ta sẽ cùng nhau làm rõ sương sương qua ví dụ nho nhỏ như sau:

class Human
{
  private $year;
  protected $beauty = 'Xau';
  public function getOld() :int
  {
    return $this->calculateOld();
  }

  private function calculateOld() :int
  {
    return 2019-$this->year;
  }
  public function setYear($year) :int
  {
     return $this->year = $year;
  }
}

class HungPham extends Human
{
  public function seeBeauty() :string
  {
    return $this->beauty;
  }
}

$human = new Human;
$human->setYear(2000);
echo($human->getOld()); // kết quả là 19
$hung = new HungPham;
echo($hung->seeBeauty()); // kết quả là Xau

Ở đây mình có một Abstract ClassHuman, sau khi new một instance mới( new Human ), mình sẽ gọi hàm setYear để đẩy giá trị 2000 vào.

Ở đây hàm setYear phải là kiểu public vì mình cần truy cập nó ở bên ngoài phạm vi Class Human.

Giả sử mình cần giấu thông tin của Class Human( vì một lý do bảo mật nào đó ), đặc biệt là hàm calculateOld do đó mình cần phải khai báo nó dưới dạng private.

Bởi hàm calculateOld được khai báo là kiểu private nên mình sẽ ko truy xuất được trực tiếp bằng cách gọi ($human->calculateOld) đó là lý do vì sao mình cần có thêm hàm getOld được khai báo theo kiểu public.

Ở ví dụ tiếp theo mình có một Class con là HungPham kế thừa từ Class Human, để hàm seeBeauty có thể truy cập được biến beauty ở Class cha mình cần phải khai báo nó dưới dạng là protected

Dễ hiểu phải không các anh em :laughing: :laughing: :laughing:

Cách Sử Dụng:

Khi nào dùng những hàm Set hoặc Get, chúng cần dùng thuộc tính public cho phương thức của mình vì nó cần được truy cập ở ngoài Class.

Đối với nhưng phương thức tính toán mang tính chất cốt lõi của Class hãy nên sử dụng private.

Còn protected được sử dụng trong trường hợp Class con muốn truy cập giá trị một biến hoặc một phương thức từ Class cha.

Kết Luận:

Bằng cách nắm kỹ những kiến thức cơ bản này, mình nghĩ nó sẽ giúp các anh em đỡ bị ngộp khi đọc code của người khác.

Nếu bài viết còn chỗ nào chưa đúng mong sẽ nhận được những phản hồi tích cực từ các anh em. Hẹn gặp lại vào một bài viết khác vào một ngày không xa. ahihi :smile: :smile: :smile:

Link bài viết gốc của mình ở link bên dưới nhé:

https://hungphamdevweb.com/php-language-vai-phut-phut-tim-hieu-public-protected-va-private.html

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Hùng Phạm

17 bài viết.
15 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
7 2
CSS Sprites thật ra đã là một cái tên khá cũ rồi và mình viết bài viết này hy vọng nó sẽ hữu ích cho các anh em nào chưa bao giờ biết đến cái tên c...
Hùng Phạm viết 10 tháng trước
7 2
White
5 4
Cũng như hôm bữa ( cách đây có 6 tháng trước chứ nhiêu :smile_cat: ) mình có kể là mình đang ở Mã để làm việc. Bài viết cũ còn đây mời cả nhà vô xe...
Hùng Phạm viết 4 tháng trước
5 4
White
4 2
Webpack là một cái tên không quá mới nhưng mình nghĩ không ít lần các anh em đã nghe qua nó. Nhiệm vụ chính của Webpack trong hệ thống là dùng để đ...
Hùng Phạm viết 10 tháng trước
4 2
Bài viết liên quan
White
4 2
Bash script to fast serve Laravel project Lười gõ dòng lệnh quá nên tạo ra cái script để gõ nhanh :D laravelstart.sh /bin/bash if z "$1" ] ...
Vũ Hoàng Chung viết hơn 2 năm trước
4 2
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
17 bài viết.
15 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!