{ Tìm hiểu Slim Framework qua ứng dụng thực tế

Tìm hiểu Slim Framework qua ứng dụng thực tế

Tìm hiểu Slim Framework qua ứng dụng thực tế

Giới thiệu

Bài viết sau đây hướng dẫn bạn tạo 1 ứng dụng thực tế từ Slim Framework. Ứng dụng của chúng ta có những tính năng sau:

  • Liệt kê danh sách các tỉnh thành theo định dạng Json
  • Lấy dữ liệu 1 tỉnh thành theo id
  • Cập nhật dữ liệu 1 tỉnh thành theo id
  • Xóa 1 tỉnh thành theo id

Cài đặt Slim Framework cho dự án

Sử dụng đoạn mã sau để tạo project slim từ composer

$ php composer.phar create-project slim/slim-skeleton [my-app-name]

Khởi động mini webservice từ php runtime

$ cd [my-app-name]; php -S localhost:8080 -t public public/index.php

Loại bỏ “public” trong đường dẫn dịch vụ

Bạn tạo 1 file .htaccess tại thư mục root của project và sử dụng đoạn mã sau để loại bỏ “public” trong đường dẫn dịch vụ.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ public/index.php [QSA,L]

Cấu hình kết nối database

Mở file settings.php trong thư mục src và thêm block code cấu hình cơ sở dữ liệu như sau:

Sử dụng thư viện PDO của PHP để kết nối với dữ liệu qua DI bằng cách mở file src/dependencies.php khởi tạo:

Cần thêm chuỗi cấu hình charset = utf8 nếu không dữ liệu sẽ mất dấu.

Test kết nối database bằng cách sửa nội dung file src/routes.php

Nếu màn hình hiển thị như vầy là ok. Nếu không đúng thì bạn nên xem lại có sai xót nơi nào không.

D:\project\web1\src\routes.php:9:
object(PDO)[41]

Tạo table cho database lưu trữ thông tin tỉnh thành

Tiếp tục chúng ta sẽ tạo table bằng cách import code sql sau:

-- phpMyAdmin SQL Dump
-- version 4.8.4
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1:3306
-- Generation Time: Apr 10, 2019 at 04:16 AM
-- Server version: 5.7.24
-- PHP Version: 7.2.14

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Database: `web1`
--

-- --------------------------------------------------------

--
-- Table structure for table `tinhthanh`
--

DROP TABLE IF EXISTS `tinhthanh`;
CREATE TABLE IF NOT EXISTS `tinhthanh` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `ten` varchar(120) COLLATE utf8_unicode_ci NOT NULL,
  `code` int(2) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=64 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Dumping data for table `tinhthanh`
--

INSERT INTO `tinhthanh` (`id`, `ten`, `code`) VALUES
(1, 'Hà Nội', 1),
(2, 'Hà Giang', 2),
(3, 'Cao Bằng', 4),
(4, 'Bắc Kạn', 6),
(5, 'Tuyên Quang', 8),
(6, 'Lào Cai', 10),
(7, 'Điện Biên', 11),
(8, 'Lai Châu', 12),
(9, 'Sơn La', 14),
(10, 'Yên Bái', 15),
(11, 'Hoà Bình', 17),
(12, 'Thái Nguyên', 19),
(13, 'Lạng Sơn', 20),
(14, 'Quảng Ninh', 22),
(15, 'Bắc Giang', 24),
(16, 'Phú Thọ', 25),
(17, 'Vĩnh Phúc', 26),
(18, 'Bắc Ninh', 27),
(19, 'Hải Dương', 30),
(20, 'Hải Phòng', 31),
(21, 'Hưng Yên', 33),
(22, 'Thái Bình', 34),
(23, 'Hà Nam', 35),
(24, 'Nam Định', 36),
(25, 'Ninh Bình', 37),
(26, 'Thanh Hóa', 38),
(27, 'Nghệ An', 40),
(28, 'Hà Tĩnh', 42),
(29, 'Quảng Bình', 44),
(30, 'Quảng Trị', 45),
(31, 'Thừa Thiên Huế', 46),
(32, 'Đà Nẵng', 48),
(33, 'Quảng Nam', 49),
(34, 'Quảng Ngãi', 51),
(35, 'Bình Định', 52),
(36, 'Phú Yên', 54),
(37, 'Khánh Hòa', 56),
(38, 'Ninh Thuận', 58),
(39, 'Bình Thuận', 60),
(40, 'Kon Tum', 62),
(41, 'Gia Lai', 64),
(42, 'Đắk Lắk', 66),
(43, 'Đắk Nông', 67),
(44, 'Lâm Đồng', 68),
(45, 'Bình Phước', 70),
(46, 'Tây Ninh', 72),
(47, 'Bình Dương', 74),
(48, 'Đồng Nai', 75),
(49, 'Bà Rịa - Vũng Tàu', 77),
(50, 'Hồ Chí Minh', 79),
(51, 'Long An', 80),
(52, 'Tiền Giang', 82),
(53, 'Bến Tre', 83),
(54, 'Trà Vinh', 84),
(55, 'Vĩnh Long', 86),
(56, 'Đồng Tháp', 87),
(57, 'An Giang', 89),
(58, 'Kiên Giang', 91),
(59, 'Cần Thơ', 92),
(60, 'Hậu Giang', 93),
(61, 'Sóc Trăng', 94),
(62, 'Bạc Liêu', 95),
(63, 'Cà Mau', 96);
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

Cấu trúc đường dẫn cho web services

Chúng ta sẽ tạo các đương dẫn định nghĩa tài nguyên theo bảng sau:

 

Viết code triển khai ứng dụng

1.Lấy nội dung tỉnh thành

demo dữ liệu trả về từ http://web1.local/tinh-thanh

2.Lấy nội dung tỉnh thành theo id

demo dữ liệu trả về từ link: http://web1.local/tinh-thanh/6

{
    "id": "6",
    "ten": "Lào Cai",
    "code": "10"
}

3.Thêm mới dữ liệu

4. Câp nhật dữ liệu

5. Xóa dữ liệu theo id

Bài sau →