Mục lục:
4. Khai báo tên, thuộc tính để nhận dạng mức truy cập
5. Hàm Set và hàm Get các thuộc tính
6. Khi nào sử dụng cấp độ truy cập private
7. Khi nào sử dụng cấp độ truy cập protected
8. Khi nào sử dụng cấp độ truy cập public
Đây là thành phần chỉ dành riêng cho nội bộ của lớp, nghĩa là ta không thể truy xuất tới thành phần private ở lớp con hoặc ở bên ngoài lớp.
Mức truy cập private thường được sử dụng với:
Ví dụ không kế thừa:
|
Ở ví dụ trên muốn truy xuất giá trị thuộc tính loaixe
thì phải thông qua phương thức setLoaixe
và getLoaixe
chứ không thể trỏ thẳng trực tiếp đến thuộc tính loaixe
vì thuộc tính loaixe
đang ở mức private.
Như bài này là sai:
|
Ví dụ có kế thừa:
|
Phần ghi chú tôi đã giải thích rõ rồi nên tôi không giải thích gì thêm.
Mức truy cập protected chỉ cho phép truy xuất nội bộ trong lớp đó và lớp kế thừa, riêng ở bên ngoài lớp sẽ không truy xuất đc. Mức protected thường được dùng cho những phương thức và thuộc tính có khả năng bị lớp con định nghĩa lại (overwrite).
Ví dụ:
|
Đây là mức truy cập thoáng nhất bởi vì bạn có thể truy cập tới các phương thức và thuộc tính ở bất cứ đâu, dù trong nộ bộ của lớp hay ở lớp con hay cả bên ngoài lớp đều được.
Khi khai báo thuộc tính là public ta có thể dùng từ khóa var để thay thế cho public như những ví dụ các bài trước.
Ví dụ:
|
Khi khai báo với hàm là public nếu ta không đặt từ public ở đầu thì php sẽ tự hiểu hàm này là public.
Ví dụ:
|
Cái tiêu đề nghe hơi lại nhưng nó thực sự rất hữu ích trong quá trình làm team cho các bạn đó. Nếu trong một team có những quy ước đặt tên biến, tên hàm riêng thì nhìn vào dòng code tuy nhiều người nhưng tưởng chừng như là chỉ có một người làm duy nhất. Bởi vậy mình đặt ra tiêu đều này để hướng dẫn các bạn cách đặt tên biến, tên hàm trong một lớp. Tuy nhiên không phải người nào cũng áp dụng như vậy nên các bạn đừng chém nhé, các bạn đọc nhưng có quyền không làm theo.
Thông thường tên biến (thuộc tính) phải là một danh từ hoặc tình từ, còn tên của hàm (phương thức) bắt đầu bằng một động từ.
|
Thông thường nếu biến ở dạng private thì tên biến các bạn nên đặt hai dấu gạch dưới rồi mới đến tên biến.
Ví dụ:
|
Thông thường nếu ở dạng protected thì các bạn nên đặt một dấu gạch dưới rồi mới tới tên biến
Ví dụ:
|
Nếu ở dạng này bạn chỉ cần khai báo tên bình thường
|
Các thuộc tính trong đối tượng thường có hai thao tác là gán dữ liệu và lấy dữ liệu. Có những thuộc tính ta muốn khi gán giá trị hoặc khi lấy giá trị thì sẽ có một đoạn code tác động vào. Ví dụ như tôi muốn khi thiết lập mật khẩu cho người dùng thì mật khẩu sẽ được tự động thêm một số ký tự đặc biệt và mã hóa md5 để an toàn và bảo mật hơn, như vậy mỗi lần gán giá trị cho thuộc tính mật khẩu tôi phải thêm một đoạn như thế này:
|
Giả sử trong quá trình lập trình tôi có sử dụng phép gán này 100 lần thì đôi lúc sẽ bị nhầm lẫn ký tự thêm vào, chưa tính đến chuyện sau này tôi muốn sửa ký tự thêm vào thành một chuỗi khác hoặc sử dụng hàm mã hóa khác thì tôi phải vào 100 dòng code đó để sửa.
Giả sử tôi muốn khi lấy giá trị của thuộc tính username
thì kết quả trả về sẽ có thêm một đoạn là "Xin Chào + Username", như vậy mỗi lần tôi lấy giá trị username phải bổ sung chữ xin chào vào. Có 100 dòng code thì phải thực hiện thao tác này 100 lần, điều này thật là phiền toái.
Qua những lý do đó tôi nghĩ có giải pháp là ta tạo những hàm SET và GET dùng cho việc gán và lấy dữ liệu cho các thuộc tính username và password để sau này nếu thay đổi thì chỉ cần vào hai hàm này sửa là được.
Quy tắc đặt tên cho Get và Set như sau: setThuoctinh()
, getThuoctinh()
.
Ví dụ:
|
Thông thường để an toàn dữ liệu các thuộc tính đều ở dạng private, nhưng điều này rất phiền vì ta phải tạo thêm các hàm SET và GET nên các lập trình viên cũng ít khi sử dụng private. Tuy nhiên có những trường hợp sau ta bắt buộc phải dùng ở dạng private để an toàn cho đối tượng.
Username
và Password
ở trên.Đó là 2 đặc điểm cơ bản để bạn chọn độ truy cập là private.
Protected thường được dùng khi bạn biết chắc là có lớp khác sẽ kế thừa lớp này và những phương thức, thuộc tính đó chỉ được dùng trong lớp kế thừa nó.
Giả sử bạn khai báo lớp Động Vật, trong đó có hàm lưu dữ liệu động vật vào database, hàm này dùng chung cho tất cả các lớp con kế thừa lớp Động Vật. Và để bảo mật nên tôi không muốn ở bên ngoài lớp có thể sử dụng được, vì vậy tôi khai báo là protected.
Đó là những ví dụ cơ bản, chứ thực tế thì cũng tùy vào từng bài toán cụ thể mà bạn lựa chọn
Public là cấp độ thoáng nhất, nó có thể gọi ở mọi nơi từ trong nội bộ của lớp đến lớp kế thừa nó, thậm chí cả bên ngoài lớp cũng gọi được.
Những hàm được khai báo public thường được dùng để lấy dữ liệu và xuất dữ liệu ra bên ngoài, hoặc là những hàm mang tính chất là hàm thao tác cuối cùng với người coder. Ví dụ như các hàm SET và GET được để ở dạng public.
Về bài trước... |
Bài tiếp theo... |
+ Lê Văn Thuyên-0379136392:Cảm ơn quý vị và các bạn đã vào Website của Lê Thuyên! Lê thuyên rất mong nhận được sự góp ý của quý vị và các bạn cho sự phát triển của website này. Xin chân thành cảm ơn!
* Dũng Trung-090567448:Lê Văn Thuyên0379136392--->Ok.Anh!
* Bé Nguyễn-benguyen@gmail,com:Lê Văn Thuyên0379136392--->Good job!
+ -:
+ -: