初步猜想:

在接触到框架文档的第一阶段时,会觉得控制器调用模型就是一件很简单的事,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. 藏地传奇js

    http://zd.163.com/m/zhenyan/ js很厉害,有很多值得学习的地方,记录下来. http://res.nie.netease.com/zdcq/qt/13/0625_zheny ...

  2. CanVas类(绘图类)

    知识点: Canvas():创建一个空的画布,可以使用setBitmap()方法来设置具体的画布 Canvas(Bitmap bitmap):以bitmap对象创建一个画布,则将内容都绘制在Bitma ...

  3. [转]C# and the using Statement in 3 seconds and a bug in Reflector

    Using() Statement in 3 seconds and a bug in Reflector The boring, known accross the board definition ...

  4. 加密算法 MD5/SHA1

    近来想学习函数式编程. 但是一直不知道怎么展开这个学习过程,目前的研究进度也不深入,想讲解一些原理也无从下手. 先简单的上一些算法,逐步分析语法和思想.虽然程度不深,但至少能记录这个过程. 本例子用F ...

  5. C#使用文件监控对象FileSystemWatcher 实现数据同步

    在C#使用文件监控对象FileSystemWatcher 实现数据同步 2013-12-12 18:24 by 幕三少, 352 阅读, 3 评论, 收藏, 编辑 最近在项目中有这么个需求,就是得去实 ...

  6. 【IOS开发】SimPholders的使用

    推荐一个Xocde开发工具 “SimPholders”,能够快速访问到你的模拟器文件夹,最重要的是完全免费! 官方地址

  7. 职责链(Chain of Responsibility)模式

    一. 职责链(Chainof Responsibility)模式 责任链模式是一种对象的行为模式.在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链.请求在这个链上传递,直到链上的 ...

  8. 【Apache ZooKeeper】命令行zkCli.sh使用指南

    ZooKeeper命令行 原文                   http://blog.csdn.net/ganglia/article/details/11606807 ZooKeeper客户端 ...

  9. [google面试CTCI]1-3.字符串去重

    [字符串与数组] Q:Design an algorithm and write code to remove the duplicate characters in a string without ...

  10. [转]gdb 调试 objc

    源:http://bbs.pediy.com/showthread.php?t=159549 3. 在没有 symbols的情况下,想要下断 objc method 或者 private framew ...