Chia sẻ PHP - Design Patterns - Singleton & Registry

Chia sẻ PHP - Design Patterns - Singleton & Registry

Hôm nay mình chia sẻ tới mọi người một khía cạnh khác trên blog cá nhân của mình - code PHP. Mình giới thiệu tới mọi người 2 mẫu design patterns rất phổ biến và đơn giản, đó là mẫu Singleton và mẫu Registry.

Singleton là mẫu thiết kế rất phổ biến trong OOP. Với singleton, sẽ hạn chế việc tạo nhiều thực thể trên cùng  một lớp đối tượng, mà thay vào đó nó sẽ cho phép chúng ta sử dụng chung một thực thể, hay nói một cách khác là dùng một shared instance. Việc này sẽ có lợi điểm cho bộ nhớ của hệ thống, không phải cứ phát sinh  đối tượng tùm lum ra.

Singleton:

<?php
class Singleton
{
    private static $_instance;
    protected function __contruct(){}
    public static function getInstance()
    {
        if (!isset (self::$_instance)) 
            self::$_instance = new self;
        return self::$_instance;
    {
}

Registry: Đây là một mẫu thiết kế cũng đơn giản và cũng rất phổ biến. Mẫu thiết kế này cung cấp một cơ chế để lưu trữ các giá trị toàn cục (global) một cách dễ quản lý hơn.

<?php
class Registry
{
    private static $_instance;
    private $_storage;
    protected function __construct(){}
    public static function getInstance()
    {
        if (!isset (self::$_instance)) 
            self::$_instance = new self;
        return self::$_instance;
    }
    // Xét giá trị thông qua magic call
    public function __set($name, $value)
    {
        $this->_storage[$name] = $value; 
    }
    // Lấy giá trị đã lưu thông qua magic call
    public function __get($name)
    {
        if (isset ($this->_storage[$name])) 
            return $this->_storage[$name];
        throw new Exception ('Không tìm thấy giá trị'); 
    }
    protected function __clone(){}
}
Tags: 
Bạn thấy bài viết này như thế nào?: 
Average: 9.3 (3 votes)
Ảnh của Khanh Hoang

Khanh Hoang - Kenn

Kenn is a user experience designer and front end developer who enjoys creating beautiful and usable web and mobile experiences.

Bình luận (0)

 

Add Comment

Plain text

  • No HTML tags allowed.
  • Các địa chỉ web và email sẽ tự động được chuyển sang dạng liên kết.
  • Tự động ngắt dòng và đoạn văn.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Enter the characters shown in the image.

Advertisement

 

jobsora

Dich vu khu trung tphcm

Dich vu diet chuot tphcm

Dich vu diet con trung

Quảng Cáo Bài Viết

 
Google nâng cấp tính năng Product Search

Google nâng cấp tính năng Product Search

Mới đây, Google đã nâng cấp tính năng tìm kiếm sản phẩm Product Search để giúp người dùng có thể mua sắm một cách thông minh nhất.

Tại sao Apple “kết thân” với Twitter, thay vì Facebook?

Tại sao Apple “kết thân” với Twitter, thay vì Facebook?

Apple tích hợp mạnh mẽ Twitter vào toàn bộ các ứng dụng trên hệ điều hành của mình.

Showing a Twitter Feed in a Drupal Block

Hiển thị Twitter Feed với một Drupal Block

In this tutorial we'll show you how to place a Twitter feed inside a block. You can then display that Twitter feed anywhere around your theme. There are many different Twitter options out there but most have a couple of limitations:

Tomdesgin.vn

 

Drupal Services