最近再总结一些PHP的规范, 正好项目也需要文档管理,翻到了phpDocumentor, 说起来现在有了phpDocumentor2了,用起来感觉还是很方便, 而且还带bootstrap样式,就安装到使用的过程写下来, 与大家分享。

这里是官方网站: www.phpdoc.org

通过pear安装phpDocumentor2

$ pear channel-discover pear.phpdoc.org
$ pear install phpdoc/phpDocumentor-beta

因为phpDocumentor2是通过xml的方式来读写模板
安装php-xml

$ wget http://www.graphviz.org/graphviz-rhel.repo /etc/yum.repos.d/graphviz-rhel.repo
$ yum install graphviz

使用phpDocumentor2
phpdoc -d指定文件夹,-t输出文件夹,–template使用模板

$ phpdoc -d /mnt/siteroot/im.crackedzone.com/ -t /mnt/siteroot/im.crackedzone.com/docs --template responsive</pre>

当然如果不习惯phpDocumentor2,也可以安装phpDocumentor1,下载地址

#1.5
pear install PhpDocumentor-1.5.0a1
#1.4.2
pear install PhpDocumentor-1.4.2
wget http://download.pear.php.net/package/PhpDocumentor-1.4.2.tgz

由于模板的关系1.5版本一下都是使用iso-8859-1的编码,所以为了防止乱码
转化编码防止乱码

find ./ -name '*.tpl' | xargs sed -i 's/iso-8859-1/utf-8/g'

相对于比较早期的系统,如Centos 5版本其实默认是没有安装Git。
所以只能手动安装

安装包下载

可以选择一个自己认为的稳定安装源,这里我选择git-1.8.3.1

wget http://git-core.googlecode.com/files/git-1.8.3.1.tar.gz
tar -xvf git-1.8.3.1.tar.gz
cd git-1.8.3.1/
./configure
make && make install

git依赖zlib-developenssl-develperlcpio,expat-devel,gettext-devel`这些包,
如果configure报错,通过yum安装缺失的依赖包即可。

安装完成后,可以通过查看版本来测试是否安装成功。

git --version

#选择admin数据库
use admin;
#创建一个用户名为root,密码为root的帐户;
db.addUser("root", "root");

#执行查看数据表,发现失败,需要登陆。
show collections;

所以我们重新登录test数据库

/usr/local/mongodb/bin/mongo -uroot -proot localhost:27017/test

发现还是失败,因为授权的是admin数据库,所以:

/usr/local/mongodb/bin/mongo -uroot -proot localhost:27017/admin

user test

创建一个用户名为test,密码为123的帐户;

show dbs;

因为用户test只是test数据的用户,只有admin数据库的用户才是超级管理员,可以查看任何数据库

启动服务的时候请加上--auth的选项

/usr/local/mongodb/bin/mongod --auth --dbpath=/usr/local/mongodb/data/ --logpath=/usr/local/mongodb/dblogs --fork

MongoDB才会进行认证

#save和insert方法类似,都是插入数据,但是save当主键相同的时候会自动更新
db.c1.save({_id: 1, name:'user7'});

#删除name为user1的数据
db.c1.remove({name:'user1'});

#批量插入数据
for(i=1; i<20; i++) { db.c1.insert({name:'user'+i, age:i }) }

#查询结构只需要 name, age, _id(id是默认有的)
db.c1.find({name:'user29'}, {name:1, age:1})

#查询结构只需要 name, 不用_id
db.c1.find({name:'user29'}, {name:1, _id:0})

#查询年龄大于5的数据
db.c1.find( {age: {$gt:5}} );

#查询年龄小于5的数据
db.c1.find( {age: {$lt:5}} );

#查询年龄大于等于5的数据
db.c1.find( {age: {$gte:5}} );

#查询年龄小于等于5的数据
db.c1.find( {age: {$lte:5}} );

#计算集合数量
db.c1.find().count();
db.c1.count();

#年龄倒序,取三条
db.c1.find().sort({age:-1}).limit(3);

#跳过2个,再去5个,LIMIT 2,5
db.c1.find().sort({age:-1}).skip(2).limit(5);

#count(1)表示统计之前的条件,否则跳过之前的条件
db.c1.find().sort({age:-1}).skip(2).limit(5).count(1)

#查询数组中包含相关值
db.c2.insert({name:"user1", post:[1,2,3,4,5]});
db.c2.find({post:{$all:[1,3]}});    #查询post包含1,3
db.c2.find({post:{$all:[1,6]}});

#查询age字段不存在的数据
db.c2.find({age:{$exists:0}})

#查询age字段除以2余1的数据
db.c1.find({age:{$mod:[2,1]}})

#查看数据库
show dbs;
#查看当前数据库
db;

#查看集合/表         
show collections;
show tables; #为了兼容mysql习惯

#给user集合插入一条JSON数据
db.user.insert({name: 'user1', age: 25});

#查询数据
db.user.find();

#删除集合数据
db.user.remove();

# 把"name"为"user2"修改为"user200"
db.user.update({name:'user2'}, {$set: {name:'user200'}});

#把"name"为"user200"的"sex"修改为"male"如果不存在,则增加
db.user.update({name:'user200'}, {$set:{sex:'male'}});