Continue
White

Nguyễn Cự Tùng viết ngày 17/10/2017

Truy xuất trực tiếp không cần khởi tại object và gọi hàm tĩnh trong nội bộ class
alt text
Ta thấy thành viên tĩnh nội bộ lẫn nhau trng chính đới tượng đó thông qua cú pháp :: . Tương tự khi sử dụng dấu :: thay cho -> . Lưu ý khi gọi thuộc tính tĩnh thông thường ta dùng $this -> name. nhưng trong thành viên tĩnh khác thì ta dùng thêm dấu đô la nữa.
Như vậy ta dễ dàng thấy các thuộc tính và phương thức tĩnh ở dạng toàn cục, được gọi mà không cần khởi tạo thêm dấu $ nữa. Như vậy, phương thức tĩnh chỉ gọi được những thuộc tính và phương thức cùng class ở dạng tĩnh. Ta có thể gọi trực tiếp tên class bằng từ khóa self như self::$_name . Về tính kế thừa thì nó hoàn toàn bình thường không có gì đặc biệt, chỉ khác một điều là dùng hai dấu chấm (::) để truy xuất đến hàm tĩnh của lớp cha.
Việc sử dụng các hàm thuộc tính ở dạng tĩnh có ưu điểm là ta có thể thay đổi dữ liệu toàn cục cho đối tượng đó, không cần khởi tạo đối tượng mới vẫn sử dụng được. Tuy nhiên nếu ta khai báo tĩnh thì chương trình sẽ xử lý lưu trữ toàn cục nên sẽ tốn bộ nhớ hơn.
5. Lớp trừu tượng Abstract
Lớp Abstract định nghĩa các phương thức mà từ đó các lớp con sẽ kế thừa nó và Overwirte.
Tất cả các phương thức của lớp Abstract đều phải được khai báo là Abstract và phải ở mức protected và public, không được ở mức private. Lớp Abstract có thể có thuộc tính nhưng thuộc tính không được khai báo là abstract và không thể khởi tạo một biết của lớp abstract được.
Cú pháp khai báo lớp Abstract:
<?php

abstract class BaseClass
{
// mức protected
abstract protected function hello();
// mức public
abstract public function hi();
}
?>
Trong lớp Abstract các phương thức không được định nghĩa thêm dòng lệnh nào trong nó. Cũng như bạn không thể tạo một biến đối tượng mới trong lớp Abstract.
Lớp kế thừa lớp Abstract phải rewrite lại tất cả các hàm Abstract trong lớp Acstract.
6. Interface
Interface là một Template, nó không phải là một lớp đối tượng mà chỉ là một bề nhìn bên ngoài mà nhìn vào ta có thể biết được tất cả các hàm của đối tượng implement nó. Để tạo một Interface ta dùng từ khóa interface để thay cho từ khóa class. Tất cả các hàm trong interface đều ở dạng khai báo và không được định nghĩa. Nếu một lớp implement một interface thì nó phải khai báo và định nghĩa tất cả các hàm trong Interface. Interface không phải là một lớp cụ thể mà là một khuôn mẫu. để cho một đối tượng implement nó và không thể tạo một biến interface.
Interface tuy không phải là một lớp chính hiệu nhưng nó có một tính chất đó là tính kế thừa, nghĩa là một interface A có thể kế thừa một interface B lúc này đối tuộng nào inplement lớp A thì nó phải định nghĩa lại tất cả các hàm có cả trong hai lớp A và B.
Interface dùng để mô tả một bản thiết kế cho một chức năng của class. Nếu muốn tạo một bản thiết kế thì sử dụng abstract class.
alt text

Tham Khảo

http://php.net/manual/en/language.oop5.abstract.php
https://freetuts.net/hoc-php/hoc-lap-trinh-php-nang-cao

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

Nguyễn Cự Tùng

1 bài viết.
0 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
{{like_count}}

kipalog

{{ comment_count }}

bình luận

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


White
{{userFollowed ? 'Following' : 'Follow'}}
1 bài viết.
0 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á!