You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
yanzong/vendor/overtrue/easy-sms/src/Message.php

187 lines
3.6 KiB

<?php
/*
* This file is part of the overtrue/easy-sms.
*
* (c) overtrue <i@overtrue.me>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace Overtrue\EasySms;
use Overtrue\EasySms\Contracts\GatewayInterface;
use Overtrue\EasySms\Contracts\MessageInterface;
/**
* Class Message.
*/
class Message implements MessageInterface
{
/**
* @var array
*/
protected $gateways = [];
/**
* @var string
*/
protected $type;
/**
* @var string
*/
protected $content;
/**
* @var string
*/
protected $template;
/**
* @var array
*/
protected $data = [];
/**
* Message constructor.
*
* @param array $attributes
* @param string $type
*/
public function __construct(array $attributes = [], $type = MessageInterface::TEXT_MESSAGE)
{
$this->type = $type;
foreach ($attributes as $property => $value) {
if (property_exists($this, $property)) {
$this->$property = $value;
}
}
}
/**
* Return the message type.
*
* @return string
*/
public function getMessageType()
{
return $this->type;
}
/**
* Return message content.
*
* @param \Overtrue\EasySms\Contracts\GatewayInterface|null $gateway
*
* @return string
*/
public function getContent(GatewayInterface $gateway = null)
{
return is_callable($this->content) ? call_user_func($this->content, $gateway) : $this->content;
}
/**
* Return the template id of message.
*
* @param \Overtrue\EasySms\Contracts\GatewayInterface|null $gateway
*
* @return string
*/
public function getTemplate(GatewayInterface $gateway = null)
{
return is_callable($this->template) ? call_user_func($this->template, $gateway) : $this->template;
}
/**
* @param $type
*
* @return $this
*/
public function setType($type)
{
$this->type = $type;
return $this;
}
/**
* @param mixed $content
*
* @return $this
*/
public function setContent($content)
{
$this->content = $content;
return $this;
}
/**
* @param mixed $template
*
* @return $this
*/
public function setTemplate($template)
{
$this->template = $template;
return $this;
}
/**
* @param \Overtrue\EasySms\Contracts\GatewayInterface|null $gateway
*
* @return array
*/
public function getData(GatewayInterface $gateway = null)
{
return is_callable($this->data) ? call_user_func($this->data, $gateway) : $this->data;
}
/**
* @param array|callable $data
*
* @return $this
*/
public function setData($data)
{
$this->data = $data;
return $this;
}
/**
* @return array
*/
public function getGateways()
{
return $this->gateways;
}
/**
* @param array $gateways
*
* @return $this
*/
public function setGateways(array $gateways)
{
$this->gateways = $gateways;
return $this;
}
/**
* @param $property
*
* @return string
*/
public function __get($property)
{
if (property_exists($this, $property)) {
return $this->$property;
}
}
}