/** * get pdu object by type * @return Deliver|Submit|Report * @throws Exception */ public static function getPduByType() { // parse type of sms $type = Type::parse(); $self = NULL; switch ($type->getMti()) { case Type::SMS_DELIVER: $self = new Deliver(); break; case Type::SMS_SUBMIT: $self = new Submit(); // get mr $self->setMr(hexdec(PDU::getPduSubstr(2))); break; case Type::SMS_REPORT: $self = new Report(); // get reference $self->setReference(hexdec(PDU::getPduSubstr(2))); break; default: throw new Exception("Unknown sms type"); } // set type $self->setType($type); return $self; }