• 写过程代码,业务小,基本没什么问题!
    • 代码越写越多,很多代码是重复的
    • 可读性差,怎么重构?
    • MVC
    • 把一批类似的函数改成一个类
    • 通用的工具类,全静态方法!
    • ->设计模式
    • ->内聚 耦合 扩展性
    • 封装?继承?多态?

    https://www.zhihu.com/question/36615154
    https://www.zhihu.com/question/439175007
    https://www.zhihu.com/question/440179547

    1. //指定图片路径
    2. $src = '001.png';
    3. //获取图片信息
    4. $info = getimagesize($src);
    5. //获取图片扩展名
    6. $type = image_type_to_extension($info[2],false);
    7. //动态的把图片导入内存中
    8. $fun = "imagecreatefrom{$type}";
    9. $image = $fun('001.png');
    10. //指定字体颜色
    11. $col = imagecolorallocatealpha($image,255,255,255,50);
    12. //指定字体内容
    13. $content = 'helloworld';
    14. //给图片添加文字
    15. imagestring($image,5,20,30,$content,$col);
    16. //指定输入类型
    17. header('Content-type:'.$info['mime']);
    18. //动态的输出图片到浏览器中
    19. $func = "image{$type}";
    20. $func($image);
    21. //销毁图片
    22. imagedestroy($image);
    23. function imagestring...
    24. function imagedestroy...
    1. class Image_class {
    2. private $image;
    3. private $info;
    4. /**
    5. * @param $src:图片路径
    6. * 加载图片到内存中
    7. */
    8. function __construct($src){
    9. $info = getimagesize($src);
    10. $type = image_type_to_extension($info[2],false);
    11. $this -> info =$info;
    12. $this->info['type'] = $type;
    13. $fun = "imagecreatefrom" .$type;
    14. $this -> image = $fun($src);
    15. }
    16. /**
    17. * @param $fontsize: 字体大小
    18. * @param $x: 字体在图片中的x位置
    19. * @param $y: 字体在图片中的y位置
    20. * @param $color: 字体的颜色是一个包含rgba的数组
    21. * @param $text: 想要添加的内容
    22. * 操作内存中的图片,给图片添加文字水印
    23. */
    24. public function fontMark($fontsize,$x,$y,$color,$text){
    25. $col = imagecolorallocatealpha($this->image,$color[0],$color[1],$color[2],$color[3]);
    26. imagestring($this->image,$fontsize,$x,$y,$text,$col);
    27. }
    28. /*
    29. * 输出图片到浏览器中
    30. */
    31. public function show(){
    32. header('content-type:' . $this -> info['mime']);
    33. $fun='image' . $this->info['type'];
    34. $fun($this->image);
    35. }
    36. /**
    37. * 销毁图片
    38. */
    39. function __destruct(){
    40. imagedestroy($this->image);
    41. }
    42. }
    43. //对类的调用
    44. $obj = new Image_class('001.png');
    45. $obj->fontMark(20,20,30,array(255,255,255,60),'hello');
    46. $obj->show();

    image.png