Flourish并不是一个PHP框架,它是一系列类的集合,能够帮助我们解决PHP开发中遇到的很多问题,提供了诸如数据库抽象层、ORM、图片处理、验证、输入输出、邮件发送、日期、数字等一系列实用的类。
我们可以从Github上获取Flourish最新版的源码,Flourish的结构很简单,所有类都在一个目录下,并且以f开头作为类名,不管是一个新项目还是一个已有项目,我们都可以考虑使用Flourish作为扩展,Flourish可以很容易地和其他框架或类库一起工作,下面将介绍怎样把Flourish集成到CodeIgniter框架中使用,我们主要面对的是怎样autoload Flourish类的问题。
我们把下载的类文件放在application/libraries/flouris目录下,并在application/libraries目录下新建Flourish.php文件:
2 /**
3 * Flourish Autoload Class
4 *
5 * Autoload Flourish classes by spl_autoload_register
6 *
7 * @package CodeIgniter
8 * @subpackage Libraries
9 * @category Libraries
10 * @author fineen.chen@gmail.com
11 */
12 class Flourish
13 {
14 /**
15 * Constructor - register autoload function
16 */
17 public function __construct()
18 {
19 spl_autoload_register('Flourish::load');
20 }
21
22 // --------------------------------------------------------------------
23
24 /**
25 * Autoload function
26 *
27 * @access public
28 * @param string $class
29 * @return boolean
30 */
31 static public function load($class)
32 {
33 if (strpos($class, 'f') !== 0)
34 {
35 return FALSE;
36 }
37
38 $flourish_root = APPPATH . 'libraries/flourish/';
39 $file = $flourish_root . $class . '.php';
40 $file = str_replace('/', DIRECTORY_SEPARATOR, $file);
41 if (is_file($file))
42 {
43 require $file;
44 return TRUE;
45 }
46
47 return FALSE;
48 }
49 }
50 /* End of file Flourish.php */
51 /* Location: ./application/libraries/Flourish.php */
在控制器中测试一下:
2
3 class Welcome extends CI_Controller {
4
5 public function index()
6 {
7 $this->load->library('flourish');
8 $time1 = new fTime('now');
9 echo $time1->format('H:i:s');
10 }
11 }
这样我们在需要使用Flourish类库的时候调用$this->load->library('flourish');就可以了,或者使用自动加载,在application/config/autoload.php修改$autoload['libraries'] = array('flourish');
本文链接
新浪微博有个高级接口’statuses/upload_url_text’(需要在open.weibo.com中额外申请)。
传递一个图片URL地址和文本内容,就可以发一条图文微博
对应在php版SDK的function如下:
* 指定一个图片URL地址抓取后上传并同时发布一条新微博
*
* 对应API:{@link http://open.weibo.com/wiki/2/statuses/upload_url_text statuses/upload_url_text}
*
* @param string $status 要发布的微博文本内容,内容不超过140个汉字。
* @param string $url 图片的URL地址,必须以http开头。
* @return array
*/
function upload_url_text( $status, $url )
{
$params = array();
$params['status'] = $status;
$params['url'] = $url;
return $this->oauth->post( 'statuses/upload', $params, true );
}
这里面有明显的错误,以致调用时会出现:20007错误(20007:does multipart has image ?)
改成这样就ok了:
* 指定一个图片URL地址抓取后上传并同时发布一条新微博
*
* 对应API:{@link http://open.weibo.com/wiki/2/statuses/upload_url_text statuses/upload_url_text}
*
* @param string $status 要发布的微博文本内容,内容不超过140个汉字。
* @param string $url 图片的URL地址,必须以http开头。
* @return array
*/
function upload_url_text( $status, $url )
{
$params = array();
$params['status'] = $status;
$params['url'] = $url;
return $this->oauth->post( 'statuses/upload_url_text', $params, false);
}
另:欢迎围观我今天做的微博应用:http://apps.weibo.com/wmyunqi
本文链接
预定义常量:
DIRECTORY_SEPARATOR (string) :目录分隔符
PATH_SEPARATOR (string) :路径分隔符
bool chdir ( string $directory )— 改变目录
2 chdir('public_html');
3 echo getcwd() . "\n";
bool chroot ( string $directory )— 改变根目录,仅在系统支持且运行于 CLI,CGI 或嵌入 SAPI 版本时才行。
dir::dir ( string $directory )— directory 类,有三个方法可用:read,rewind(将文件内部的位置指针重新指向一个数据流开头) 和 close
2 foreach($d as $k=>$v){
3 echo $k.'->' .$v. '<br/>';
4 }
5 while(false !== ($entry = $d->read())){
6 echo $entry."<br/>";
7 }
8 $d->close();
void closedir ( resource $dir_handle )— 关闭目录句柄
2
3 if (is_dir($dir)) {
4 if ($dh = opendir($dir)){
5 $directory = readdir($dh);
6 closedir($dh);
7 }
8 }
string getcwd ( void )— 取得当前工作目录
resource opendir ( string $path [, resource $context ] )— 打开目录句柄
string readdir ( resource $dir_handle )— 从目录句柄中读取条目
2 echo "Directory handle: $handle\n";
3 echo "Files:\n";
4 while (false !== ($file = readdir($handle))) {
5 echo "$file\n";
6 }
7 closedir($handle);
8 }
void rewinddir ( resource $dir_handle ) —将 dir_handle 指定的目录流重置到目录的开头
array scandir ( string $directory [, int $sorting_order [, resource $context ]] )— 列出指定路径中的文件和目录
2 $files1 = scandir($dir);
3 $files2 = scandir($dir, 1);
4 print_r($files1);
5 print_r($files2);
本文链接