php写接口入门

了解JSON

JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JSON 独立于语言 JSON 具有自我描述性,更易理解

JSON 是存储和交换文本信息的语法。类似 XML。

JSON 比 XML 更、更,更易解析

格式转化

学习了php的基本语法的你们肯定知道数组Array这个基本数据啦,因为我们前端显示出的数据库数据一般由数组表示的,那么基本数据数组和JSON之间要怎么转换呢?

jsonencode():将基本数据数组转换为json格式 jsondeconde():将json格式转化为基本数据数组格式

ps:从后台返回数据(echo $json)到前台,获得数据时候,一般同学都是选择用eval()函数来进行格式转化,考虑到对项目安全性问题,小编个人建议大家少用,而选择用getJSON()函数。它具有相同的功能,而且安全性要强一些。

常见的json格式:

json四原则:

“:”:数据在名称/值对中 “,”:数据由逗号分隔 “{ }”:花括号保存对象 “[ ]”:方括号保存数组

写php接口

个人写接口的时间不长,从网上资料及视频教程中得出经验:写简单接口,就相当写MVC中的MC,只写逻辑代码层,把功能用函数封装起来,到时候include,直接调用就好了。

php接口知识

(如若手机显示不全,可右滑)
interface Animal{
    public function bite();
}

class Man implements People{
    public function say(){
        echo 'i can say';
    }    

    public function dance(){
        echo 'i can dance';
    }
}

class Woman implements People{
    public function say(){
        echo 'i can say girl voice';
    }    

    public function dance(){
        echo 'i can dance like a goose';
    }
}


class Bird implements Animal{
    public function bite(){
        echo 'i can bite';
    }
}

class Hybreed implements People,Animal{
    public function say(){
        echo 'i can say';
    }

    public function dance(){
        echo 'i can dance';
    }

    public function bite(){
        echo 'i can bite';
    }
}

$hybreed = new Hybreed;
echo $hybreed->say()."\r\n";
echo $hybreed->dance()."\r\n";
echo $hybreed->bite()."\r\n";

接口存在的意义就是实现“多重继承”,准确的来说应该就做“多重实现“,因为一个php类只能有一个父类,而一个类却可以实现多个接口,就像大一学C++时,上面代码interface.php中的Hybreed类,即实现了people接口,又实现了Animal接口,而通过这种多重继承,最终的$hybreed即获得了人类的say和dance的方法,又获得了动物的bite方法。而Man类和Woman类分别实现People的接口,采用不同的内容去重写了say和dance方法,正是一种多态的体现。

登录注册api接口实例

(如若手机显示不全,可右滑)
//数据库连接部分--开始
$mysql_server_name="localhost"; //数据库服务器名称
$mysql_username="root"; // 连接数据库用户名
$mysql_password=""; // 连接数据库密码
$mysql_database="hello"; // 数据库的名字

 // 连接到数据库
$conn=mysql_connect($mysql_server_name, $mysql_username,$mysql_password);
if(!$conn) {
    echo "数据库连接失败!".mysql_error;
}
mysql_select_db($mysql_database, $conn);
//数据库部分--结束

/* 登录、注册、修改个人信息、显示用户接口‘菜单’代码--开始*/

//获取url参数
$action = isset($_POST['action']) ? $_POST['action'] : '';
$name = isset($_POST['name']) ? $_POST['name'] : '';
$psd = isset($_POST['psd']) ? $_POST['psd'] : '';

if($action=='login') {
    login($name, $psd, true);
} else if($action=='register') {
    register($name, $psd);
} else if($action=='modifyPsd') {
    modifyPsd($name, $psd);
} else if($action=='showAll') {
    showAll();
} else {
    $result = array("result"=>"error_request");//返回一个错误提示
    $json = json_encode($result);
    echo $json;

close_conn();
/*‘菜单’代码--结束*/

/*用户登录*/
function login($name, $psd, $normal) {
    global $conn;
    if($conn) {
        $result = mysql_query("select name,psd from student");
        $success = false;
        while($row = mysql_fetch_array($result)) {
            if($name == $row['name'] && $psd == $row['psd']) {
                $success = true;
            }
        }
        if($normal) {
            $login_result = array('login_result'=>$success);
            $json = json_encode($login_result);
            echo $json;
        }
    }
    return $success;
}

/*用户注册*/
function register($name, $psd) {
    $tel = $_POST['tel'];     
    global $conn;

    if($conn) {
        //数据库查询
        $result = mysql_query("select name from student");
        $exist = false;
        while($row = mysql_fetch_array($result)) {
            if($name == $row['name']) {
                //注册失败,用户名已存在;
                $exist = true;
                $register_result = array("register_result"=>false,"error_code"=>0);
                $json = json_encode($register_result);
                echo $json;
            }
        }
        //插入数据库         
        if(!$exist) {
            $id = mysql_num_rows($result) + 1;
            $success = mysql_query("insert into student values('$id', '$name', '$tel', '$psd')");
            if($success) {
                //注册成功
                $register_result = array("register_result"=>$success);
                $json = json_encode($register_result);
                echo $json;
            } else {
                //注册失败,数据库插入错误
                $register_result = array("register_result"=>$success,"error_code"=>1);
                $json = json_encode($register_result);
                echo $json;
            }
        }           
    }
}

/*修改登录密码*/
function modifyPsd($name, $psd) {
    $newpsd = $_POST['newpsd'];
    global $conn;

    if($conn) {
        //用户登录
        $login_result = login($name, $psd, false);
        //修改密码
        if($login_result) {
            $success = mysql_query("update student set psd='$newpsd' where name='$name'");
            if($success) {
                //修改成功
                $modify_result = array("modify_result"=>$success);
                $json = json_encode($modify_result);
                echo $json;
            } else {
                //修改失败,数据库错误
                $modify_result = array("modify_result"=>$success,"error_code"=>1);
                $json = json_encode($modify_result);
                echo $json;
            }
        } else {
                //修改失败,登录失败
                $modify_result = array("modify_result"=>false,"error_code"=>2);
                $json = json_encode($modify_result);
                echo $json;
        }
    }
}

//显示所有用户
function showAll() {
    global $conn;
    if($conn) {
        $result = mysql_query("select * from student");
        $success = false;
        $array_data = array();

        $total = mysql_num_rows($result);
        //$data = array("total"=>$total,"datas"=>array(array("data"=>"123","name"=>"zhugeheng"),
        //                                                                                   array("data"=>"456","name"=>"zhaodanni")
        //                                                                      ));                                         
        while($row = mysql_fetch_array($result)) {
            $array_temp = array("name"=>$row['name'], "tel"=>$row['tel']);
            array_push($array_data, $array_temp);
        }
        $data = array("total"=>$total,"datas"=>$array_data, "result"=>true);         
        $json = json_encode($data);
        echo $json;

    }
}

//关闭连接
function close_conn() {
    global $conn;
    mysql_close($conn);
}
  尊重原创,转载请注明出处:[http://blog.csdn.net/zhugehengheng/article/details/44645287](http://blog.csdn.net/zhugehengheng/article/details/44645287)

在这里,小编在原作者的基础上对代码进行了部分注释,希望对大家的学习有所帮助,也希望有写接口经验的大牛们加我微信(wzc88czw)交流学习心得。

原文发布于微信公众号 - 程序员的碎碎念(gh_53e607dd4782)

原文发表时间:2018-01-09

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java技术学习之道

Java线程面试题合集(含答案)

23040
来自专栏企鹅号快讯

一文学会Python协程

Python圣诞学习狂欢夜 距离开始还有3天 . . . 详情 . . . 生成器和协程的介绍 生成器(Generator)的本质和特点 生成器 是 可以生成一...

324100
来自专栏Vamei实验室

Linux从程序到进程

计算机如何执行进程呢?这是计算机运行的核心问题。即使已经编写好程序,但程序是死的。只有活的进程才能产出。我们已经从Linux进程基础中了解了进程。现在我们看一下...

22990
来自专栏IT可乐

Java IO详解(二)------流的分类

一、根据流向分为输入流和输出流:   注意输入流和输出流是相对于程序而言的。   输出:把程序(内存)中的内容输出到磁盘、光盘等存储设备中 ?      输入:...

22670
来自专栏Golang语言社区

go语言的官方包sync.Pool的实现原理和适用场景

已经使用golang有一段时间,go的协程和gc垃圾回收特性的确会提高程序的开发效率。但是毕竟是一门新语言,如果对于它的机制不了解,用起来可能会蹦出各种潘多拉盒...

1.2K60
来自专栏欧阳大哥的轮子

深入iOS系统底层之CPU寄存器介绍

计算机是一种数据处理设备,它由CPU和内存以及外部设备组成。CPU负责数据处理,内存负责存储,外部设备负责数据的输入和输出,它们之间通过总线连接在一起。CPU内...

21830
来自专栏编程

java编程思想之并发

编程问题中的相当一大部分都可以通过顺序编程来解决。然而,对于某些问题,如果能够并行的执行程序中的多个部分,则会变得非常方便甚至非常必要,这些部分要么可以并发执行...

21870
来自专栏java一日一条

怎样处理InterruptedException

Java 中的受检查异常 InterruptedException 如何处理是令人头痛的问题,下面是我对处理这个问题的理解。

22020
来自专栏linux驱动个人学习

VFS四大对象之一 struct super_block

linux虚拟文件系统四大对象: 1)超级块(super block) 2)索引节点(inode) 3)目录项(dentry) 4)文件对象(file) 现在先...

464100
来自专栏Flutter入门到实战

Android插件化开发核心类ClassLoader相关详解

最近在研究插件化开发,顺便就了解了 ClassLoader 这个类加载器,顺藤摸瓜,查到了jvm里面的双亲委派模型,这里就简单的讲一下什么是预定义类加载器和双亲...

13430

扫码关注云+社区

领取腾讯云代金券