Pear::HTTP_Upload简介

Pear的HTTP_Upload类库提供了一个封装好的html表单文件上传处理程序,使用Pear的error系统。

特点

  • 能一次处理多个文件的上传
  • 容易校验文件的上传状态,限制不期望的文件上传
  • 多语种的报错提示信息(还没有中文,不过可以扩展)

单个文件上传的例子

index.htm

File 1:

files.php

<?php
require 'HTTP/Upload.php';
$upload = new HTTP_Upload('es');
// Language for error messages
$file = $upload->getFiles('userfile');
// return a file object or error
if (PEAR::isError($file)) {
	die ($file->getMessage());
}
// Check if the file is a valid upload
if ($file->isValid()) {    // this method will return the name of the file you moved,    
	// useful for example to save the name in a database    
	$file_name = $file->moveTo('./uploads_dir/');
	if (PEAR::isError($file_name)) {  
		die ($file_name->getMessage());
	}
}
?>

多文件上传的例子

Continue reading “Pear::HTTP_Upload简介”

Pear的命令行

Pear是PHP扩展和应用库(“PHP Extension and Application Repository”)的缩写,注意它不是鸭梨,尽管和该水果的发音相同。在安装好php之后,缺省情况下会自动安装pear的部分程序库,我们看看这种情况下如何自行安装更多的应用库。

全自动安装

很简单,只用一行。

pear install 

<package>应当是你要安装的库名,可以到Pear的站上浏览,相当丰富。也可以用命令行直接查看:

pear remote-list

提示:使用”-o”参数能够自动安装必需的依赖应用库。

手动安装

如果你直接在pear站上下载了gzip的安装包,可以采用这种安装形式。pear会自动安装这个应用库,不再链接到网上去下载。

pear install .tgz

命令清单

Continue reading “Pear的命令行”

Pear::DB_Table简介

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明

DB_Table是什么?

DB_Table 是一个访问数据库Table的OO接口,它提供了一些自动创建、插入、更新和选择的方法。自动构建往往意味着要丧失一些灵活性,DB_Table也不能例外。

安装

pear的程序库的安装没什么悬念

pear install DB_Table

DB_Table上手

官方介绍上推荐不要直接使用DB_Table Class,而是对它进行扩展,在这之上再定义字段,索引,视图等等其它自定义内容。下面来看看如何对DB_Table扩展。

Continue reading “Pear::DB_Table简介”

PHP 5.2.0 RC1发布

PHP 5.2.0 RC1发布,目前应该只是个样品,适合下载回来测试新功能。主要更新是新增了三个extensions:

其中filter extension由Rasmus Lerdorf提供,帮助php开发者过滤用户提交的内容。原来是在pecl.php.net,更详细的内容可以看这里:http://oss.backendmedia.com/PeclFilter,如能广泛使用,目前php开发的安全性将提升一个台阶!之前还听说对pdo extension有些调整,比如新增了setFetchMode方法,经常使用Pear:DB的同学一定不会陌生。

Given that it took a few months to reach this point and addition of new features was allowed the changelog already looks extremely impressive. Some of the key changes include things like 3 new extensions (filter, json and zip), the date extension had the rest of its functionality enabled, much work was done in terms of getting PHP 5.2 to run faster and more efficiently (in terms on memory usage). There have also been nearly 80 bug fixes made to existing functionality, which hopefully translates to a more stable release.

下载

利用http_request上传文件

有时候我们希望用脚本来自动往远端某个表单中自动添加文件上传,利用curl模块可能是个办法,但是直接使用pear的http_request可能是个更便捷的办法,简单的例子:

require_once "HTTP/Request.php";

$req =& new HTTP_Request("http://upload.example.com/upload.php");
$req->setBasicAuth("johndoe", "foo");
$req->setMethod(HTTP_REQUEST_METHOD_POST);

$result = $req->addFile("foo.jpg", "/home/foo/foo.jpg");
if (PEAR::isError($result)) {
    echo $result->getMessage();
} else {

    $response = $req->sendRequest();

    if (PEAR::isError($response)) {
        echo $response->getMessage();
    } else {
        echo $req->getResponseBody();
    }
}

用php将rss转化为json格式

要用php将rss转换成json,简单的转换思路是:
rss -> php array -> json

我们不必从头进行这些工作,pear已经提供了一些可用的类库,到命令行下面利用pear安装这些包
pear install channel://pear.php.net/XML_RSS-0.9.9
pear install channel://pear.php.net/HTML_AJAX-0.4.0

下面是一个简单的测试代码:

< ?php
require_once 'XML/RSS.php';
require 'HTML/AJAX/JSON.PHP';

$rss = new XML_RSS('http://www.ooso.net/index.php/feed/');
$rss->parse();
//var_dump($rss->getItems());

$json = new HTML_AJAX_JSON();
$js = $json->encode($rss->getItems());

echo $js;
?>

pear命令行参数的一些小变化

今天在prado的开发站点上看到prado 2.1.0rc1以pear channel形式安装的办法,由此也了解到pear命令行一些新参数的用法,看下面例子:

shell> pear channel-discover http://pear.mooexpress.com
shell> pear config-set preferred_state beta
shell> pear upgrade mooexpress/prado
upgrade ok: channel://pear.mooexpress.com/prado-2.1

  • 首先用discover频道搜索: pear channel-discover http://pear.mooexpress.com
  • 接着修改config允许安装beta版的pear包: pear config-set preferred_state beta
  • 最后安装或升级指定的包: pear install mooexpress/prado

channel参数是pear命令行最近的新增参数,估计主要为第三方的兼容pear的lib而设定.

path方式的分页类 – Pager::Pathing()

最近的一个项目,用path方式表现页面的url:

http://www.foo.com/index.php/p/user:photo
http://www.foo.com/index.php/p/user:photo/page/1
http://www.foo.com/index.php/p/user:photo/page/2

正常的页面url:

http://www.foo.com/index.php?p=user:photo
http://www.foo.com/index.php?p=user:photo&page=1
http://www.foo.com/index.php?p=user:photo&page=2

之前使用的分页类是Pear:Pager,在这时候就玩不转了,不管如何调整参数分页链接总是错误,于是写了个Pathing.php,专门用于path方式的分页,调用方法:

$pager = Pager::factory(array('mode' => 'Pathing'));

Continue reading “path方式的分页类 – Pager::Pathing()”