初步猜想:

在接触到框架文档的第一阶段时,会觉得控制器调用模型就是一件很简单的事,tp中用D方法或者M方法来实例化模型,laravel中用命名空间来加载模型,CI中用$this->load->model来加载模型,都很方便,对吗.

之前的文章中有提到过一个关于排期的逻辑思考,同样在最初的设计中想到要将所有可能用到的类都加载.两者类似的地方在于加载的类的数量是不确定的,只有当你的业务逻辑完全固定后才可能有一个确定的将要被加载的类的数量.

那么,curl的出现,是不是改变这一情况的一种方法呢?当然了,利用php的autoload也可以达到这种效果,这里只对curl进行猜想,curl在我的印象里是用来模仿客户端访问链接并得到返回值的函数.

观察:

直接访问模型中的方法获取到数据,这里还有一点要提到,公司项目是多个项目处于同一个框架中,模型并不是单独放在某一个项目得model文件夹中,而是放在最外层(与项目同级)的Service层中,用陈老师的话来说就是逻辑和表现分离.这个涉及到其他方面暂且不做延伸.

那么,首先略过逻辑和表现分层这个思想.

剩下就变成curl工具的使用.

四个步骤


1.初始化资源

$handle = curl_init();

2.设置参数,这是传说中最重要的一步,具体可参考手册http://php.net/manual/zh/function.curl-setopt.php

像是在项目中访问模型的话,不会直接把返回的数据输出到浏览器中,所以大概设置如下:

curl_setopt($handle, CURLOPT_URL, $uri);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, 1);

CURLOPT_URL设置的是需要获取数据的url地址,这个可以在curl_init()中作为参数传进去.

CURLOPT_RETURNTRANSFER设置为1,将数据以字符串的形式返回.

3.执行

$rs =curl_exec($handle);

4.关闭

curl_close($handle)

至此,获取数据的方法从实例化模型对象->执行方法变成了通过url直接访问模型的方法

分析:

一种是框架实例化模型,再进行模型的各种操作.

一种是直接访问url,通过curl来模拟并获取数据.

猜想:

通过curl工具来访问url不用加载模型,不用实例化(当然了除了本身),在一定程度上能够提高性能.

最关键的是不用手动加载不可预料的模型,要使用什么数据接口直接访问即可.

那么,单独使用Service层在逻辑与展现层的分离上有何作用呢....

关于在框架中使用curl的思考,以及,curl其实很好用的更多相关文章

  1. curl javaSSm框架中传入json数组的格式方法

    curl与java结合传入get.post,head请求, 比如: curl的地址: curl -l 127.0.0.1:8080/spacobj/core/do?acid=100 -H " ...

  2. 制作类似ThinkPHP框架中的PATHINFO模式功能

    一.PATHINFO功能简述 搞PHP的都知道ThinkPHP是一个免费开源的轻量级PHP框架,虽说轻量但它的功能却很强大.这也是我接触学习的第一个框架.TP框架中的URL默认模式即是PathInfo ...

  3. 【开源框架】EFW框架中的系统权限与页面子权限详解

    回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0 EFW框架实例源代码下载:http://pan.baid ...

  4. 企业级应用框架(五)IOC容器在框架中的应用

    前言 在上一篇我大致的介绍了这个系列所涉及到的知识点,在本篇我打算把IOC这一块单独提取出来讲,因为IOC容器在解除框架层与层之间的耦合有着不可磨灭的作用.当然在本系列前面的三篇中我也提供了一种基于反 ...

  5. IOC容器在框架中的应用

    IOC容器在框架中的应用 前言 在上一篇我大致的介绍了这个系列所涉及到的知识点,在本篇我打算把IOC这一块单独提取出来讲,因为IOC容器在解除框架层与层之间的耦合有着不可磨灭的作用.当然在本系列前面的 ...

  6. 第49节:Java集合框架中底层文档的List与Set

    Java集合框架中的List与Set // 简书作者:达叔小生 Collection -> Set 无序不重复 -> 无序HashSet,需要排序TreeSet -> List 有序 ...

  7. Scrapy框架中的CrawlSpider

    小思考:如果想要通过爬虫程序去爬取”糗百“全站数据新闻数据的话,有几种实现方法? 方法一:基于Scrapy框架中的Spider的递归爬取进行实现(Request模块递归回调parse方法). 方法二: ...

  8. 8 -- 深入使用Spring -- 7...2 MVC框架与Spring整合的思考

    8.7.2 MVC 框架与Spring整合的思考 对于一个基于B/S架构的JAVA EE 应用而言,用户请求总是向MVC框架的控制器请求,而当控制器拦截到用户请求后,必须调用业务逻辑组件来处理用户请求 ...

  9. C++反射机制:可变参数模板实现C++反射(使用C++11的新特性--可变模版参数,只根据类的名字(字符串)创建类的实例。在Nebula高性能网络框架中大量应用)

    1. 概要   本文描述一个通过C++可变参数模板实现C++反射机制的方法.该方法非常实用,在Nebula高性能网络框架中大量应用,实现了非常强大的动态加载动态创建功能.Nebula框架在码云的仓库地 ...

随机推荐

  1. ajax的post请求

    get和post是http请求方法最主要的两种方式. post: 来个例子test.html <!doctype html> <html lang="en"> ...

  2. 博客加上“Fork me on Github”彩带

    给你的博客加上“Fork me on Github”彩带 起 如今,随着Git的大热以及Github的优越性,许多知名开源项目都将源代码托管到Github上了.在Github上不仅可以托管自己的开源项 ...

  3. 领域驱动设计(DDD)的实际应用

    领域驱动设计(DDD)的实际应用   笔者先前参与了一个有关汽车信息的网站开发,用于显示不同品牌的汽车的信息,包括车型,发动机型号,车身尺寸和汽车报价等信息.在建模时,我们只需要创建名为Car的实体( ...

  4. 工作日志(DJ)

    ajax传参:  $.post("MAIN_JSHandler.ashx",                               { "retInfoCode&q ...

  5. D12

    orz!=-=今天莫名爆人品..表示受到了惊吓.. 一下子从rank20-30+,突然间蹦到了rank3..=-=可怕.. 或许是因为T1有看过啊类似的啊..然后T3又被40指点了一下,T2打了个暴力 ...

  6. Jquery EasyUI中treegrid

    Jquery EasyUI中treegrid的中右键菜单和一般按钮同时绑定事件时的怪异事件 InChatter系统开源聊天模块前奏曲   最近在研究WCF,又因为工作中的项目需要,要为现有的系统增加一 ...

  7. 迟到的 WPF 学习 —— 路由事件

    1. 理解路由事件:WPF 通过事件路由(event routing)概念增强了传统的事件执行的能力和范围,允许源自某个元素的事件由另一个元素引发,例如,事件路由允许工具栏上的一个按钮点击的事件在被代 ...

  8. ubuntu 学习笔记3--shell入门-if空格问题

    对于if语句是shell编程的基础,但是按照教程写出的就会出错 ./bash1.sh: : ./bash1.sh: if[: not found true ./bash1.sh: : ./bash1. ...

  9. xml数据解析

    xml数据解析 在iPhone开发中,XML的解析有很多选择,iOS SDK提供了NSXMLParser和libxml2两个类库,另外还有很多第三方类库可选,例如TBXML.TouchXML.Kiss ...

  10. MVC3.0+knockout.js+Ajax 实现简单的增删改查

    MVC3.0+knockout.js+Ajax 实现简单的增删改查 自从到北京入职以来就再也没有接触MVC,很多都已经淡忘了,最近一直在看knockout.js 和webAPI,本来打算采用MVC+k ...