php 使用面向过程开发博客(1)

来源:互联网 发布:手机淘宝账号注册流程 编辑:程序博客网 时间:2024/06/03 11:51

学php一段时间了,依照布尔教育的blog教程跟做了一个简易博客。

用到及学到的组织规范有:
1.思路:从需求分析到产品运营维护的流程,需求分析=》设计=》编码=》测试=》实施=》维护,因为之前软考学过,就不在这里赘述了,可以到软考---系统开发运行了解


2.代码规范:注释一定要有,封装函数时用注释段来解释函数的作用,定义的变量类型及含义,方便以后增添功能或优化修改代码。

/***分页类*@param int $num 文章总数*@param int $curr 当前页码*@param int $cnt 每页显示的条数**/
3.文件组织规范:一个工程下创建多个文件分门别类的存放前端代码和php文件。



用到及学到的知识有:

1.在html代码中插入php代码,主要应用于修改模板,循环显示需要输出的数据库数据,例如文章列表,代码如下:①用大括号来开始结束循环体<?php } ?> 【 注意大括号和php之间一定要有空格 】

<?php foreach ($arts as $a) {?>                <tr>                    <td><?php echo $a['art_id']; ?></td> </tr>                <?php } ?>
②用endforeach来结束循环体 <?php endforeach; ?> 开始循环体使用冒号 【这种方式来自老韩教程】
<?php foreach ($article_list as $article): ?><a href="#"><?php echo $article['user_id']; ?></a><?php endforeach; ?>
2.定义根目录,引用文件使用绝对路径,相对路径会在多重引用时找乱。

define('ROOT',dirname(__DIR__));
3.图片上传,会存在临时文件,当php代码结束,该文件自动删除,所以需要转移文件

//判断是否上传图片        if (!empty($_FILES['pic']['name']) && $_FILES['pic']['error']==0){            $filename=createDir().'/'.randStr().getExt($_FILES['pic']['name']);            //移动上传的图片同时创建缩略图            if(move_uploaded_file($_FILES['pic']['tmp_name'], ROOT.$filename)){                $art['pic']=$filename;                $art['thumb']=makeThumd($filename);            }                                 }
/** * 创建目录 * @return string|boolean */function createDir(){    $path='/upload/'.date('Y/m/d');    $fpath=ROOT.$path;    if (is_dir($fpath) || mkdir($fpath,007,ture)){        return $path;    }else {        return false;    }}
/** * 获取文件后缀 *  */function getExt($filename){    return strrchr($filename,'.');}

4.创建日志文件记录每次调用数据库的语句及错误,方便查找调用数据库时的错误。

function mLog($str){    $filename = ROOT.'/log/'.date('Ymd',time()).".text";    $log = "------------------------------------\n".date('Y/m/d H:i:s',time())."\n".$str."\n"."------------------------------------\n\n";    return file_put_contents($filename, $log,FILE_APPEND);}
5.使用sql语句的拼接来完成sql增改操作

function mExec($table,$data,$act="insert",$where=0){    if ($act=="insert"){        $sql="insert into $table (";        $sql.=implode(',', array_keys($data)).") values ('";        $sql.=implode("','", array_values($data))."')";        //echo $sql;        return mQuery($sql);    }elseif ($act=="update"){        $sql="update $table set ";        foreach ($data as $k=>$v){            $sql.=$k."='".$v."',";        }        $sql=rtrim($sql,',')." where ".$where;        return mQuery($sql);    }
5.返回上个页面,应用于用户提交评论后,防止刷新重复提交。

$ref = $_SERVER['HTTP_REFERER'];


用到及学到的小函数:

1.获取用户ip:

function getRealIp(){    static $realip=null;    if ($realip!==null){        return $realip;    }    if (getenv('REMOTE_ADDR')){        $realip=getenv('REMOTE_ADDR');    }elseif (getenv('HTTP_CLIENT_IP')){        $realip=getenv('HTTP_CLIENT_IP');    }else if(getenv('HTTP_X_FORWARD_FOR')){        $realip=getenv('HTTP_X_FORWARD_FOR');    }    return $realip;  }
2.引入GD库,画图及创建缩略图

/** * 生成缩略图 * @param str $oimg /upload/2017/08/18/2Mbszd.jpg * @param int $sw 缩略图的宽 * @param int $sh 缩略图的高 * @return str 生成缩略图的路径  /upload/2017/08/18/2Mbszd.jpg */function makeThumd($oimg,$sw=200,$sh=200){    //缩略图存放路径    $simg=dirname($oimg).'/'.randStr().'.png';    //获取绝对路径    $opath=ROOT.$oimg;    $spath=ROOT.$simg;    //创建小画布    $spic=imagecreatetruecolor($sw, $sh);    //创建颜色    $white=imagecolorallocate($spic, 255, 255, 255);    imagefill($spic,0, 0, $white);    //获取大图信息    list($bw,$bh,$btype)=getimagesize($opath);    $map = array(        1=>'imagecreatefromgif',        2=>'imagecreatefromjpeg',        3=>'imagecreatefrompng',        15=>'imagecreatefromwbmp'    );    if (!isset($map[$btype])){        return false;    }    //获取大图    $opic=$map[$btype]($opath);    //计算缩略比    $rate=min($sw/$bw,$sh/$bh);    //小图大小    $zw=$bw*$rate;    $zh=$bh*$rate;    //    imagecopyresampled($spic, $opic, 0, 0, 0, 0, $zw, $zh, $bw, $bh);    imagepng($spic,$spath);    imagedestroy($opic);    imagedestroy($spic);    return $simg;}



原创粉丝点击