轻巧的php模板类——SmartTemplate

SmartTemplate:

一个比较轻巧的php模板,执行速度上很有优势,据说执行速度是smatry的8x倍,当然实际使用中不会那么夸张,据本人测试,运行速度至少是pear的IT模板的4倍以上(2000个循环替换)。

下载地址:

http://www.smartphp.net/content/app/download.php

使用注意事项:

为了在同一个脚本中使用多个模板可以这样修改(php4):

281 line

unset($_top); 

to

unset($GLOBALS['_top']);

更好的将editplus与phpCodeBeautifier结合使用

phpCodeBeautifier这款php代码美化工具已经很久不见更新,它的命令行版本似乎有些bug,不能正确的将php代码弄的很整齐。但是phpCodeBeautifier的GUI版本还是能够执行正确无误的,可惜无法直接在命令行模式下打开某个文件,想与editplus结合使用比较困难。

但是注意到phpCodeBeautifier总是会打开上一次使用过的文件,打开phpCodeBeautifier.ini一看,LastFile=’******’不正是我们需要的东东么?

于是俺写了如下批处理文件搞定这个问题:

代码片段:


set phpcb_path="F:Program FilesphpCB
set phpcb_ini=%phpcb_path%phpCodeBeautifier.ini"
echo [Settings]        >%phpcb_ini%
echo LastFile=%1    >>%phpcb_ini%
echo [MainForm]        >>%phpcb_ini%
echo Left=-4        >>%phpcb_ini%
echo Width=1032        >>%phpcb_ini%
echo Top=-4        >>%phpcb_ini%
echo Height=748        >>%phpcb_ini%
echo [Options]        >>%phpcb_ini%
echo FileFormat=0    >>%phpcb_ini%
echo Settings=PEAR    >>%phpcb_ini%

%phpcb_path%phpCodeBeautifier.exe

在editplus的工具配置中调用以上批处理文件,参数为$(FilePath),一切搞定,可以用phpCodeBeautifier自动打开editplus当前编辑的文件:P

phpCodeBeautiful与editplus结合改进

有人提议使用phpCodeBeautiful的命令行,看这里:超链接地址http://club.phpe.net/index.php?act=ST&f=2&t=3701

在此基础上俺进行了修改,适合自己使用:

pcb.bat

代码片段:


set phpcb_path="F:Program FilesphpCB"
%phpcb_path%phpCB.exe -space-after-if -space-after-switch -space-after-while -space-before-start-angle-bracket -space-after-end-angle-bracket -glue-amperscore -change-shell-comment-to-double-slashes-comment -force-large-php-code-tag -force-true-false-null-contant-lowercase --comment-rendering-style PEAR -align-equal-statements-to-fixed-pos -indent-with-tab -optimize-eol -align-equal-statements --padding-char-count 1 %1 > %TEMP%phpcbTemp.php
move /Y %TEMP%phpcbTemp.php %1

等待pear投票的模板程序HTML_Template_Savant

在zend.com上看到这个模板程序,咋一看结构代码都很像smarttemplate,但是细看处理方法却是截然不同,模板程序中都是直接使用的php代码,如下面这段常见的循环显示代码:

< ?php foreach ($book as $key => $val): ?>
    
       < ?php echo $val[‘author’] ?>
       < ?php echo $val[‘title’] ?>
    
< ?php endforeach; ?>

我觉得用这种方式处理比较灵活,也还方便,而且并不需要生成cache之类的把戏,因为它本身已经是php程序了.加上方便的plugin和filter扩展,值得考虑,下面是这个模板的详细信息:

http://pear.php.net/pepr/pepr-proposal-show.php?id=83

使用Pear::Pager类的一个问题

今天把公司的服务器从php4升级到php5,问题来了.最严重的是使用Pear::Pager类,报错如下:
Fatal error: Cannot re-assign $this in D:xampphtdocstmptest.php on line 5

看了下Pager类的构造,有如下代码:
$this = ……………..;

看来从php5开始不再支持这种对自身重新实例化的写法了,只好重写了Pager类草草收场

[@more@]

升级到php5的日记 一

终于要从php4升级到php5了,是的,俺费尽了口舌,说服了boss使用php5和mysqli开发新项目.

首先俺细细的阅读了官方站点上介绍php5的有关章节,以及网络上的一些关于php5的文章.基本开发环境定为linux+apache2+php5+mysql4.1,很经典的搭配.为了提高开发效率,俺决定继续使用pear的类库和prado,因此现状是php4,php5的代码将并存.第一周俺们就遇到了麻烦:

1.mysqli和zend1的兼容性
php.ini里面有一个选项,可以开启对zend1的兼容性,如果你在打开这个开关的同时还想使用mysqli的话,很快就会失望.它会无情的告诉你:
unable clone a uncloneable object…………………

2.使用prado和php5的一些问题
prado程序包prado.php的有段代码如下:
set_error_handler( …….. );
php5的配置默认是不提示E_STRICT级别的错误,要命的是,这行代码对任何错误都会die(………………..),pear的代码完全没办法工作,只好咔嚓之

大文件上传且带进度条的php解决方案

以下是用Pear::HTML_Progress实现大文件上传的例子

  • HTTP 1 – Upload files with your web browser to a web server. Single page (using frames).
  • HTTP 2 – Upload files with your web browser to a web server. Progress meter in a popup.
  • HTTP 3 – Mixed field Upload. Single page (using frames).
  • HTTP 4 – Upload files with your web browser to a web server and logs operations into a file.
  • FTP – Upload file on a remote ftp server that may be different than webserver.

    更多的HTML_Progress教程看这里:
    http://pear.laurent-laville.org/HTML_Progress/examples/

  • [@more@]

    php代码美化程序PHP_Beautifier试用手记

    在pear的rss列表上看到了PHP_Beautifier 0.1.1 beta发布,便下载回来试用:
    >>pear install PHP_Beautifier
    ………………………………………..

    顺利完成,看了下帮助,还带有命令行工具,方便:

    D:xamppphp>php_beautifier –help

    Usage: php_beautifier [options]
    and/or can be ‘-‘, which means stdin/stdout.
    you can use ? and * for batch processing
    can be a dir (ending with ‘/’ or a real dir)
    or a file (without ‘/’)
    multiple ins and one out = merge all files in one output
    Options:
    –input or -f input file – default: stdin
    –output or -o output dir or file – default: stdout
    –indent_tabs or -t indent with tabs
    –indent_spaces or -s indent with spaces – default
    –filters or -l Add filter(s)
    –directory_filters or -d Include dirs for filters
    –compress or -c Compress output
    –recursive or -r Search in subdir recursively
    –help or -? display help/usage (this message)

    Filter definition:
    –filters "Filter1(setting1=value1,setting2=’value2′) Filter2()"

    不过试用下来,处理的不是太完美,比如复杂点php代码美化后不整齐之类的,期待更好的版本出现 [@more@]

    中文pear

    php的pear类库真是包罗万象,我时常想.

    用过之后,我发觉自己是越来越懒惰了,没心思去写一些模块和function之类的.为什么不呀,人家pear不有现成的么??

    为了强化记忆,与时俱进,加入中文pear部分,收罗中文的关于pear的文章.