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;}
阅读全文
1 0
- php 使用面向过程开发博客(1)
- php 使用面向过程开发博客(2) 安全专题
- 使用面向对象工具进行着面向过程的开发
- php验证码实现及使用--面向过程版
- 面向对象开发过程
- PHP面向对象开发(一)
- PHP面向对象开发(二)
- PHP面向对象开发(三)
- PHP面向对象开发(四)
- PHP 面向对象开发
- PHP面向对象开发
- PHP面向对象与面向过程实例
- MySQL_面向过程访问.php
- PHP开发博客系统(一)
- php博客开发
- 关于php,为什么要使用面向对象进行项目开发
- PHP入门-使用面向对象思想开发的图形计算器
- PHP中的面向对象和面向过程(转帖)
- 抽象类VS接口
- Ubuntu12.04文件修改eth0的IP
- this引用
- 【深度学习入门—2015MLDS】台湾大学李宏毅MLDS(2015)学习笔记
- iOS开发常用方法的封装
- php 使用面向过程开发博客(1)
- [HDU](2141)Can you find it? ---二分查找(查找)
- hdu 6148(数位dp)
- 从哪里发现用户的需求?
- Lua5.3 虚拟机指令分析(四)分支与跳转
- 【c++】联合、枚举和类型别名
- 使用bottle进行web开发:get的参数传递,form数据传递等
- maven项目数据库不显示数据信息
- 常用的布局管理器