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

学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;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值