闻道丶iOS(尝鲜版)iOS DeveloperiOS

为什么移动开发人员应该学习PHP?

2017-03-24  本文已影响598人  飘游人

前言

随着移动端的兴起,越来越多的开发人员投身到移动端的开发热潮当中。虽然移动端开发不可避免的要跟后端打交道,但许多移动端开发人员却对后端开发知之甚少。他们更多的只是专注于自己的领域,对于后端,只要会调用接口、解析接口数据就万事大吉了。多数情况下,这确实已经足够了,那么,为什么要学习后端开发呢?

为什么要学习后端开发?

  1. 能更深刻的了解接口

    • 为什么有的接口要用GET,有的要用POST
    • Restful API的优缺点
    • 如何设计接口对移动端更友好
  2. 接口对接更加得心应手

    • 如果后端要求使用JSON格式传递数据,能够轻易搞定
    • 有助于接口相关问题的排查。我曾经遇到过一个问题,有一个iOS组员,需要做一个拍照将图片上传到后端的功能,这个功能看起来很普通寻常,却把他卡住了。后端开发人员一直说,他那边没有接收到图片,iOS组员弄来弄去都不行,他们两边也都不知道问题出在哪里。后端开发人员甚至把接收文件的代码都贴出来了,显然也是无济于事。后面我去看他们的问题,才发现,iOS组员使用的AFNetworking的API没有错,数据也传对了,错误的地方在于他对文件字段的理解是有问题的。如果做过后端开发,就会知道,在接收文件时,会有一个文件内容字段,还有文件类型(MIME)、文件名等信息,其中文件内容字段名称是后端规定的,上传文件时,只能照搬不误。而对于文件名等信息,则可以自行灵活填写,通常后端也不会使用这些信息(客户端提交的信息是不可信的)。那位iOS组员就是没搞明白这些字段信息的用途和区别,没有填写正确的文件内容字段名称,导致图片是文传上去了,但因为字段名称不相符合,后端无法读取到这个图片内容。
  3. 能更好的实现和H5页面的交互
    APP或多或少都会嵌入一些H5页面,时常需要和H5页面进行交互,这就需要用到html、javascript等Web相关的知识技术,这些技术可以从后端开发中去学习。
    BTW:现在开发的分工已经越来越细,像html、javascript、css这类知识已经被归入前端的范畴,因此也有了前端工程师这样一个专门的职位。随着前端开发方式的演变(如SPA),有些开发已经采用了真正的前后端分离。从这个意义上来说,后端更多的是负责业务逻辑、数据存储、系统架构层面的东西,除了后台管理系统外,已经不涉及页面的部分,但不管如何,html、javascript、css相关的基础知识仍然是后端开发必须学习的。

  4. 可以编写后端代码来辅助APP开发

    • APP一些组件或功能页面的开发,需要看各种数据情况下的表现,比如分页,要看没数据时、只有一页数据时、有多页数据时会怎么样
    • 需要测试某些功能,比如对后端接口发出请求后,请求还未完成,这时取消请求会发生什么
    • 当后端响应缓慢时,APP端会有什么效果?是否会使APP出现一些异常的行为?

    虽然这些可以通过Mock或其他手段或多或少的来达到目的,但能自己写些简单的后端代码来模拟支持,毫无疑问会更加灵活强大

  5. 能够和后端开发PK
    虽然说开发人员何苦为难开发人员,但有时难免会遇到后端开发像“大爷”一样,犯懒、摆架子、不配合的情况,如果你了解后端开发,那么就会有和其PK的资本。甚至如果你学得更深入一些,还能够判断出后端的问题。试想一下,这时你站在后端开发面前说出如同Linus大神的话:show me the code,然后指出他code中的问题,并给他解决方法。他一定会像不明觉厉的吃瓜群众一样,对你惊为天人,顶礼膜拜,从此你在他心目中的形象就是光芒万丈,无法直视,否则会亮瞎钛合金狗眼,会导致内分沁失调,大小便失禁……

  6. 更多的机会,更全面的发展

    • 更高的薪资,更好的发展前景。艺多不压身,更多的技能总会有更好的机会,有些招聘就要求移动端开发人员要熟悉甚至掌握至少一门后端开发语言
    • 更广博、更精深的知识。诸如设计模式、架构这类东西后端用的更多,相关的资料也更多更深,毕竟在移动端火起来之前,后端已经蓬勃发展了很多年,这些通用的知识点能更好地从后端开发中学习

为什么选择PHP?

诚然,在后端开发中,有很多语言可以选择,比如Ruby(Rails)、Node.js、Python、.Net、Java、PHP,那么为什么要选择PHP呢?

Ruby(Rails)、Node.js属于较为新兴的群体,特别是Node.js,09年才发布,相对而言都比较小众。
.Net有不少使用群体,但主要针对Win平台,对于做iOS开发的人来说,环境是个问题(没有了解过Mac下能否进行.Net开发,即使能,估计也会比较麻烦)。
剩下的几个,Python虽然出道早,在后端开发中也有一席之地。但在国内的大环境下,用来做后端开发的还是Java和PHP占大头,相信移动开发人员所遇到的后端系统,大部分都是这两种语言开发的。

接下来,我将比较PHP和Java各自的特点,以便让大家对为何要选择PHP有一个更清楚的认识。
注意,本文不是教学类的文章,如果你想学习PHP或Java Web开发,想学习html、javascript、css方面的知识,请自行搜索,网上有许多相关的教程

语言特点

以下是用两种语言输出当前日期,可以对比,看出一些端倪
PHP代码:

<?php
echo '<h1>当前日期:'.date('Y-m-d H:i:s').'</h1>';

Java代码:

import javax.servlet.http.HttpServlet;
import java.io.IOException;
import java.io.PrintWriter;

public class FirstServlet extends HttpServlet {
    protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter pw = response.getWriter();
        pw.write("<h1>当前日期:" + (new Date()) + "</h1>");
    }
}

可以看到,Java代码比较冗长,必须定义一个Servlet类,在对应的方法中去输出日期。而PHP则简洁许多,可以使用过程式写法,不用定义类,即可直接输出信息。

环境配置

IDE

编译

路由

<servlet>
    <servlet-name>BookListServlet</servlet-name>
    <servlet-class>javademo.BookListServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>BookListServlet</servlet-name>
    <url-pattern>/book</url-pattern>
</servlet-mapping>

以上是配置/book这个url由javademo.BookListServlet这个Servlet类来处理

运行方式

可以看一下两者读取数据库数据的代码:

PHP代码:

<?php
$mysqli = new mysqli('localhost', 'root', '', 'test');
$resultPicks = $mysqli->query('SELECT * FROM t_book');
$books = [];
while ($picksRow = $resultPicks->fetch_array(MYSQLI_ASSOC)) {
    $books[] = $picksRow;
}
include 'book_list.html';

Java代码:

public class BookListServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Connection connection = null;
        List<Book> bookList = new ArrayList<>();

        try {
            Class.forName("com.mysql.jdbc.Driver");
            String url = "jdbc:mysql://localhost:3306/test?user=root&password=&useUnicode=true&characterEncoding=UTF8";
            connection = DriverManager.getConnection(url);
            Statement stmt = connection.createStatement();
            String sql = "SELECT * FROM book";
            ResultSet rs = stmt.executeQuery(sql);
            while (rs.next()) {
                bookList.add(new Book(rs.getString("id"), rs.getString("name")));
            }
            rs.close();
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        request.setAttribute("bookList", bookList);
        request.getRequestDispatcher("book_list.jsp").forward(request, response);
    }
}

可以看到,Java代码比较冗长,涉及资源释放、异常处理(Java的声明式异常是必须处理的,要么catch,要么直接在方法上再往外throws)。而PHP则简洁许多,资源会自动释放,可以不写释放资源的代码,也不必一定要处理异常

其他

结论

总的来说,PHP比较易学易用,对于学习了解后端开发,或快速开发一些简单的后端系统而言,是一个理想的选择。当然,如果你深入学习,PHP也能胜任复杂系统的开发(但这方面不如Java好)。Java而言,就显得比较“重”,不论是语言本身,还是配置运行,都较为复杂,学习曲线比较长、比较陡。如果只是出于学习了解后端开发的目的,Java不是一种高性价比的选择,除非是想转型做后端开发,否则不建议选择Java。

上一篇 下一篇

猜你喜欢

热点阅读