PHP trait kể từ PHP 5.4
PHP
78
White

Hari Won viết ngày 29/05/2015

Kể từ PHP 5.4, ta đã có thể dùng PHP Trait. Mình vẫn hay dùng PHP Trait để bắt buộc các lớp trờ thành singleton như thế này

<?php

trait Singleton
{
    private function __construct() {}
    private function __clone() {}
    private function __wakeup() {}

    public static function getInstance()
    {
        static $instance = null;
        return $instance ?: $instance = new static;
    }
}

class MyClass
{
    use Singleton{
        getInstance as singleton;
    }
    public function hello()
    {
        return "Hi there!";
    }
}

$myInstance = MyClass::singleton();
var_dump($myInstance->hello());
$test = new MyClass;

Ở đây dòng cuối cùng sẽ bắn ra Fatal Error

Fatal error: Call to private MyClass::__construct() from invalid context

Lý do là vì __construct đã được định nghĩa là private ở trên trait Singletonđó.
Nếu sử dụng Trait và chỉnh lại tính công khai như sau:

    use Singleton{
         __construct as public;
         getInstance as singleton;
    }

thì khai báo new MyClass sẽ chạy được bình thường. Tuy nhiên lúc này MyClass không còn là một singleton nữa.

Bài đầu tiên trên Kipalog kết thúc ở đây, Đạt mong nhận được ý kiến góp ý của mọi người !

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

Hari Won

2 bài viết.
0 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
7 0
Private function trùng tên trong class cha con Bản thân rất hay quên nên mình memo lại đây PHP whoami(); } } class B extends A { private f...
Hari Won viết gần 3 năm trước
7 0
Bài viết liên quan
White
2 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 1 năm trước
2 2
Male avatar
9 1
Để bắt đầu làm thêm của riêng bạn thì ban đầu bạn phải có một theme trắng ( Blank theme ) để bắt đầu Theme trắng là gồm có các thư mục và file cơ b...
Doan Van Manh viết hơn 2 năm trước
9 1
Male avatar
1 0
Một ngày nào đó, bạn mới dựng source code lên. Bạn luôn hi vọng khi vào site sẽ hiển thị đẹp mắt và yếu tố đẹp mắt ban đầu sẽ là text của site của ...
skul169 viết gần 2 năm trước
1 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

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


White
{{userFollowed ? 'Following' : 'Follow'}}
2 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á!