Share Hướng dẫn tạo service trong Zend framework 3

filiallion

Administrator
Staff member
Administrator
Messages
585
Points
10
Language
Tiếng Việt
Trong Zend framework từ phiên bản 2 trở đi thì thành phần Service Manager đóng vai trò quan trọng, trở thành cốt lõi của Zend framework bởi các bạn có thể thấy các ứng dụng web được phát triển từ Zend framework 2 và 3 tất cả đều được tạo ra từ các service. Về cơ bản, thành phần Service Manager không có sự khác biệt giữa hai phiên bản Zend framework 2 và 3, có chăng chỉ là sự cải thiện hiệu năng xử lý, giảm bớt sự phức tạp trong kiến trúc mà thôi.

Trong Zend framework 3, các service được quản lý bởi thành phần Service Manager trong đó lớp ServiceManager đóng vai trò trung tâm điều khiển các dịch vụ. Khi mới khởi tạo ứng dụng Zend framework thì các service cũng được khởi tạo, điều này càng cho thấy tầm quan trọng của Service Manager, nó đóng vai trò quan trọng trong logic ứng dụng Zend framework 3. Mặc định, Zend framework 3 cung cấp rất nhiều các service, các bạn có thể xem chi tiết tất cả các service này tại địa chỉ https://docs.zendframework.com/zend-mvc/services. Ngoài các service do Zend framework 3 cung cấp mặc định, các bạn còn có thể tự tạo ra bất kỳ một service nào đó để phục vụ nhu cầu của mình.

Một service được khởi tạo có thể được sử dụng ở nhiều nơi trong ứng dụng và mặc định nó chỉ lưu trữ một phiên bản duy nhất trong toàn bộ ứng dụng, điều này có nghĩa service chỉ khởi tạo lần đầu và sử dụng cho các lần gọi sau này.

Bây giờ, tôi sẽ hướng dẫn các bạn tạo một service trong Zend framework 3 với ví dụ mẫu đơn giản. Trước tiên, các bạn tạo một lớp thực hiện một nhiệm vụ gì đó như sau:
PHP:
<?php
namespace Application\Service;

class Something
{
    public function __construct()
    {
        $this->doSomething();
    }
    
    public function doSomething()
    {
        //Thực hiện nhiệm vụ gì đó
    }
}
Lúc này, các bạn có thể đăng ký một service cho lớp Something này rồi, tuy nhiên nếu các bạn có sử dụng các service khác trong service Something thì các bạn cần phải tạo một factory như sau:
PHP:
<?php
namespace Application\Service;

use Interop\Container\ContainerInterface;
use Zend\ServiceManager\Factory\FactoryInterface;

class SomethingFactory implements FactoryInterface
{
    public function __invoke(ContainerInterface $container, $name, array $options = null)
    {
        return new Something();
    }
}
Bước cuối cùng là đăng ký service Something để sử dụng, để đăng ký một service trong Zend framework cũng có nhiều cách, tôi sẽ hướng dẫn các bạn cách đơn giản nhất là khai báo trong tập tin cấu hình module của ứng dụng như sau:
PHP:
[
    'service_manager' => [
        'factories' => [
            Application\Service\Something::class => Application\Service\SomethingFactory::class
        ]
    ]
]
Từ bây giờ, các bạn có thể sử dụng service Something được rồi, các bạn cũng lưu ý là sử dụng với tên lớp đầy đủ hoặc sử dụng Application\Service\Something::class cho chính xác.

Trên đây là một ví dụ đơn giản để tạo một service trong Zend framework 3, các bạn có thể tìm hiểu thêm về Service Manager trong Zend framework 3 tại địa chỉ https://docs.zendframework.com/zend-servicemanager.
 
Back
Top