精华内容
下载资源
问答
  • phalapi

    2019-10-05 03:00:07
    $query = new PhalApi_ModelQuery(); $query->id = $userId; $modelProxy = new ModelProxy_UserBaseInfo(); $rs = $modelProxy->getData($query); */ return $rs ; } } Model/User.php 方法的...

    public为程序入口

    Demo和MyApp为具体的实现

    public为多入口

    demo和myapp都是入口,但是进入后即又为单入口

    list为接口文档,是自动解析程序里的注释自动生成的文档

    框架执行流程

    Public/demo-》Demo/Api-》Demo/Domain-》Demo/Model

     

     

    Api/User.php

    主要是接收传参,以及调用Domain/User.php里的方法(有点像实体类)

    <?php
    
    class Api_User extends PhalApi_Api {
    
        public function getRules() {
            return array(
                'getBaseInfo' => array(
                    'userId' => array('name' => 'user_id', 'type' => 'int', 'min' => 1, 'require' => true, 'desc' => '用户ID'),
                ),
                'getMultiBaseInfo' => array(
                    'userIds' => array('name' => 'user_ids', 'type' => 'array', 'format' => 'explode', 'require' => true, 'desc' => '用户ID,多个以逗号分割'),
                ),
            );
        }
    
        /**
         * 获取用户基本信息
         * @desc 用于获取单个用户基本信息
         * @return int code 操作码,0表示成功, 1表示用户不存在
         * @return object info 用户信息对象
         * @return int info.id 用户ID
         * @return string info.name 用户名字
         * @return string info.note 用户来源
         * @return string msg 提示信息
         */
        public function getBaseInfo() {
            $rs = array('code' => 0, 'msg' => '', 'info' => array());
    
            $domain = new Domain_User();
            $info = $domain->getBaseInfo($this->userId);
    
            if (empty($info)) {
                DI()->logger->debug('user not found', $this->userId);
    
                $rs['code'] = 1;
                $rs['msg'] = T('user not exists');
                return $rs;
            }
    
            $rs['info'] = $info;
    
            return $rs;
        }
    
        /**
         * 批量获取用户基本信息
         * @desc 用于获取多个用户基本信息
         * @return int code 操作码,0表示成功
         * @return array list 用户列表
         * @return int list[].id 用户ID
         * @return string list[].name 用户名字
         * @return string list[].note 用户来源
         * @return string msg 提示信息
         */
        public function getMultiBaseInfo() {
            $rs = array('code' => 0, 'msg' => '', 'list' => array());
    
            $domain = new Domain_User();
            foreach ($this->userIds as $userId) {
                $rs['list'][] = $domain->getBaseInfo($userId);
            }
    
            return $rs;
        }
    }

    Domain/User.php

    主要是方法的抽象实现,不是具体实现,类似于一个服务,这样有利于方法重用

    <?php
    
    class Domain_User {
    
        public function getBaseInfo($userId) {
            $rs = array();
    
            $userId = intval($userId);
            if ($userId <= 0) {
                return $rs;
            }
    
            // 版本1:简单的获取
            $model = new Model_User();
            $rs = $model->getByUserId($userId);
    
            // 版本2:使用单点缓存/多级缓存 (应该移至Model层中)
            /**
            $model = new Model_User();
            $rs = $model->getByUserIdWithCache($userId);
            */
    
            // 版本3:缓存 + 代理
            /**
            $query = new PhalApi_ModelQuery();
            $query->id = $userId;
            $modelProxy = new ModelProxy_UserBaseInfo();
            $rs = $modelProxy->getData($query);
            */
    
            return $rs;
        }
    }

    Model/User.php

    方法的具体实现,最小粒度

    <?php
    
    class Model_User extends PhalApi_Model_NotORM {
    
        public function getByUserId($userId) {
            return $this->getORM()
                ->select('*')
                ->where('id = ?', $userId)
                ->fetch();
        }
    
        public function getByUserIdWithCache($userId) {
            $key = 'userbaseinfo_' . $userId;
            $rs = DI()->cache->get($key);
            if ($rs === NULL) {
                $rs = $this->getByUserId($userId);
                DI()->cache->set($key, $rs, 600);
            }
            return $rs;
        }
    
        /**
        protected function getTableName($id) {
            return 'user';
        }
        */
    }

    缓存方法

     public function getByUserIdWithCache($userId) {
            $key = 'userbaseinfo_' . $userId;
            $rs = DI()->cache->get($key);
            if ($rs === NULL) {
                $rs = $this->getByUserId($userId);
                DI()->cache->set($key, $rs, 600);
            }
            return $rs;
        }

    如果缓存不存在,执行sql查询

    否则直接返回缓存值

    一个很漂亮的接口文档

     

    转载于:https://www.cnblogs.com/hellowzd/p/6264136.html

    展开全文
  • PhalAPI

    2016-08-31 17:41:00
    基于php的轻量级接口开发框架,一个字。“简单”! 转载于:https://www.cnblogs.com/braveliuever/p/5826938.html

    基于php的轻量级接口开发框架,一个字。“简单”!

    转载于:https://www.cnblogs.com/braveliuever/p/5826938.html

    展开全文
  • PhalApi官方开发文件 在线文档网址: : 文件撰写规格 请参考。 欢迎一起来维护PhalApi 2.x文档!直接提交PR即可,我会定时合并,更新和发布。 Nginx本地部署 server { listen 80; server_name docs.phalapi.net;...
  • PhalApi-RabbitMQ基于PhalApi专业队列拓展前言RabbitMQ一直都是队列中的标杆,这次有幸PhalApi也能啃上RabbitMQ真是一件大好事,感谢@牧鱼人提供基于php-amqplib/php-amqplib封装的PhalApi-RabbitMQ扩展关于RabbitMQ...

    PhalApi-RabbitMQ基于PhalApi专业队列拓展

    前言

    RabbitMQ一直都是队列中的标杆,这次有幸PhalApi也能啃上RabbitMQ真是一件大好事,感谢@牧鱼人提供基于php-amqplib/php-amqplib封装的PhalApi-RabbitMQ扩展

    关于RabbitMQ相关的安装集群配置可以参考笔者博客的MQ模块,地址如下
    https://my.oschina.net/wenzhenxi/blog?catalog=5613216&temp=1491640864558

    附上:

    官网地址:http://www.phalapi.net/

    开源中国Git地址:http://git.oschina.net/dogstar/PhalApi/tree/release

    开源中国拓展Git地址:http://git.oschina.net/dogstar/PhalApi-Library

    1.安装

    使用PhalApi-RabbitMQ扩展和使用其他扩展也是一样简单,只需要把目录存放到Library即可进行使用

    在Config中创建文件rabbitmq.php配置文件格式如下:

    return array(
        'servers' => array(
            'host'     => '127.0.0.1',
            'port'     => '5672',
            'user'     => 'admin',
            'password' => 'admin',
            'vhost'    => '/',
        )
    )

    2.使用RabbitMQ写入和处理消息

    然后就可以进行实例化使用了:

    // 实例化RabbitMQ实例
    $rm = RabbitMQ_Lite(DI()->config->get('rabbitmq.servers'));
    
    // 检查test队列是否存在,如果不存在则创建,频繁调用会带来较大性能消耗
    // 建议在出队列脚本处进行调用,写入队列不进行调用
    $rm->queue_declare("test");
    
    // 向队列写入一条消息
    $rm->push("测试消息","test");
    
    // 定义处理消息的方法
    $func = function ($msg){
                echo $msg;
            };
    // 处理任务(会阻塞进行)
    $rm->pop("test",$func);
    

    注:笔者能力有限有说的不对的地方希望大家能够指出,也希望多多交流!

    官网QQ交流群:①群:421032344 ②群:459352221 欢迎大家的加入!

    展开全文
  • PhalApi-PHPExcel基于PhalApi的PHPExcel拓展前言在之前有提供过一个PhalApi-Excel拓展来提供导出,但是还是有一些不方便,比如没有导入,导出文件体积过大此类问题,也是应为自身业务有使用到重新来提供一个PHPExcel的...

    PhalApi-PHPExcel基于PhalApi的PHPExcel拓展

    前言

    在之前有提供过一个PhalApi-Excel拓展来提供导出,但是还是有一些不方便,比如没有导入,导出文件体积过大此类问题,也是应为自身业务有使用到重新来提供一个PHPExcel的拓展
    来提供更为强大的Excel处理功能

    附上:

    官网地址:http://www.phalapi.net/

    开源中国Git地址:http://git.oschina.net/dogstar/PhalApi/tree/release

    开源中国拓展Git地址:http://git.oschina.net/dogstar/PhalApi-Library

    1. 初始化

    和往常一样我们把PHPExcel目录放到Library目录中然后实例化Lite即可

    $PHPExcel = new PHPExcel_Lite();
    

    2. 使用

    PhalApi-PHPExcel提供两个基础封装好的方法分别是exportExcel,importExcel分表接触导出和接受的问题

    exportExcel接受三个参数,data,headArr标题,$filename文件名称下面是一个例子

      $data=array(
            array('username'=>'zhangsan','password'=>"123456"),
            array('username'=>'lisi','password'=>"abcdefg"),
            array('username'=>'wangwu','password'=>"111111"),
        );
    
        $filename    = "test_excel.xlsx";
        $headArr     = array("用户名", "密码");
        $PHPExcel = new PHPExcel_Lite();
        $PHPExcel->exportExcel($filename, $data, $headArr);
    

    PhalApi-PHPExcel可根据导出的文件后缀来导出不同格式的Excel文档

    importExcel接受三个参数,filename,firstRowTitle标题(可选默认从第一行作为标题),$Sheet工作表(默认第一张工作表)

    $rs = $PHPExcel->importExcel("./test.xlsx");
    

    当然PHPExcel是一个强大的工具可以通过$PHPExcel->getPHPExcel();获得完整的PHPExcel实例自由使用

    3. 总结

    希望此拓展能够给大家带来方便以及实用,如有其他童鞋希望能加入其余常用功能可与笔者进行联系!

    注:笔者能力有限有说的不对的地方希望大家能够指出,也希望多多交流!

    官网QQ交流群:421032344 欢迎大家的加入!

    展开全文
  • PhalApi网址

    2019-09-12 18:48:30
    http://www.phalapi.net/ 转载于:https://my.oschina.net/majorD/blog/789572
  • PhalApi视频教程

    2017-11-08 12:54:43
    PhalApi视频教程先在这里感谢以下录制小组的同学,是你们让世界看到PhalApi的视频教程! A西瓜妹子、听风不语、彩色的雨、Catch、喵了个咪、dogstar经过了一个多月的录制基础篇和进阶篇终于结束了,在这里感谢一起...
  • PhalApi-SMS基于PhalApi容联云短信服务器拓展前言在做项目时更换短信运营商时,找到了容联云通讯(滴滴用的是他的服务),感觉很不错看了下SDK文件和测试Demo感觉使用起来并不是很方便, 因为确实很多项目都会用到这一套...
  • Api-phalapi.zip

    2019-09-18 09:37:17
    Api-phalapi.zip,接口,从简单开始!PhalApi简称π框架,一个轻量级PHP开源接口框架,专注于接口服务开发,支持HTTP/SOAP/RPC协议,拥有自动生成的在线文档、多种开发语言的客户端SDK包以及可重用的扩展类库,可用于...
  • phalapi使用

    千次阅读 2016-09-10 13:00:37
    2.打开地址/127.0.0.1/PhalApi/Public/demo/可以看到返回的json; 3.第一个例子,修改conf/dbs.php文件内关于数据库的配置内容,主要修改数据库名与数据库密码;数据库名与后续建表名称一致; 打开myphpadmin...
  • phalapi2-redis!

    2018-04-19 14:42:27
    PhalApi 2.x 扩展类库 - Redis在PHP开发中运用场景已经无处不在,小到简单缓存大到数据库或消息队列都可以使用Redis来进行实现,基于PhalApi2的出世,PhalApi2-Redis也紧接着进行了本次适配来提供更好的开发体验,...
  • 为您提供PhalApi开源接口框架下载,PhalApi简称π框架(派框架),一个轻量级PHP开源接口框架,配套运营管理平台,专注于...PhalApi 更新日志:v2.17.1[主要更新]1、新增API_NAMESPACE,方便在入口指定当前默认的命名空
  • PhalApi-Excel

    2017-11-08 12:55:02
    PhalApi-Excel前言使用PHP导出Excel我们经常用到,也有很多好的拓展比如知名的PHPExcel和PHP-ExcelReader,我们在读取Excel是毋庸置疑使用PHP-ExcelReader是最好的选择,但是在导出的时候 使用PHPExcel颇为复杂,有没有...
  • phalapi查询问题。

    2021-06-17 17:05:23
    刚接触phalapi,已经装好了。 想问问,我自有的mysql数据库,如何查询返回json,并可以分页及指定ID查询、还有签名验证。 已经在dbs.php设置好了数据库相关信息。 希望能贴上所有的代码,及告知放在哪里。
  • PhalApi SOAP扩展. 当需要使用SOAP时,需要在配置PHP时,通过--enable-soap参数开启SOAP。
  • PhalApi学习笔记

    2017-02-24 16:21:23
    这里是自己学习PhalApi的笔记
  • PhalApi 事务操作

    千次阅读 2018-06-06 16:47:17
    \PhalApi\DI()-&gt;notorm-&gt;beginTransaction('db_demo'); // Step 2: 数据库操作 \PhalApi\DI()-&gt;notorm-&gt;user-&gt;insert(array('name' =&gt; 'test1')); ...
  • phalApi_DI::$instance等一些静态变量或者其他的一些问题 如果已经有类似的扩展包,请推荐给我,就不用写了>_<</p><p>该提问来源于开源项目:phalapi/phalapi</p></div>
  • 并添加到<a href="http://git.oschina.net/dogstar/PhalApi-Library">PhalApi-Library吗?方便更多的PhalApi开发同学可以使用。 </li></ul> 在PhalApi中,获取参数,可以使用: <pre><code...
  • phalapi-进阶篇8(PhalApi能带来什么和进阶篇总结)前言先在这里感谢phalapi框架创始人@dogstar,为我们提供了这样一个优秀的开源框架.到今天位置PhalApi已经开源一周年了,他从一个不起眼的小框架,到现在一个在不断迎合...
  • 1.8 PhalApi 单元测试

    2019-09-30 09:54:04
    PhalApi 2.x 单元测试 测试驱动开发与PHPUnit PhalApi推荐使用测试驱动开发最佳实践,并主要使用的是PHPUnit进行单元测试。 PHPUnit官网:https://phpunit.de,如需进行单元测试,请先安装PHPUnit。 以下是在...
  • PhalApi那些事儿

    千次阅读 2016-11-23 11:10:51
    get请求格式:服务器地址//PhalApi/Public/demo/?service=User.GetBaseInfo&/demo/?service=User.GetBaseInfo&user_id=1 返回消息:post请求地址:服务器地址/PhalApi/Public/demo/?service=User.GetBaseInfo&/demo
  • 如何请求接口服务 ...对于PhalApi,默认是...如前面所言,PhalApi推荐将系统对外可访问的根目录设置为/path/to/phalapi/public。PhalApi的统一访问入口文件是/path/to/phalapi/public/index.php文件。 当配置的域名...
  • 基于PhalApi2的Redis拓展

    2017-11-09 15:13:47
    基于PhalApi2的Redis拓展前言Redis在PHP开发中运用场景已经无处不在,小到简单缓存大到数据库或消息队列都可以使用Redis来进行实现,基于PhalApi2的出世,PhalApi2-Redis也紧接着进行了本次适配来提供更好的开发体验,...
  • 最近觉得有一个比价好玩的框架,代码简洁,分层明确,这个框架就是PhalApi框架。这是一个PHP轻量级开源接口框架,主要方便于为移动端写接口。 PhalApi官方网址:www.phalapi.net  开发者@dogstar  框架源码网址:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 393
精华内容 157
关键字:

phalapi