Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

LycheeCode/Message

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
13 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lychee\Message

简介

Lychee\Message 是微信公众号消息模型类,它能解析和构建微信公众号消息数据,你可以使用它进行微信公众号被动消息的开发和调试。

安装

composer require lychee/message

简单使用

从 XML 数据载入

<?php
use Lychee\Message\Text;

$xml = "<xml><ToUserName><![CDATA[username]]></ToUserName><FromUserName><![CDATA[openid]]></FromUserName><CreateTime>1529939743</CreateTime><MsgType><![CDATA[text]]></MsgType><MsgId>201806252315439427</MsgId><Content><![CDATA[Hello world]]></Content></xml>";

$msg = new Text($xml);

var_dump($msg);
// object(Lychee\Message\Text)#2 (6) {
//   ["MsgType":protected]=>
//   string(4) "text"
//   ["ToUserName":protected]=>
//   string(8) "username"
//   ["FromUserName":protected]=>
//   string(6) "openid"
//   ["CreateTime":protected]=>
//   string(10) "1529939743"
//   ["MsgId":protected]=>
//   string(18) "201806252315439427"
//   ["properties":protected]=>
//   array(1) {
//    ["Content"]=>
//    string(11) "Hello world"
//   }
// }

如果你不知道 xml 中的 MsgType 是何值(例如你的程序接收到来自微信的数据时),可以使用 Auto 类来帮你加载和解析:

<?php
use Lychee\Message\Auto;

$xml = "<xml><ToUserName><![CDATA[username]]></ToUserName><FromUserName><![CDATA[openid]]></FromUserName><CreateTime>1529939743</CreateTime><MsgType><![CDATA[text]]></MsgType><MsgId>201806252315439427</MsgId><Content><![CDATA[Hello world]]></Content></xml>";

$msg = Auto::init($xml);

var_dump(get_class($msg));
// string(19) "Lychee\Message\Text"

构建新消息

<?php
use Lychee\Message\Text;

$msg = new Text;

// 然后可以通过 set 开头的方法设置属性:
$msg->setToUserName("username")
    ->setFromUserName("openid")
    ->setCreateTime(time())
    ->setMsgId(date("YmdHis" . mt_rand(1000,9999)))
    ->setContent("Hello world");

var_dump($msg->toXML());
// string(248) "<xml><ToUserName><![CDATA[username]]></ToUserName><FromUserName><![CDATA[openid]]></FromUserName><CreateTime>1529939797</CreateTime><MsgType><![CDATA[text]]></MsgType><MsgId>201806252316377977</MsgId><Content><![CDATA[Hello world]]></Content></xml>"

访问消息数据

访问消息数据时,可以像公开属性一样直接访问,属性名与 xml 结构中的标签一样,例如

echo $msg->ToUserName;
// username

echo $msg->Content;
// Hello world

生成 xml 字符串和数组

通过 toXML()toArray() 方法可以生成 xml 字符串或消息数组:

<?php
use Lychee\Message\Text;

$msg = new Text;
$msg->setToUserName("username")
    ->setFromUserName("openid")
    ->setCreateTime(time())
    ->setMsgId(date("YmdHis" . mt_rand(1000,9999)))
    ->setContent("Hello world");

var_dump($msg->toXML());
// string(248) "<xml><ToUserName><![CDATA[username]]></ToUserName><FromUserName><![CDATA[openid]]></FromUserName><CreateTime>1529941287</CreateTime><MsgType><![CDATA[text]]></MsgType><MsgId>201806252341275858</MsgId><Content><![CDATA[Hello world]]></Content></xml>"

var_dump($msg->toArray());
// array(6) {
//   ["MsgType"]=>
//   string(4) "text"
//   ["FromUserName"]=>
//   string(6) "openid"
//   ["ToUserName"]=>
//   string(8) "username"
//   ["CreateTime"]=>
//   int(1529941287)
//   ["MsgId"]=>
//   int(201806252341275858)
//   ["Content"]=>
//   string(11) "Hello world"
// }

About

Wechat message data object model

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.