从零开始学设计模式(1):基础编程模式

Introduction

俗话说,“PHP是世界上最好的语言”,因为PHP什么都能干。但是在PHP编程中,你是否会遇到这样的困惑:明明是相同的需求,但是之前写的代码却并不能重用,稍微修改不满足需求,大改又会让页面变样。 是的,由于PHP什么都能干,但是高度灵活性降低了代码的结构性。虽然可以利用三方框架来解决问题,但问题的根本在于缺乏设计模式。 本系列文章将由浅入深的介绍各种设计模式。

面向对象编程

面向对象编程,Object-Oriented Programming(OOP)作为最基本的设计模式并不是什么新鲜的话题,但是大部分新手的PHP编程都是在写流水账,各种拼接字符串,所以这里还是要提一下。 Object-Oriented Programming的概念这里就不说了,毕竟很多人都明白,但是如何在PHP中使用? 假设你需要在页面上显示不同的用户类型,如电脑用户、手机用户等,那么你可以将“显示”这件事抽象为一个类,如:

<?phpclass ShowAgent {  private $agent;  public function __construct() {    $this->agent = $_SERVER['HTTP_USER_AGENT'];    echo $this->agent;  }}$showAgent = new ShowAgent();?>

调试技巧

在很多PHP默认环境中,调试功能是关闭的。打开调试功能又需要配置php.ini文件,其实有一个简单的方法:

<?phpini_set("display_errors", "1");ERROR_REPORTING(E_ALL);?>

将这段代码加入到你的代码中,甚至可以require或者include进去,方便调试。

流水账编程

这里列出流水账编程,并不是让你学习,而是指出何种编程不推荐使用:

<?php$total = "Total number is ";$number = "6";$totalNumber = $total.$number;echo $totalNumber;?>

这段代码并没有错,但是以后再也无法重用了,对吧?每次遇到相同问题,你都需要反复拼接。

面向过程编程

面向过程编程曾经很流行,缺点也是无法维护,例如:

  1. <?php
  2. function showTotal($total, $number) {
  3. $totalNumber = $total.$number;
  4. echo $totalNumber;
  5. }
  6. showTotal("Total number is", "6");
  7. ?>

这段代码同样没有错,但是时间久了,由于缺乏类的概念,showTotal在各种应用场景缺乏灵活性,你还是需要重写代码。

Summary

转变编程的思维需要花费的时间是很长的,但是记住:算法提高程序运行的速度,而设计模式提高编程的速度。

原文发布于微信公众号 - php(phpdaily)

原文发表时间:2016-05-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Golang语言社区

Golang语言社区--Go基础课程第一节聊聊Go语言

提及Go语言,有些人还是很陌生,不过更多的人是有所耳闻;还有一些人已经开始接触学习了。越来越多的人开始留意她,特别是再大数据下Go语言本身层面支...

55615
来自专栏Java技术栈

架构师必须掌握的 10 条设计原则

函数是程序员的工具中最重要的抽象形式。它们能更多地被重复使用,你需要编写的代码就越少,代码也因此变得更可靠。较小的函数遵循单一职责原则更有可能被重复使用。

1021
来自专栏我的小碗汤

使用pprof优化golang性能

Donald E.Knuth说过一句非常著名的话,过早的优化是万恶之源。原文如下:

1594
来自专栏芋道源码1024

Dubbo源码解析 - 远程暴露

前言 本篇讲的是dubbo中比较重要的 远程暴露,鉴于上一篇dubbo源码解析-本地暴露采用一图胜千言的写法好像读者并不太容易理解,加上之前写的别怕看源码,一张...

4176
来自专栏Java进阶架构师

dubbo源码解析-远程暴露

本篇讲的是dubbo中比较重要的远程暴露,鉴于上一篇dubbo源码解析-本地暴露采用一图胜千言的写法好像读者并不太容易理解,加上之前写的别怕看源码,一张图搞定M...

1101
来自专栏专知

【干货】如何写代码 -编程内功心法

写代码就是学一门语言然后开始撸代码吗?看完了我的《GoF设计模式》系列文章的同学或者本身已经就是老鸟的同学显然不会这么认为。 编程是一项非常严谨的工作!虽然我们...

3388
来自专栏编程

如何提高Python运行效率 超实用的四种提速方法

Python增长势头一直非常迅猛,它虽然是脚本语言,但容易学,同时,还有非常多优秀的深度学习库可用,也有越来越多的人将Python学习列入计划。Python是一...

2307
来自专栏程序员互动联盟

【编程技巧】提高程序员技能的11招

1.清晰的分析问题 2.三思而后行如何解决这个问题 3.收集完整的需求。 花点时间,想好产品的目标形态和最终的用户群。在这个阶段思路清晰会给以后节省很多时间。 ...

3477
来自专栏互联网杂技

以后有机会写框架用得着的

在这个js框架随处乱跑的时代,你是否考虑过写一个自己的框架?下面的内容也许会有点帮助。 一个框架应该包含哪些内容? 1. 语言扩展 大部分现有的框架都提供了这部...

2695
来自专栏java一日一条

书写高质量代码之状态维护

我们第一眼接触新事物所触发的思考方式,决定了以后我们看待这样事物的角度,进而影响更深层次的理解和行为。

611

扫码关注云+社区