`

Slim与NotORM搭建轻量级curd服务实践

    博客分类:
  • PHP
阅读更多

PS:原创文章,如需转载,请注明出处,谢谢!     

本文地址:http://flyer0126.iteye.com/blog/2113460

 

      经同事推荐,了解到Slim框架,Slim是一个PHP的轻量级的框架,基于路由机制实现Restful服务。而NotORM是轻量级的ORM框架,用来简化与数据库之间的交互,处理表关联关系非常的简单,另外其性能也非常高,甚至超过内置的驱动。

      到各自官网下载zip包,解压到项目根目录引用即可使用(NotORM前提需要满足pdo扩展)。

      配置Slim自定义路由时,发现有些带参数请求报“404错误”,原因后来发现原因是由于网站Nginx配置需要满足可rewrite,修正设置如下即可解决。

location / {
            index index.php index.html index.htm;
            try_files $uri $uri/ /index.php?$uri&$args;
}

        解决PDO中文乱码问题:

$pdo->query('SET NAMES utf8'); // 设置数据库编码

        解决页面展示乱码可用:

echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';

       具体实现服务代码示例如下:

<?php
/**
 * Model User file
 * User: flyer0126
 * Date: 14-9-4
 * Time: 上午10:40
 */

// include files
include_once dirname(__FILE__) . "/Config/database.php";
include_once dirname(__FILE__) . "/Lib/notorm/NotORM.php";
include_once dirname(__FILE__) . "/Lib/slim/Slim/Slim.php";
\Slim\Slim::registerAutoloader();

// init
$app = new \Slim\Slim();
$db  = new NotORM(DATABASE_CONFIG::initDB());

/**
 * 获取用户信息
 * request demo:http://test.domain.com/user/view/1
 */
$app->get(
    '/user/view/:id',
    function ($id) use ($app, $db) {
        $user = $db->users()->where('id = ?', $id)->fetch();
        if(empty($user)){
            echo json_encode(array('rlt'=>false, 'data'=>'user is not exist'));
        } else {
            echo json_encode(array('rlt'=>true, 'data'=>$user));
        }
    }
);

/**
 * 更新用户信息
 * request demo:http://test.domain.com/user/edit/1
 */
$app->post(
    '/user/edit/:id',
    function ($id) use ($app, $db) {
        $user = $db->users()->where('id = ?', $id)->fetch();
        if(empty($user)){
            echo json_encode(array('rlt'=>false, 'data'=>'user is not exist'));
        } else {
            if($db->users()->where('id = ?', $id)->update($_POST)){
                echo json_encode(array('rlt'=>true, 'data'=>'edit user success'));
            } else {
                echo json_encode(array('rlt'=>false, 'data'=>'edit user fail'));
            }
        }
    }
);

// run
$app->run();

      具体请求测试可以使用火狐浏览器HTTPRequest插件进行测试,也可以自己利用php curl编写用例来测试,还是比较简单的。

 

      

分享到:
评论

相关推荐

    ThinkPHP轻量级PHP开发框架v5.1RC2核心版

    ThinkPHP是一个性能卓越并且功能丰富的轻量级PHP开发框架,本身具有很多的原创特性,并且倡导大道至简,开发由我的开发理念,用最少的代码完成更多的功能,宗旨就是让WEB应用开发更简单、更快速。遵循Apache2开源...

    通过ext实现CURD

    EXT的Data Store组件负责管理数据,它可以与服务器进行异步通信获取数据。结合Grid Panel,可以展示数据表中的记录。配置Data Store的proxy属性指向SQL Server的URL,使用Ajax Proxy或者JsonP Proxy根据需求进行跨域...

    所有使用数据库的Web应用都\"just CURD Apps(只是CURD应用)

    压缩包内的文本文件“All Database Backed Web Apps are just CURD Apps.txt”很可能包含了文章的全文,详细阐述了关于CURD操作在Web应用中的重要性和实践技巧。读者可以通过阅读该文件获取更深入的理解。 总的来说...

    boot-layui-curd-master.zip

    1. **轻量级**:相比于其他大型前端框架,LayUI体积小巧,加载速度快。 2. **模块化**:LayUI遵循AMD规范,每个功能模块都是独立的,便于按需引入。 3. **兼容性**:良好支持各种主流浏览器,包括IE8+。 4. **丰富的...

    angularjs CURD Example

    这个"angularjs CURD Example"是一个示例项目,旨在教授如何在AngularJS中实现创建(Create)、读取(Read)、更新(Update)和删除(Delete)这四个基本的数据操作,也就是常说的CRUD操作。在Web应用开发中,CRUD...

    vue简单curd例子。

    Vue.js 是一款流行的轻量级前端JavaScript框架,用于构建用户界面。它的核心理念是数据驱动和组件化,使得开发过程更加简洁高效。在这个"vue简单curd例子"中,我们将探讨如何利用Vue.js进行基本的CRUD(创建、读取、...

    Servlet+ajax+CURD实现增删改查功能程序

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Servlet与前端进行数据交换时,JSON被广泛采用,因为它能直接被JavaScript解析,无需额外的转换...

    thinkPHP之CURD开发简单源码

    在ThinkPHP中,CURD操作往往与控制器(Controller)和视图(View)紧密关联。控制器处理HTTP请求,调用模型方法进行数据操作,然后将结果传递给视图进行渲染展示。例如,Test控制器中的一个CRUD操作可能如下所示: ...

    Spring Boot 整合 SSM 下 CURD 示例

    MyBatis是一个轻量级的持久层框架,允许开发者将SQL语句与Java代码直接关联。在Spring Boot中,配置MyBatis包括创建mybatis-config.xml、定义Mapper接口和XML映射文件,以及在配置类中配置SqlSessionFactory和...

    TT随笔四 前台的CURD封装

    在前端开发中,CURD操作通常用于与后端API进行交互,实现对数据的动态管理。 这篇名为“TT随笔四 前台的CURD封装”的博客文章可能讨论了如何在前端应用中优雅地执行CURD操作。尽管描述为空,我们可以推测作者可能...

    curd oracle.

    curd oracle. curd oracle. curd oracle.

    java后台+easyui完整curd

    Java后台结合EasyUI实现CURD操作是Web应用开发中常见的需求,主要涉及到Java后端编程、数据库操作以及前端用户界面的设计。在这个项目中,“java后台+easyui完整curd”是一个利用Java技术和EasyUI框架构建的简单但...

    postgreSQL的CURD和存储过程

    1. **JDBC(Java Database Connectivity)**:JDBC是Java语言与数据库交互的标准接口。通过编写SQL语句并使用PreparedStatement执行,可以实现对PostgreSQL的CURD操作和存储过程调用。 2. **Hibernate**:一个优秀...

    ASP .net MVC5(C#)新手学习CURD

    **Razor模板**: Razor是一种轻量级的视图引擎,用于生成HTML。它使用C#语法,允许在HTML中嵌入代码片段,简化了视图的编写。Razor视图与控制器配合,根据模型数据动态生成页面内容。 **总结**: ASP.NET MVC5结合C#...

    最新winform三层CURD例子

    通过这个例子,开发者可以学习如何在Winform应用中实现三层架构和数据库操作,这对于初学者来说是非常有价值的实践。同时,对于有经验的开发者,这个例子也提供了一个快速搭建CRUD功能的基础模板。

    一个CURD的demo

    在IT行业中,CURD操作是数据库管理的基础,它代表了Create(创建)、Read(读取)、Update(更新)和Delete(删除)这四个最常见的数据库交互动作。本篇将围绕这个"一个CURD的demo"进行深入讲解,结合提供的xxm_...

    thinkphp CURD完整案例

    通过学习和实践这个"thinkphp CURD完整案例",开发者可以深入理解如何在ThinkPHP框架下进行数据库操作,这对于构建动态Web应用来说是至关重要的技能。同时,这也是提升PHP编程能力和数据库管理能力的有效途径。

    Android SQLite数据库的CURD.zip

    在Android应用开发中,SQLite是一个重要的组成部分,它是一个轻量级的、开源的、嵌入式的SQL数据库引擎,被广泛用于存储和管理应用程序中的数据。本教程将详细讲解如何在Android中进行SQLite数据库的CURD操作,即...

    MVC+LINQ进行CURD操作

    对于初学者,可以通过查看这些文件来实践MVC3中的LINQ CURD操作,理解如何将数据库操作与MVC架构相结合。 总的来说,MVC3结合LINQ提供了高效、简洁的Web开发方式,让开发者能专注于业务逻辑,而不是底层数据库交互...

    easyadmin一键生成指令php think curd(关联语句+sql文件)

    EasyAdmin框架以内置快速生成CURD的命令, 包括控制器、视图、模型、JS文件。能够使开发者效率得到进一步提升。 备注:在进行CURD命令行之前, 请按照规范设计表结构, 请参数表结构规范模块说明。 实际 以应用。

Global site tag (gtag.js) - Google Analytics