【MVC in PHP】PHP特性急速回顾【下】

我们继续回顾PHP的高级特性,请接上篇博客。

PHP高级特性
1、PHP 准备工作
2、OO in PHP 基础
3、OO in PHP 高级
4、优秀的PHP MVC框架介绍 

****************************************

3、OO in PHP 高级

讨论一下OO的高级特性,主要内容为接口、抽象类。

#1 接口

简单的项目是不需要用到很多的设计模式的,所以很多人一直在写写写一直都不知道写的是啥东西。大型的项目我们不可能一个人去开发完成,而团队合作最重要的就是灵活等等分工。有一种程序员写了很多年代码以后就变成了软件架构师,这不是一般人能胜任的工作,一个优秀的架构师设计的软件框架足以称得上是艺术。我们作为初学者需要慢慢去领会软件架构的思想,接受一点关于架构和设计模式的知识对我们以后的开发会有很大的意义。现在我们要讨论的是在PHP中使用的最广泛的类接口编程技术。

接口,定义了需要实现的类成员,而在PHP中定义的必须是类方法而不能是成员属性。接口定义用关键字interface ,命名通常为I+接口名字 这样的方式,只需要给出相应的方法申明即可,并且必须是全局的,不能包含常量和静态的方法,不能包含构造函数。

interface IAnimal{
function eat();
function sleep();
function play($game);
}

就像这样子,你只需要将需要实现的方法写出来就OK了。
现在就要去实现定义好的接口了。一个类实现某一个接口需要用到关键字implements ,实现接口必须要实现该接口的所有的方法,否则会报错。

class Dog implements IAnimal {
private $name = "狗狗"
function eat(){
echo $this->name."吃饭";
}
function sleep(){
echo $this->name."睡觉";
}
function play($game){
echo $this->name."玩".$game;
}
}

这样Dog类将IAnimal接口的所有方法都做了处理,即实现了接口。这样就是一个类实现了一个接口。
要注意的是,接口之间是可以有继承关系的,用extends 关键字,类似子类父类那样,会有子接口和父接口,而一个类在实现接口时,一定要实现子接口和父接口所有的方法。
一个类可以实现多个接口,还是有implements关键字,接口和接口之间用,分开就行。继承多个接口的类必须要实现所有的方法才算继承成功。
如果懂得Java中的interface 应该是不难理解这些东西的。

#2抽象类和抽象方法
PHP中抽象类和抽象方法是主流MVC框架所采用的设计模式。类接口设计模式和抽象类设计模式最主要的区别就是接口只能提供方法列表,只定义抽象界面,而不能提供实际的功能,但是抽象类则可以在抽象的实体中实现一些功能上的东西,这样就比接口更加灵活了。抽象类不能实例化对象,但是继承了抽象类的子类可以调用抽象类中的成员变量,所以可以这么理解:抽象类=普通类+类接口,即 abstract = class + interface 。抽象类必须有一个未被实现的抽象方法,用abstract 指定,还要有普通的方法和成员变量。下面看代码实现:

abstract class Animal{
abstract function eat();
abstract function play($game);
public $name;
function sleep(){
echo $this->name."睡觉觉";
}
}

定义了一个抽象类,有两个抽象方法,一个普通方法,一个全局的成员变量。现在来继承这个抽象类。

class Dog extends Animal{
function __construct($name){
$this->name = name;
}
function eat(){
echo $this->name."吃饭";
}
function play($game){
echo $this->name."玩".$game;
}

}

这样,我们定义了一个Dog类继承了抽象类Animal ,并且实现了其未实现的抽象方法,现在来看怎么使用。一定注意抽象类是不能实例化对象的。

$dog = new Dog("狗狗");
$dog->eat();
$dog->play("PHP");
$dog->sleep();

这样使用就实现了抽象类。
总结一下,接口只能提供一些方法,要实现接口要用implements关键字,然后实现所有的方法;抽象类和普通类的最大区别是class前面加上abstract关键字,并且里面必须包含一个未被实现的方法,这方法用abstract关键字指定,用extends实现继承,在子类中要实现抽象方法,并且可以直接继承抽象类中本来的普通类成员变量。相同点就是都是对类的一种抽象,不能直接实例化对象。
完善的设计模式中,抽象类技术和类接口技术都是广泛被使用到的,我们必须要理解并且会设计。

4、优秀的PHP MVC框架介绍 

****************************************

终于可以到这里了。介绍当前最重要的几个MVC框架,你要做的是选择其中之一并学精通。掌握基本的MVC开发思想然后掌握一个框架,其实就OK了,但是我们需要了解很多很多的东西。

#1 豪门框架:Zend Framework 官网:http://www.framework.zend.com/
PHP最官方的框架,功能最多,PHP企业级项目开发的首选框架,重量级的开发工具。学习成本较高,学好了很赞。如果你用的IDE是ZS,那么ZS已经内置了ZendFramework ,谁叫人家本来就是一家子的呢……初学者如果感兴趣的话可以上手ZF。不过我没搞过。

#2 最具艺术性的框架:Laravel 中文官网: http://www.golaravel.com/
专门为WEB艺术家设计的框架,简洁,优雅,艺术范儿十足。上手快,文档全,功能强大,语法很有艺术性。如果你是Mac 用户那么绝对值得玩玩!框架是跨平台的,Windows下面部署有点儿小难,不过我相信你如果想弄得话一定能弄好的。Laravel是2013年全球最喜爱的PHP框架排行第一哦!你赶紧去下载啊!嘻嘻我玩过,很赞!

#3 小巧但功能强大的框架:CodeIgniter  中文官网:http://codeigniter.org.cn/
小巧,简洁,高效,零配置,文档完善,国内外广泛使用,恩恩对这就是CI框架。CodeIgniter最大的优点就是小巧,学习成本很低。最大的缺点就是小巧,你无法要求CI去做ZF那样的企业级项目以及Laravel那种的语法优雅但是部署运行比较麻烦的事儿。国内使用很广泛,我玩的第一个框架,还不错。初学者最好的选择。

#4 国人开发功能强大的框架:ThinkPHP 官网:http://www.thinkphp.cn/
说实话当我知道TP是国人开发的时候我真的惊呆了!我们竟然也可以拥有如此强大的框架,真的很赞!!!支持国产,那么就用TP!并且因为是国产的,文档视频社区学习资料等等都是很熟悉的可能你稍微不注意就得到了TP作者的指点呢!本系列接下来的MVC实战会以TP来做。虽然我一直没有仔细学过ThinkPHP,,估计这个系列的博客写完我就会用了呢!嘻嘻!

#5 其他有名的但是没有用过的框架:http://www.oschina.net/news/47752/top-10-php-frameworks-for-2014 这篇文章可以看看
http://www.csdn.net/article/2014-01-03/2818006-PHP-framework-Laravel 还有这一篇

总之,MVC框架熟悉一个以后会很容易掌握其他的。每一种都有自己的特点,我们要多了解然后用好一两个就OK!

****************************************
这个系列主要以学习笔记呈现,讨论的内容主要以《PHP MVC开发实战》和《PHP设计模式》这两本书为主。
欢迎持续关注!

刘凯宁@C2P
20141005

Share

【MVC in PHP】PHP特性急速回顾【上】

在读李开涌先生的《PHP MVC开发实战》,此系列为学习笔记。对李先生致谢!

PHP高级特性
1、PHP 准备工作
2、OO in PHP 基础
3、OO in PHP 高级
4、优秀的PHP MVC框架介绍 

****************************************************************

1、PHP准备工作

#1 你应该先在机器上安装必要的软件,PHP开发要使用到的软件一般为:【网络服务器】,可选Apache 和Nginx ;【PHP解释引擎】,就是PHP了;【数据库】,主要使用MySQL。然后需要运行环境:Linux 、Windows 、Mac OS 都是可以的。以上不同的开发组合,一般会冠以“LAMP”,“LXMP”,“LNMP” ,“WAMP” 等等的名号,你第一步要做的,就是在自己的电脑上安装并且配置好以上任意组合之一的环境。

#2 别担心,这些工作完全都是可以轻松而又简单的。考虑到我们主要是在Windows环境下进行开发,我建议大家去下载WAMP server 安装包,另外一个选择是 XAMPP 安装包。你应该知道怎么获取这两个软件。

#3 一个敲代码的工具。编辑器或者IDE任你选择,如果选择编辑器我推荐Sublime Text 2 or 3 ,被称为当前最性感的开发编辑器;如果是选择IDE我推荐ZendStidio,最强大最官方最专业的PHP集成开发环境,写过Java的你一定会爱上ZS的。不过很抱歉ZS不是免费的,但我相信你能够有办法让它变成免费的。

#4 一个浏览器。如果你依旧喜欢IE6,我靠你还是别做开发了。什么360、搜狗、百度甚至猎豹浏览器,都不建议做开发调试使用。下载一个Chorme或者FireFox吧,求你了。

#5 你必须要有PHP的基础。W3C School 离线版的手册如果你没有的话,请赶紧百度一下下。打开后你需要腾出来5个小时:用一个小时迅速看完HTML基础,半个小时迅速看完CSS基础,半个小时迅速看看JavaScript 是干嘛的,恩剩下的3个小时没错,PHP基础看了。至少学会写了一个还算是好看的网页,有一个表单,提交到另外一个网页上并且能够获取到相应的数据,表单能够比较好看的显示出来,并且对相关的控件能够检验是否为空神马的,知道$_GET和$_POST 是干嘛的,知道echo和var_dump 的使用方式,并且永远要记得变量前面有一个$ 符号。别告诉我你找不到PHP 。手册别丢,你接下来的很久很久很久很久很久很久时间它会一直陪着你的。

#6 请确定你已经明确前面的5点。如果你不能需要5小时解决 #5 中的问题,那么现在新的问题来了:学PHP哪家强?………………我这里有传智播客韩顺平先生的全套PHP教程,还有PHP100的全套教程,网盘上也有,账号mengqingshare@163.com 密码mqshare2014,金山快盘百度云盘打开你会发现惊喜。不用客气。只求不改密码。谢谢。

****************************************************************

2、OO in PHP 基础

终于来到了这里(其实我多么想一下子就来到这里哇哇哇)

OO,Object Oriented,面向对象。近30年计算机编程界最流行的开发方法。如果你写过Java 那么你会很开心。概念很多,重要的就那么几个:类,对象,成员变量(属性),方法,继承、构造函数、接口、访问修饰符、抽象类、异常处理。现在先看看OO基础。

#1 类,对象,属性,方法,访问修饰符

<?php
class Student{
private $name;
public $tel = '15200800000';
function setName($name){
$this->name = $name;
}
function getName(){
return $this->name;}
}

?>

以上定义了一个Student类,有一个成员变量$name,以及对应的 setter 和 getter 方法。是不是和Java刚刚学的时候很类似,你会发现下面个hi更加类似。

$stu = new Student();
$stu->setName('刘凯宁');
echo "我是哦".$stu->getNmae();
echo "我电话是".$stu->tel;

实例化一个对象然后调用相关方法。

以上代码可以放在一个文件中,但是最好是将每一个类都放在单独的文件中,调用的时候require或者include进来就对了。类的命名一般为 类名.class.php,这里类名小写。而在文件中 class 关键字后面建议大写类名。【其实就是说PHP对类名、方法名等是不区分大小写的,但是对变量是会严格区分大小写的】
PHP中调用方法或者访问属性是用->,而Java中是用 . 这个要注意。在PHP中字符串连接使用 而在Java中是用 +
要主要PHP是弱类型语言,方法是可以不指定返回值类型的,并且参数也不需要指定类型。当然你可以给参数强制指定一个类型当做默认类型,但是这个对开发者有用但是对PHP本身来说是没有区分的。
请注意$this关键字。你可能会想到Java中的那个this ,差不多就那个意思吧。后面还有self ,parent 等等,你一定会想到super什么的。现在请注意:用$this访问属性的时候不能加那个$在属性前面,这个一定要注意。
你应该注意到了那个private ,访问修饰符一般都差不很多,PHP中只有3中:public ,protected 和private ,Java多一种default。public权限最大,可以被外部访问,protected 可以被本身以及子类访问,而private只能被自己访问,这些应该是懂的。

然后来讨论一下构造函数。


function __construct($name,$tel){
$this->name = $name;
$this->tel = $tel;
}

把这个构造函数加到上面的类中。在实例化对象时候会有一点儿不同:

$stu2 = new Student('lkn','13290000987');
echo '我是'.$stu2->getName();
echo '我电话是'.$stu2->tel;

这就是PHP中构造函数的使用方式了。在Java中,是定义一个或者多个和类名一样的没有返回值的方法来做构造方法的,并且构造方法可以有不同的参数。PHP也是可以用类名这种形式的构造函数的,但是专业一点的话还是用__construct这样的方式。

#2 继承
继承可以分开来说说。
继承是OO最重要的思想之一。来看看PHP怎么实现继承的:

class Animal {
function eat(){
echo "吃东东";
}
function sleep(){
echo "睡觉啊";}
function play(){
echo "玩去了";}
}

class Dog extends Animal{
private $name;
function setName($name){
$this->name = $name;
}
function getName(){
return $this->name;}
}
}

一个Animal类,定义吃饭睡觉玩去了的方法,然后一个Dog类继承Animal类,有自己的属性和对应的setter 和 getter 方法。实例化的时候

$ani = new Animal();
$ani->eat();
$ani->sleep();
$ani->play();
$dog = new Dog();
$dog->setName('狗狗');
echo $dog->getName().$dog->eat();
echo $dog->getName().$dog->sleep();
echo $dog->getName().$dog->play();

因为Dog是继承于Animal,所以可以去调用它的方法。这就是继承了。
以上代码你可以写的更好,我只是简单回顾一下思想,求不照着写。

PHP中继承是无限制的,就是说你可以一直继承下去,只要你的修饰符权限能足够继承的条件。当然你可以中断继承,比如说指定某一个类是final的,就不允许被继承了,具体定义就是在class 前面加上 final

final class Dog{}

像这样的,就表明Dog这个类是不能往下面继承了。

在父类中会有一些公开的能被子类继承过去的属性和方法,子类继承过来以后是可以修改这些父类的属性和方法的。

 function eat(){
 echo '我要吃东东'}

把上面这个代码加到Dog类中,调用$dog->eat()的时候就会打印“我要吃东东”而不是“吃东东”。这个很简单啦。当然属性是需要修改的。

关于构造方法,如果你的子类需要父类的特性,并且要基于父类做新的开发,那么我强烈建议你的构造方法这么写

function __construct(){
		parent::__construct();
	}

这是一个没有参数的构造函数,你可以写有参数的,但是一定要记住,在构造函数中要首先去调用父类的构造函数,这个在后面的MVC实战中会经常性的遇到。

#3 静态类成员
一旦定义,只能调用不能改变的成员成为静态类成员。
静态类成员分为三种:类常量、静态属性、静态方法。
类常量用const 定义,一般建议大写,内部调用用self::类常量 ,外部调用用 类名::类常量 的方式。

const NAME = “LKN”;
//内部调用
echo self::NAME ;
//外部调用
echo Class::NAME;

内部外部指的是类的内部和外部。在类的内部,比如在某一个方法中要使用类常量就要用self::类常量,而在类的外部,不需要实例化一个类的对象就可以直接Class::类常量这样使用,这里的Class是一个类名。
静态属性和静态方法类似,用static 定义,内部调用用self::静态属性名(方法名), 外部调用用 类名::静态属性名(方法名) 的方式。

static $name = "lkn";
static function getName(){
echo self::$name;}
//外部调用时
echo Class::getName();

这里的Class是一个类名。
在继承父类以后,子类要调用父类中的静态成员就不能用self了,应该使用parent::静态属性名或者parent::静态方法名,而在调用子类本身的静态属性的时候依旧要用self的方式。就是说,只要涉及到调用父类的方法或者属性,建议都要用parent指定。
合理的使用静态类成员会给开发带来很大的便捷,并且在代码维护阶段很方便。建议修改不频繁的或者是单一功能的方法都定义成静态的。

****************************************************************
【好饿啊先去吃饭了……敬请期待下篇】

刘凯宁@C2P
20141005

Share

【PHP】CI框架学习:CodeIgniter框架的MVC流程以及Controller介绍

简单介绍CI中的MVC模式

M = models ,V = views , C = controllers 。CI是基于MVC模式构建的,现在就让我们快速的看一看CI的MVC流程实现。

首先来介绍一下CI的运行过程。
所有的请求都发到index.php这个入口文件中,然后根据URL的组成index可以判断是在请求哪个控制器的哪个方法, 然后就将这个请求发送到对应的controller的function中去执行请求;到了C这边,根据请求去调取model,获取相应数据,然后通过view展现出最后的结果。我自己画了个图:

虽然不好看但就差不多咯。

URL的组成是分段的,类似 yoursite/index.php/controller/function/param 这样的,前面的yoursite/index.php是不需要我们管的,后面的第一段是控制器,第二段是方法,以后的段都是要传递的参数,有几个就写几个,没有的话就只需要有2段。在CI中URL的段是很重要的知识点,所有的请求都是基于段的,获取当前URL某一段的方法是

<h2>$this->uri->segment(<var>n</var>)</h2>

参数n就是你想要获取的段数,比如你的URL类似localhost/index.php/product/showinfo/1 的时候,当调用上面的函数是,n=1你会获得product,n=3你会获得1。

Controller 这边,定义一个controller首先要继承CI_Controller ,在文件命名的时候要小写,但是雷明首字母要大写,多个单词用下划线分隔,不要用驼峰法命名。继承CI_Controller 以后,先调用其构造函数


function __construct()
 {
 parent::__construct();
 }

然后就可以定义自己的方法了。整个的代码类似下面的样子:


<?php
 class Student  extends CI_Controller {

function __construct()
 {
 parent::__construct();
 }

function show_info()
 {
 echo '我是一个大学生';
 }

function get_name($id)
 {
 echo $id;
 echo '我是name是刘凯宁';
 }
 }
 ?>

我们定义了一个controller,调用了构造函数,然后加了两个方法,一个带参数一个不带参数。当我们请求 wiesite/index.php/student/show_info这样的URL时候,就会转到student这个控制器的show_info这个方法中去做相应处理,而请求website/index.php/student/get_name/4这样的URL时,就会转到student的get_name方法中,并且带了一个参数4过来。这就是控制器的介绍了:通过请求URL然后转到不同的控制器的不同方法中做相应的处理。

刘凯宁@C2P
20140911

Share

【C2P】推荐几个需要了解的PHP开源软件

今天为大家推荐几个好玩的软件

我们为什么要做软件开发?为了解决当前的问题。

我们需要了解一些优秀的软件,从其中体会,领悟,从而做属于自己的产品。二次开发,仿制,甚至抄袭,都不重要,重要的是理解优秀软件的思想价值。OK,开始。

1、WordPress  http://cn.wordpress.org/ 
当下最优秀的博客系统,没有之一。
全世界使用人数最多的博客网站,不计其数的插件,不计其数的主题,不计其数的使用者和开发者。简单,优雅,高效。支持多用户,支持二次开发,基于WP有众多的开源项目, 个人博客首选。可做CMS,可做企业展示网站。想单个玩的,想折腾的,WordPress都可以满足你的需求。如果自己开发一个插件能被万千用户认可,做开发的也就无憾了。

唯一不好的,正因为功能多,使用人数众多,于是每次看到大大的W时候,都觉得一见如故。这种感觉怎么说呢,木有惊喜……

2、Typecho http://www.typecho.org/

国人开发的开源博客系统,优雅,简洁。和WP唯一不同的就是,恩这真的是单纯的博客系统,并且是专门为开发者准备的博客系统。整个博客系统只有4张表,只有不到500K代码:简约,但不简单。Typecho自己带的编辑器很干净,使用markdown语法,一般人也不怎么会用(⊙o⊙)……搜索分类主题插件一应俱全,只不过木有WP种类多啦!作为开发者来说,500K的代码完全可以看懂,所以如果想用什么插件,完全可以自己去开发。官网上提供的主题和插件不是很多,于是给了开发者很大的权限。想耍一把的,可以一试。国人软件,于是你可以随时和作者取得联系,听起来就很棒!

3、Discuz http://www.discuz.net/forum.php

不多说,你所能见到国内的论坛或者BBS,百分之八十都是基于社区动力的,而高校、企业、开发者社区则覆盖率超过90%。功能强大,强大到使用手册都得让你看的头疼。Discuz和众多的软件都可以整合起来,比如PHP的thinkPHP框架和CI框架,还有另外一个UCenter 社区。站长太多了,于是你不知道的话就OUT了。

4、WeCenter  http://www.wecenter.com/

专业的问答网站软件。集合知识问答,社交,博客,CMS管理,以及微信平台,致力于打造一站式问答社区,为企业、开发者提供优质的知识交流。前端和bootstrap 完美结合,做二次开发很容易,并且在一定程度上拥有一个wecenter 站点比拥有一个wordpress站点会让人更加有成就感!建议下载下来一试,你绝对不会失望。

5、iWebShop  http://www.aircheng.com/

国内一流的完善的安全的堪称完美的电子商务网站,开源。想做一个淘宝网店,想做一个二手市场,想做产品推广店面产品展示,iwebshop是你最好的选择。集合支付宝支付、微信支付、块钱支付,不用任何开发技术就可以掌管一个完善的电子商务网站。同时集合了较强的安全验证机制,保证数据安全,完美支持安卓ios 移动端系统,国人制作,可以随时联系。个人版免费,企业版更加安全,收费。

如果能把这5个网站代码都能好好研究透,看懂,OK , web开发你还能有什么不会的?

下载下来玩一玩吧!

刘凯宁@C2P
20140821

Share

【PHP】七牛云存储API两种本质关系分析

为了七牛大赛!

昨天研究了一下七牛云存储SDK of PHP ,尝试实现了基本的文件上传、移动、复制、删除、下载、生成二维码等等功能,同时对图片文件实现了简单的缩放、查看图片、查看信息、添加水印等等,现在还没有尝试的是大文件上传处理和音视频文件的处理。一整天的研究学习下来发现,其实七牛提供的主要API有两种处理好两种关系就好:第一种是处理文件与服务器之间的关系,第二种是处理文件与客户端的关系。现在简要分析如下。

第一种关系:文件与服务器关系

这里的服务器是指七牛云存储的服务器。
这个关系主要实现七牛对文件的存储管理。存储管理,就是对文件在七牛服务器中的一些操作,简单一点说就是识别、存储、移动、删除、查看信息等等。
国内有各大提供存储服务的厂商,2013年的网盘大战就可以说明国内存储行业竞争是有多么激烈,而如今七牛算是一个比较好的选择。
将自己的文件存储在七牛的 服务器上必须要能辨别出个人的信息,七牛采用了AS和SK的方式保障了这一条要求的实现。AccessKey,SecretKey。一对儿AK/SK来实现对用户 唯一性认证已经是很多平台的选择了,SAE也采用这种方式。这里要注意的是,绝对不要把自己的SK透露给任何人,也绝对不要在开发的时候把自己的SK发送到客户端。通常需要用这一对秘钥生成上传、下载的Token,获取到相应的权限才可以做一些实用的操作。
文件在服务器中是以K-V 键值对存在的,于是在管理界面就没有类似百度云、金山快盘那种文件夹的概念。同时对于每一个用户来说,对文件的管理可以用bucket  这个来实现分类。bucket,空间,每一个用户都可以新建多个空间,而空间也可分为公开空间和私人空间,顾名思义私人空间就是不允许外链或者外部请求的时候需要获取下载Token才可以。

七牛为不同语言都提供了类似的接口,实现了上传、下载、移动、复制、删除等等文件操作,我分析发现PHP、java 、Go三种当中最容易实现的是PHP,功能最多的是Java,而Go语言的怎么说呢,因为七牛本身大部分的核心代码都是Go写的,所以相比其他任何SDK,Go的稳定性以及性能是最好的。只是国内支持Go的空间不多,因此一般没有办法选择Go去做开发。并且Go本身懂的人也不多……

客户端要实现上传、下载、复制、移动等等操作,最重要的是要获取到Token,而最常见的参数是一个空间名和一个文件名,专业一点说是一个bucket和一个key。这两个概念如果不懂可以去看看官网上对上传下载模型的分析。

综上,文件和服务器的关系就是这样了,我们主要做的就是根据不同语言的SDK去调用相关的方法就OK 。

第二种关系:文件与客户端关系

这种关系主要是对HTTP请求的操作。

实现文件下载、查看信息、生成二维码以及对图片的缩放、加水印、旋转等等操作,其实都是基于一个基本的URL然后去做相应的URL改写从而去调用七牛自己的内部处理函数最后返回相应的结果。比如我想缩放一个图片并且自己指定大小,我就可以构造这么一个URL


http://liukaining.qiniudn.com/02.jpg?imageView/w/100/h/300

如果我想给一个图片生成一个二维码,我就可以构造这么一个URL


http://liukaining.qiniudn.com/02.jpg?qrcode/0/L

就是这样!
我们对URL做处理就可以返回想要的结果了,而如此类似的,我们可以为图片加上水印,或者是旋转、裁剪甚至添加样式。

文件和客户端的关系就是,去发出一个HTTP请求,这个请求的URL是基于文件的URL的,然后你做一些修饰加上一些参数,我们就能够得到想要的结果。

上面说的都是公共空间的访问,而一旦客户端想要去访问私有空间的内容,那么就得先去获得token,这是自己服务器去给客户端发送的。

OK,这就是七牛API的两个最重要关系。只要处理好这两个关系,做基本的开发是没有问题的。顺便吐槽一下官网的文档,真的就是一群程序员写的……简单的东西非要绕来绕去说不清楚……真的是……

刘凯宁@C2P
20140819

PS:这是第100篇博客!!!

Share