OOP OOP

Interface Là Gì

Interface định nghĩa tập hợp các method mà những class sử dụng interface sẽ cần phải triển khai (implement) các method này.

interface I_Test
{
    public function foo();
}

Với interface I_Test được định nghĩa như trên thì bắt buộc tất cả các class sử dụng interface này phải có method foo().

Trong PHP để sử dụng một interface bạn sử dụng từ khoá implements:

interface I_Test
{
    public function foo();
}

class A implements I_Test {
}

Nếu bạn lưu đoạn code trên vào một tập tin int...

PHP PHP

Nếu bạn từng sử dụng một số MVC framework phổ biến trong PHP bạn sẽ thấy rất nhiều trong số này cho phép chúng ta truy cập trực tiếp các property với visibility là private hoặc protected.

class Product extends Model {
    private $manufacture;
    private $name;
    private $model;
    private $price;
}

$iPhone = new Product;
$iPhone->manufacture = 'Apple';
$iPhone->name = 'iPhone 7';
$iPhone->model = 'A1778';
$iPhone->price = '$900 USD';

Ở trên các property như $manufacture, $model$price đ...

PHP PHP

Trait được giới thiệu trong PHP phiên bản 5.4.0 và được định nghĩa là một cơ chế cho phép lập trình viên tận dụng khả năng tái sử dụng lại code (code reusability) khi lập trình với ngôn ngữ chỉ cho phép thừa kế từ một class duy nhất (hay còn gọi là single inheritance) như PHP.

Trait thực ra cực kỳ đơn giản, để chứng minh cho điều tôi mới nói thì chúng ta sẽ cùng tham khảo một số ví dụ sau đây:

Ví Dụ Về Trait

Giả sử bạn có một model class là Post như sau:

class Post extends Model {
    public fun...
PHP PHP

Dependency Injection là khái niệm được nhắc tới nhiều trong thời gian gần đây. Mặc dù không phải là một khái niệm quá khó hiểu nhưng rất nhiều bạn developer cảm thấy khái niệm này khó hiểu. Trong bài viết này chúng ta cùng nhau giải mã khái niệm này thông qua các ví dụ đơn giản và dễ hiểu.

Trước tiên chúng ta hãy tìm hiểu tại sao cần dùng Dependency Injection.

Quản Lý Dependency

Một trong những vấn đề thường gặp trong lập trình đó là quản lý các phần phụ thuộc hay dependency của một object hay c...