多数大学生出来选择的工作和专业无关
首页 > 专业知识

在XAMPP上安装SVN的一个注意事项

时间:2018-04-26 18:17:02 [来源]:郑州PHP培训学校

   在XAMPP上安装SVN的一个注意事项

  在之前版本的XAMPP(如1.6.5)上,apache运行SVN所依赖的mod_authz_svn.so和mod_dav_svn.so两个文件是已经存在的,并且为了让XAMPP能够和SVN一起工作,XAMPP的开发者重新编译了这两个文件。而在新版本的XAMPP中(可能是从1.6.7开始),作者删除了这两个文件,你必须从svn的bin目录中拷贝这两个文件。
  因此,在XAMPP上安装SVN时,必须先检查“xampp\apache\modules”目录中是否有mod_authz_svn.so和mod_dav_svn.so这两个文件。如果已经有了,那么就不需要从svn中拷贝了。
  不过这里仍然有一个问题,xampp重新编译过的mod_authz_svn.so和mod_dav_svn.so文件只能支持某个指定版本的SVN,XAMPP版本和它支持的SVN版本是映射关系(即任意版本的XAMPP只支持特定的SVN版本)。
  很遗憾,XAMPP的开发者并没有发布XAMPP和SVN版本对应关系表。如果你发现你的XAMPP无法和SVN一同工作,排除了所有安装中可能出现的问题后,最后一个原因一定是XAMPP和SVN版本不对应。如果真的遇到这种情况,请升级XAMPP到1.6.7以上(含1.6.7。1.6.6可能也行,但我不确定)版本,直接从svn中拷贝mod_authz_svn.so和mod_dav_svn.so。
  一个php的中文乱码问题及解决方法
  <html><br /><head><br /><title></title><br /></head><br /><body><br /><?php<br />$mysql_server_name='localhost';<br />$mysql_username='root';<br />$mysql_password='000000';<br />$mysql_database='lib';<br />$conn=mysql_connect($mysql_server_name,$mysql_username,$mysql_password,$mysql_database);<br />$sql="select name,age from mytb";<br />print($conn);<br />$rs=mysql_db_query("lib","select * from mytb",$conn);<br />print("\n<br>");<br />while($row = mysql_fetch_object($rs)){<br />print ($row->name.":".$row->age."<br>");<br />}<br />mysql_close($conn);<br />?>
  显示如下:
  Resource id #1<br />dd:54<br />ddd:8<br />??:15<br />???:25<br />??:32mysql编码:utf8,GBK都试过了。mysql font 和命令行显示都正确。
  问题补充:
  乱码:
  ???:15<br />???:25<br />??:32
  这几行,数据库里的值是汉字.显示出来的是问号.
  解决办法:
  在$rs=mysql_db_query("lib","select * from mytb",$conn);前面加上
  mysql_query("set names gb2312");或者mysql_query("set names gbk");PHP单件模式和命令链模式的基础知识
  初学者对于设计模式肯定存在着很多不明白之处,今天刚好周末,就抽出来点时间写了一个单件模式结 合命令链模式打造系统核心的文章,可能对于部分人来说,文章内容过于浅显,这是送给初学者的教程,因为 时间比较紧(要陪老婆逛街,呵呵),其中出现了设计不规范的,代码书写不规范的,bug等等还望各路大侠指 出来,方便大家共同进步.本人水平有限.^_^相信大家都已经读过很多关于在PHP中应用设计模式的书籍或是文章,但是很少有直接给予实例,大部分 看完之后有种迷迷糊糊的感觉,如果没有项目实践,很难将设计模式部分弄清楚.
  为避免代码过于复杂.没有添加异常处理等内容.
 
  单件模式以及命令链模式的基础知识,大家自己google一下.不详细讲了.下面直接看实例:
  /*
  *@author:NoAngels
  *@time:08年08月30日
  */
  interface IRunAction{
  //获取类中定义的可以被APP中run的方法
  static function LoadActions();
  // 类中的入口函数调用该类中其他函数用
  function runAction($action, $args);
  }
  /*
  *APP 类系统的核心部分
  */
  class APP{
  static private $__instance = null;
  static private $__commands = array();
  static private $__flag = 1;
  private function __construct(){}
  //单件模式设计获取该类的唯一实例
  static function Load(){
  if(self::$__instance == null) self::$__instance = new APP;return self::$__instance;
  }
  //添加命名到APP的 $__instance中每次添加新命令的时候检查是否之前已经添加过一个该类的实例//如果有就忽略操作 如果没有就添加进来
  public function addCommand($cmdName){
  foreach(self::$__commands as $cmd){
  if(strtolower(get_class($cmd)) == strtolower(get_class($cmdName))) {self::$__flag = 0;
  break;
  }
  }
  if(self::$__flag == 1) self::$__commands[] = $cmdName;self::$__flag = 1;
  }
  //命令链模式设计的核心部分调用实例的入口函数//首 先检查是否在类中允许调用该操作如果没有就提示未定义操作退出public function runCommand ($action, $args){self::$__flag = 0;
  foreach(self::$__commands as $cmd){
  if (in_array($action, $cmd->LoadActions())){self::$__flag = 1;
  $cmd->runAction ($action, $args);
  }
  }
  if(self::$__flag == 0){
  self::$__flag = 1;
  exit ("undefined action by action : $action");}
  }
  //删除某个类的实例,只要指定类的名字即 可
  public function removeCommand($className){foreach(self::$__commands as $key=>$cmd){if(strtolower(get_class($cmd)) == strtolower($className)){unset (self::$__commands[$key]);
  }
  }
  }
  //供大家测试用看看是否添加以及删除成功
  public function viewCommands(){
  echo(count(self::$__commands));
  }
  }
  //类User 实现接口IRunAction
  class User implements IRunAction{
  //定义可以调用的操作
  static private $__actions = array('addUser', 'modifyUser', 'removeUser');//获取可以调用的操作, 实际过程中不要直接就爱你个$__actions设计成public调用//而应该设计一个LoadActions函数获取 $__actions的值static public function LoadActions(){
  return self::$__actions;
  }
  //运行指定函数
  public function runAction($action, $args){//不明白这个函数使用的可 以参看手册
  call_user_func(array($this,$action), $args);}
  //测试函数而已
  protected function addUser($name){
  echo($name);
  }
  }
  //类Test同类 User
  class Test implements IRunAction{
  static private $__actions = array('addTest', 'modifyTest', 'removeTest');static public function LoadActions(){
  return self::$__actions;
  }
  public function runAction($action, $args){call_user_func (array($this,$action), $args);}
  protected function addTest($name){
  echo ($name);
  }
  }
  //以下是测试代码
  APP::Load()->addCommand(new User);
  APP::Load()->addCommand(new User);
  APP::Load()->addCommand(new User);
  APP::Load()->addCommand(new User);
  APP::Load()->runCommand('addUser', 'NoAngels');APP::Load()->addCommand (new Test);
  APP::Load()->runCommand('addTest', null);APP类用单件模式设计,它是系统的核心部分.相信大家看代码就知道了Load方法是载入APP类实例,相当 于有些书籍中的getInstance静态方法.他有addCommand,runCommand,removeCommand三个public方 法.runCommand是核心部分.同时也是命令链模式的核心启动程序.具体实现请看源代码.代码写的已经很清 楚了,就此不再赘述.
 

上一篇:PHP程序与服务器端通讯方法小结

下一篇:PHP无限级分类方法及代码