Tạo custom library trong zend framework 2

Zend framework 2

  • Zend framewrok 2 là một framework vô cùng mạnh mẽ tận dụng mang lại cho lập trình viên nhiều lợi thế riêng so với các framework khác.
  • ZF 2 cho phép dễ dàng tích hợp nhiều package từ bên ngoài giúp rút ngắn thời gian tạo ra 1 trang web

Làm quen với ZF2

Tạo một custom library cho ZF2

Tại sao phải tạo một custom library

  • Bất cứ lập trình viên nào khi tạo ra một trang web cũng cần phải nghĩ đến việc dùng lại các hàm mà mình đã tạo ra để tránh việc trùng lặp code cũng như để dễ dàng quản lý hơn.
  • Ngoài ra việc tạo ra custom library sẽ có thể giúp ta tạo ra các hàm có thể gọi được trong mọi module của ZF2

Tạo một custom library đơn giản

Tạo cấu trúc thư mục như sau

  • Selection_017.png
  • Chúng ta có thể thấy cấu trúc thư mục của library cũng tương tự như cấu trúc thư mục của một module trong ZF2
  • Trong một phạm vi nào đó. Library chính là phần rút gọn của một module global. Tuy nhiên library chỉ tập trung vào vào việc tạo ra các function dùng chung cho toàn bộ các module. còn module sẽ bao gồm cả việc tạo ra giao diện hoàn thiện cho một chức năng nào đó

Tạo hàm cho class Foo.php

<?php
namespace Mylibrary\Model
class Foo
{
    public function msg($name)
    {
        echo "hello " . $name;
    }
}
?>
  • Ta sẽ tạo ra một hàm đơn giản in ra lời chào cho một tên chuỗi tên truyền vào.

Cấu hình để library có thể sử dụng được trên mọi module

  • Ta tìm đến file init_autoloader.php và chỉnh sửa với nội dung như sau:
if ($zf2Path) {
    if (isset($loader)) {
        $loader->add('Zend', $zf2Path);
        $loader->add('ZendXml', $zf2Path);
    } else {
        include $zf2Path . '/Zend/Loader/AutoloaderFactory.php';
        Zend\Loader\AutoloaderFactory::factory(array(
            'Zend\Loader\StandardAutoloader' => array(
                'autoregister_zf' => true,
                'namespaces' => [
                    'Mylibrary' => __Dir__ . '/vendor/Mylibrary',
                ],
            )
        ));
    }
}
  • Tại đây ta sẽ cấu hình cho tên namespace để có thể dùng được trên toàn bộ project

kiểm tra thành quả

  • ta sẽ thử gọi library vừa gọi trong module application
  • Tìm và sử file IndexController.php:
<?php
namespace Application\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use Mylibrary\Model\Foo;
class IndexController extends AbstractActionController
{
    public function indexAction()
    {
        $test = new Foo();
        $test->msg('bar');
        return new ViewModel();
    }
}

Kết luận

  • Trên đây là hướng dẫn đơn giản để tạo ra một custom library.
  • Tùy từng mục đích sử dụng ta sẽ tạo ra các library khác nhau tùy theo từng mục đích sử dụng khác nhau.
  • Sau khi tạo ra một library riêng biệt ta có thể tận dụng thế mạnh của package composer để tạo một package và có thể include vào nhiều project khác nhau.