初步猜想:

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

    get和post是http请求方法最主要的两种方式. get: 先实现一个简单的get请求 index.html <!DOCTYPE html> <html lang="e ...

  2. [转]理解C# 4 dynamic(1) - var, object, dynamic的区别以及dynamic的使用

    阅读目录: 一. 为什么是它们三个 二. 能够任意赋值的原因 三. dynamic的用法 四. 使用dynamic的注意事项 一. 为什么是它们三个? 拿这三者比较的原因是它们在使用的时候非常相似.你 ...

  3. 创建自己的github代码库

    前提: 1.安装git 2.在github上创建一个repository(库),如名字叫Hello-World,则git地址为https://github.com/username/Hello-Wor ...

  4. visual c++ 动态链接库调用总结

    由于每次使用动态链接库的时候都要重新去查资料,查调用方式,有些烦躁,本人抽点时间在此做个总结,希望可以对需要的朋友有所帮助. 1,显式加载方式加载动态链接库 简单易懂,随掉随用 (1)         ...

  5. ASP.NET MVC显示WebForm网页或UserControl控件

    ASP.NET MVC显示WebForm网页或UserControl控件 学习与使用ASP.NET MVC这样久,还是对asp.net念念不忘.能否在asp.net mvc去显示aspx或是user ...

  6. 关于wcf跨机器访问的问题

    在wcf跨机器的访问中遇到了各种无法访问的问题,本人也是在通过个人解决问题的基础上发表一下自己的经验,如果还有其他方面可能影响wcf跨机器的问题,还希望大家多多发言! 好了废话不多说了,正文如下: 1 ...

  7. 浅谈DevExpress<三>:在GridView中加载动态图片

    今天的演示效果如下:在GridView中的下拉框中选中一种颜色,则后面的加载相应的图片,如下图: 1.

  8. 关于Django模板引擎的研究

    原创博文,转载请注明出处. 以前曾遇到过错误Reverse for ‘*’ with arguments '()' and keyword arguments' not found.1其原因是没有给视 ...

  9. 关于模板pair的用法

    在挑战程序设计竞赛中看到调用pair,就上网查了一下 类型申明有两种 template <class T1, class T2> struct pair typedef pairt< ...

  10. Google C++测试框架系列:入门

    Google C++测试框架系列:入门 原始链接:V1_6_Primer 注 GTest或者Google Test: Google的C++测试框架. Test Fixtures: 这个词实在找不到对应 ...