分类目录归档:图片/文字

最简单的模板技术

php的模板,例如smarty等,都是采用模板内置的标记语言进行模板变量等操作。其目的是为了让开发模板的美工不需要太大的学习成本,可是采用这种方式有几个不足2点:

1,现在做页面的美工基本上都是直接把页面给程序处理成模板,这样的话,程序员就要承担模板这部分的学习成本

2,smarty中的模板最终也是编译成一个php html混排的文件,如此的话,模板将在编译上花费一部分的系统资源,其实php本身就是一个非常好的模板语言,何必在模板程序里用正则转换模板的标记语言呢!

从功能上来说,采用纯php来做模板语言的话,也非常容易实现页面模板与程序的分离,同时页面模板里的处理能力也大大的加强

下面是临时写的一个简易的模板类,没有其它功能,纯粹用于页面与程序的分离!

首页index.php文件

PHP代码
  1. <?php   
  2. header("content-type:text/html; charset=utf-8");   
  3. define(‘TPLDIR’,dirname(__FILE__).‘/tpl/’);   
  4. $template=new template;   
  5. $template->a=‘这里是模板输出变量测试!’;   
  6. $template->tpl(‘a.html’);   
  7.   
  8.   
  9. //模板类   
  10. class template   
  11. {   
  12.     function tpl($tplname)   
  13.     {   
  14.         $tpl=TPLDIR.$tplname;   
  15.         if(file_exists($tpl)){   
  16.             include($tpl);   
  17.         }else{   
  18.             echo ‘模板’.$tplname.‘不存在’;   
  19.         }   
  20.         unset($tpl);   
  21.     }   
  22. }   
  23. ?>  

 

模板文件 tpl/a.html

 

XML/HTML代码
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">  
  2. <HTML>  
  3.  <HEAD>  
  4.   <TITLE> 最简单的php模板 </TITLE>  
  5.   <META NAME="Generator" CONTENT="EditPlus">  
  6.   <META NAME="Author" CONTENT="">  
  7.   <META NAME="Keywords" CONTENT="">  
  8.   <META NAME="Description" CONTENT="">  
  9.  </HEAD>  
  10.   
  11.  <BODY>  
  12.  从模板里输入变量a: <?php echo $this->?>  
  13.  <br>  
  14.   从1加到10000等于:   
  15.   <?php  
  16.   $s=0;   
  17.     for($i=1;$i<=10000;$i++){   
  18.         $s+=$i;   
  19.     }   
  20.     echo $s;   
  21.     ?>  
  22.  </BODY>  
  23. </HTML>  
  24.   

php try catch 在多层应用中的异常捕捉

php的异常处理,当class2中的fun2方法出现异常。中间隔着class1,通过下面的方法就可以非常容易的把异常抛给最外面进行显示!

文件一(index.php)

PHP代码
  1. <?php   
  2. require ‘class1.php’;   
  3. require ‘class2.php’;   
  4. try {   
  5.   
  6.     $class1=new class1;   
  7.     $class1->run();   
  8.   
  9. }catch (Exception $e) {   
  10.     echo ‘输出最终捕捉到的异常:’.$e->getMessage();   
  11. }   
  12. ?>  

 

class1.php

PHP代码
  1. <?php   
  2. class class1   
  3. {   
  4.     function run()   
  5.     {   
  6.         try {   
  7.             $class2=new class2;   
  8.             $class2->fun2();   
  9.   
  10.         }catch (Exception $e) {   
  11.             throw $e;   
  12.         }   
  13.     }   
  14. }   
  15. ?>  

class2.php

PHP代码
  1. <?php   
  2. class class2   
  3. {   
  4.     function fun2()   
  5.     {   
  6.        
  7.         throw new Exception("这里出错了!");   
  8.            
  9.     }   
  10. }   
  11. ?>  

小试一下PHPRPC php做服务器端c#做客户端

今天看了下phprpc的用法,打算以后用c#做一个写针对本blog发博文的桌面程序,这样就可以想什么时候写就什么时候写了!

c#客户端源码。可执行文件在debug文件夹下面

phprpclogin.rar

vs 2008开发 c# 3.5

 d.png

PHP代码
  1. <?php   
  2. require_once(‘PHPRPC/phprpc_server.php’);   
  3.   
  4. class xzy   
  5. {   
  6.     function login($user,$pass)   
  7.     {   
  8.         if($user==‘xzy’ && $pass==‘xzy’){   
  9.             return true;   
  10.         }else{   
  11.             return false;   
  12.         }   
  13.     }   
  14.     function hi($name)   
  15.     {   
  16.         return ‘hi  ‘.$name;   
  17.     }   
  18. }   
  19. $rpc = new phprpc_server();   
  20.   
  21. $rpc->add(array(‘login’,‘hi’),new xzy());   
  22.   
  23. $rpc->start();   
  24.   
  25. ?>  

使用zend studio自带SubVersion客户端

电脑新装的ubuntu 9.04 ,在linux下没有好用的图形svn客户端,用命令行又嫌麻烦,工作中又要用到svn来进行代码管理,以前也知道zend studio自带了svn客户端,但以前一直没用过,正好现在拿来用用,使用方法非常简单

Zend Studio默认使用CVS,可在“工具”->“首选项”->“source control”中选择Subversion即可。
配置Zend Studio客户端使用SVN:
打开“工具”->“SubVersion”->”checkout“,显示对话框
Module ULR 指要下载的源程序在源码库的位置,工作目录是下载到本机的程序存放位置,如果所填目录不存在,则程序自动创建。
用户名密码如果不需要的时候默认为空。

Subversion菜单命令说明:
Update : 将svn 源码库端文件同步到本地的工作拷贝。
Commit: 提交当前工作拷贝的更改。这个地方是有可能出现代码冲突的。最安全的解决方法,先update一下,再修改程序并Commit。
Add :将当前文件添加到版本控制库中。原来该版本不处于版本控制之下。比如新建立的一个程序或者文件。
Delete: 将当前文件从版本控制库中删除,脱离svn版本控制。
Revert : 取消当前文件的所有的本地编辑。并且解决所有的冲突状态。
Resove : 删除工作拷贝文件或目录的“冲突”状态。
Status: 查看当前工作拷贝文件和目录的状态。
Diff : 比较当前文件与源码库中相应文件的不同。
Log : 当前文件的所有修改记录,从创建开始的每一次修改都能显示出来。

注意:上面的命令也可以在Zend Studio 左侧的项目区域对多个文件或文件夹同时操作。

在修改完成之后,可以到程序运行服务器的项目目录下svn update一下,就可得到最新的程序。

Svn高级操作:
a. 解决冲突(合并别人的修改)
b. 分支与合并

screenshot.png