php文档更新

php.net最近更新了php文档,比较有用的是新增的pman工具。pman是一个命令行小工具,方便查看php函数的本地帮助文档,但是不包含php.net的评论数据。简单的试用心得如下: 安装pman 使用传说中的pear来安装pman sudo pear install doc.php.net/pman 如果pear版本比较老,需要先升级pear才可以继续 sudo pear upgrade pear pman使用方法 pman的使用方法很傻瓜,比如我们想查看strlen的帮助信息: pman strlen 帮助文本的内容是彩色的,能和chm版本的php帮助文档媲美。pman的详细使用帮助如下 #pman –help man, version 1.6c usage: man [-adfhktwW] [section] [-M path] [-P pager] [-S list] [-m system] [-p string] name … a : find all matching entries c : do not use cat file d : print gobs […]

快速创建pear/pecl的rpm

目前使用的服务器为centos,使用yum以及rpm来维护系统好处多多: 安装卸载,升级rpm软件包只需一条命令即可 统一部署,便于维护 比手工编译的方式要快 于是我需要把日常使用到的一些php扩展做成rpm包,但是手工写spec文件比较繁琐,因此pear的这个小工具PEAR_Command_Packaging帮了不少忙。它会给pear工具新增一个选项: pear make-rpm-spec [options] 这个命令行将会创建一个rpm的.spec文件,包含指定pear包的定义,而且也适用于pecl的php扩展。 创建pear rpm包的例子 $ cd /path/to/rpm-build-tree/SPECS $ pear make-rpm-spec ../SOURCES/Net_Socket-1.0.tgz Wrote RPM spec file PEAR::Net_Socket-1.0.spec $ rpm -bb PEAR::Net_Socket-1.0.spec … Wrote: /path/to/rpm-build-tree/RPMS/noarch/PEAR::Net_Socket-1.0-1.noarch.rpm 关于make-rpm-spec的帮助 pear help make-rpm-spec

PHP Namespaces FAQ

PHP Namespaces FAQ,适合没耐心仔细阅读完整README.namespaces的人来看. Q. Why PHP needs namespaces? A. Because long names like PEAR_Form_Loader_Validate_Table_Element_Validator_Exception are really tiresome. Q. What is the main goal of the namespace implementation? A. To solve the problem above. Q. What “namespace X::Y::Z” means? A: 1. All class/function/method names are prefixed with X::Y::Z. 2. All class/function/method names are resolved first against […]

关于PEAR的DB和MDB2方法对比

在从前的php4时代,我很喜欢使用pear的DB库,使用非常方便。但是现在pear官方站已经建议我们采用MDB2来代替它,虽然MDB2的前身可能有一些DB的影子,但是使用方法还是有一些不同,这些天一边使用,一边做些笔记。 MDB2 DB queryAll getAll queryRow getRow queryCol getCol queryOne getOne autoExecute autoExecute(需要载入extended module) autoPrepare autoPrepare(需要载入extended module) 其它方法貌似一致。

创建本地的pear

在某些主机上,你可能没有修改系统缺省安装pear的权限,但是又希望安装自己的pear包。这种情况下也有简单的办法实现: 首先在自己的home下创建一份pear的配置文件.pearrc: $ pear config-create $HOME .pearrc 如果一切顺利的话,直接进行下一步,否则运行一下下列命令: $ pear config-set download_dir /home/(username)/tmp/pear/cache $ pear config-set cache_dir /home/(username)/tmp/pear/cache $ pear config-set temp_dir /home/(username)/tmp/pear/temp 接着就可以开始安装pear了,这会连着pear的依赖文件一块安装: $ pear install -o PEAR 经过这一步,pear已经安装完成,如果你还希望安装其它的package,那么: $ pear install pear/PackageName 这样你就有了一份自己定制的pear包,为了在程序中调用到这些pear,你需要多谢写一些额外的代码,毕竟这些代码还不在你的include_path中。 php4 ini_set( ‘include_path’, ini_get( ‘include_path’ ) . PATH_SEPARATOR . “/home/(youruser)/pear/php” ); php5 set_include_path( get_include_path() . PATH_SEPARATOR . ‘/home/(youruser)/pear/php’ );

Pear的PHP_Compat包

Pear的PHP_Compat是个比较有趣的包,它提供了一些php4下也能使用的php5专有函数,比如file_put_contents,array_combine,str_split……….这样即使是在php4的主机上,也能提前享受一点php5函数的便利. 用法 <?php require_once ‘PHP/Compat.php’; // load file_put_contents PHP_Compat::loadFunction(‘file_put_contents’); // load str_split, array_chunk and file_get_contents PHP_Compat::loadFunction(array(‘str_split’, ‘array_chunk’, ‘file_get_contents’)); ?> 上面的例子说明,可以一次载入n个php5特有函数 Package Information: PHP_Compat http://pear.php.net/package/PHP_Compat

Pear::Pager和AJAX的整合应用

作为一个PHP开发人员来说,大概很让人受用的一个东东就是Pear的类库了。我们知道,Pear::Pager是专门处理分页的,而Pear::HTML_AJAX则是Ajax应用的一些类库。但是Pager也不仅仅是只能用于html的分页链接,它已经为比超女还红的Ajax做好了准备,下面看看这两个包如何整合应用。 Pager and Javascript 现在走出第一步,Pager已经能够构建出javascript的链接了,和Ajax整合,理论上应该也是能够实现的,下面是Pager和javascript分页的一个例子: require_once ‘Pager/Pager.php’; $data = range(1, 100); //an array of data to paginate $pager_params = array( ‘mode’ => ‘Sliding’, ‘append’ => false, //don’t append the GET parameters to the url ‘path’ => ”, ‘fileName’ => ‘javascript:revealDiv(%d)’, //Pager replaces “%d” with the page number… ‘perPage’ => 10, //show 10 items per page […]

Pear::Pager分页类简介

Pear的Pager分页类是一个很好用的php分页类,扩展性很强,能够适应各种分页情况的需求,至少我在几年间大大小小的项目里,基本上没有为分页额外写过代码,全部都是用的Pager,足见Pager的可用性之强.下面用代码来看看它的使用范例: 例子1 <?php require_once ‘Pager/Pager.php’; $params = array( ‘mode’ => ‘Jumping’, ‘perPage’ => 3, ‘delta’ => 2, ‘itemData’ => array(‘a’,’b’,’c’,’d’,’e’,[…omissis…],’z’) ); $pager = & Pager::factory($params); $data = $pager->getPageData(); $links = $pager->getLinks(); //$links is an ordered+associative array with ‘back’/’pages’/’next’/’first’/’last’/’all’ links //NB: $links[‘all’] is the same as $pager->links; //echo links to other pages: echo $links[‘all’]; //Pager can […]

在虚拟主机上复制安装本机Pear

在国内租来的虚拟主机上,有部分主机本身就提供了pear类库,但是不用指望它们会给你升级或安装需要的pear包.在这种情况下,可以尝试在自己的虚拟主机下安装一份pear. 通过ssh安装pear 国内绝大部分虚拟主机都不提供ssh,但若是朋友的服务器,可能会比较放宽一点给你权限.下面看看通过ssh在虚拟主机上安装pear的步骤: PEAR 1.3.5或以下: $ pear -s -c ~/.pearrc -d doc_dir=~/pear/docs \ -d ext_dir=~/pear/ext -d php_dir=~/pear/lib \ -d data_dir=~/pear/data -d test_dir=~/pear/tests \ -d cache_dir=~/pear/cache -d bin_dir=~/pear/bin PEAR 1.4以上: $ pear config-create /home/user/pear .pearrc 这样就在用户的home下建立了一个.pearrc文件 在.bashrc文件中加入 PEAR 1.3.2 或以下: $ pear -c ~/.pearrc install Archive_Tar PEAR Console_Getopt XML_RPC PEAR 1.3.3以上 $ pear install -o PEAR […]

No handlers for package.xml version 2.0

尝试在某主机安装Pear的DB_Table pear install -o DB_Table 下载…………………………等了半晌,在下载完之后,本应安装成功的时候,丢出来一句: No handlers for package.xml version 2.0 这实在是很奇怪的事情,php的xml extension没少装,依赖包也不曾短缺了它的,它怎么就能这样呢?搜索了一把,在Pear的Faq上面找到了答案. Why do I get “No handlers for package.xml version 2.0” when I try to install a package? You are using a PEAR version lower than 1.4.0. To install the package, you have to update PEAR via: $ pear upgrade PEAR This […]