由于公司目前的问题反馈方式主要是通过公共邮箱,而IT部门在处理完成后进行邮件回复。针对目前的状态,公司希望通过系统线上的进行管理,一方面规范各业务部门提交问题的规则,也便于后期的查看统计。经过当时汉德实施顾问的推荐,公司决定试运行MantisBT来满足如上需求。如果反应效果不错,将该系统推广至各下属公司,以替代公共邮箱。
针对开源的Mantis,官网http://www.mantis.org.cn/ ;http://www.mantisbt.org/ .
一些关于该系统的基本介绍常识如下:
缺陷管理平台Mantis,也做MantisBT,全称Mantis Bug Tracker。
Mantis是一个基于PHP技术的轻量级的开源缺陷跟踪系统,以Web操作的形式提供项目管理及缺陷跟踪服务。在功能上、实用性上足以满足中小型项目的管理及跟踪。更重要的是其开源,不需要负担任何费用。
Mantis是一个缺陷跟踪系统具有多特性包括:易于安装,易于操作,基于Web,支持任何可运行PHP的平台(Windows,Linux,Mac,Solaris,AS400/i5等),已经被翻译成68种语言,支持多个项目,为每一个项目设置不同的用户访问级别,跟踪缺陷变更历史,定制我的视图页面,提供全文搜索功能,内置报表生成功能(包括图形报表),通过Email报告缺陷,用户可以监视特殊的Bug,附件可以保存在web服务器上或数据库中(还可以备份到FTP服务器上),自定义缺陷处理工作流,支持输出格包括csv、MicrosoftExcel、MicrosoftWord,集成源代码控制(SVN与CVS),集成wiki知识库与聊天工具(可选/可不选),支持多种数据库(MySQL、MSSQL、PostgreSQL、Oracle、DB2),提供WebService(SOAP)接口,提供Wap访问。
本文链接
public 表示全局,类内部外部子类都可以访问;
1 <?php
2
3 class Test{
4 public $name='Janking',
5 $sex='male',
6 $age=23;
7
8 function __construct(){
9 echo $this->age.'<br />'.$this->name.'<br />'.$this->sex.'<br />';
10 }
11
12 function func(){
13 echo $this->age.'<br />'.$this->name.'<br />'.$this->sex.'<br />';
14 }
15 }
16
17
18 $P=new Test();
19 echo '<br /><br />';
20 $P->age=100;
21 $P->name="Rainy";
22 $P->sex="female";
23 $P->func();
24 ?>
private表示私有的,只有本类内部可以使用;
1 <?php
2
3 class Test{
4 private $name='Janking',
5 $sex='male',
6 $age=23;
7
8 function __construct(){
9 $this->funcOne();
10 }
11
12 function func(){
13 echo $this->age.'<br />'.$this->name.'<br />'.$this->sex.'<br />';
14 }
15
16 private function funcOne(){
17 echo $this->age.'<br />'.$this->name.'<br />'.$this->sex.'<br />';
18 }
19 }
20
21
22 $P=new Test();
23 echo '<br /><br />';
24 $P->func();
25 $P->age=100; // Cannot access private property Test::$age
26 $P->name="Rainy"; // Cannot access private property Test::$name
27 $P->sex="female"; // Cannot access private property Test::$female
28 $P->funcOne(); // Call to private method Test::funcOne() from context ''
29 ?>
protected表示受保护的,只有本类或子类或父类中可以访问;
和封装有关的魔术方法:
__set():是直接设置私有成员属性值时,自动调用的方法
__get():是直接获取私有成员属性值时,自动调用的方法
__isset(); 是直接isset查看对象中私有属性是否存时自动调用这个方法
__unset(); 是直接unset删除对象中私有属性时,自动调用的方法
本文链接
PHP文件上传
1、upload.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>ddd</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<!--文件上传要注意:1、要有enctyp,2、method="post"-->
<form enctype="multipart/form-data" action="/blog_article/uploadProcess.html" method="post" >
<table>
<tr><td>请填写用户名</td><td><input type="text" name="username"></td></tr>
<tr><td>请简单介绍文件</td><td><textarea rows="7" cols="50" name="fileintro" ></textarea></td></tr>
<tr><td>请上传你的文件</td><td><input type="file" name="myfile"></td></tr>
<tr><td colspan="2"><input type="submit" value="上传"><td></tr>
</table>
</form>
</body>
</html>
2、uploadProcess.php
<?php
//接收
$username=$_POST['username'];
$fileintro=$_POST['fileintro'];
//echo $username.$fileintro;
//获取文件信息
/* echo "<pre>";
print_r($_FILES);
echo "</pre>";
*/
//获取文件的大小
$file_size=$_FILES['myfile']['size'];
if($file_size>2*1024*1024){
echo "<script type='text/javascript'>window.alert('文件不能大于2M')</script>";
exit();
}
//获取文件类型
$file_type=$_FILES['myfile']['type'];
if($file_type!="image/jpeg" && $file_type!="image/pjpeg"){
echo "文件类型只能是 jpg 格式";
exit();
}
//判断上传是否OK
if(is_uploaded_file($_FILES['myfile']['tmp_name'])){
//得到上传的文件 转存到你希望的目录
$upload_file=$_FILES['myfile']['tmp_name'];
//防止图片覆盖问题,为每个用户建立一个文件夹
$user_path=$_SERVER['DOCUMENT_ROOT']."/file/up/".$username;
if(!file_exists($user_path)){
mkdir ($user_path);
}
//$move_to_file=$user_path."/".$_FILES['myfile']['name'];
//防止用户上传用户名相同的问题
$file_true_name=$_FILES['myfile']['name'];
$move_to_file=$user_path."/".time().rand(1,1000).substr($file_true_name,strripos($file_true_name,"."));
//echo $upload_file.$move_to_file;
//中文要转码
if(move_uploaded_file($upload_file,iconv("utf-8","gb2312","$move_to_file"))){
echo $_FILES['myfile']['name