Skip to content

Instantly share code, notes, and snippets.

@milinmestry
Created July 11, 2018 10:47
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save milinmestry/ff18585a9bb5da3f51ea2f5b592d3c53 to your computer and use it in GitHub Desktop.
Save milinmestry/ff18585a9bb5da3f51ea2f5b592d3c53 to your computer and use it in GitHub Desktop.
Use of Interface, Abstract class and Inheritance example
<?php
namespace classes;
use interfaces\OfferStatusCode as interfaceOSC;
/**
* Abstract class Offers Status Code
*
*
* @see https://stackoverflow.com/questions/41611058/why-does-php-allow-abstract-static-functions
* Luckily, the estimable Nikita Popov has removed the warning from the
* language in PHP 7 as part of PHP RFC: Reclassify E_STRICT notices.
* Ultimately, sanity has prevailed, and once PHP 7 is released we can all
* happily use abstract static without receiving this silly warning.
*
*/
abstract class AbstractOSC implements interfaceOSC {
public static function getMessage($code = null) {
$allMessages = static::getAllMessages();
return isset($allMessages[$code])
? $allMessages[$code]
: self::MSG_STATUS_DEFAULT;
}
abstract static function getAllMessages();
}
/**
* Class for Generic offer status codes
*/
class OfferStatusCode extends AbstractOSC {
public static function getAllMessages() {
return [
self::STATUS_DEFAULT => self::MSG_STATUS_DEFAULT,
self::STATUS_0 => self::MSG_STATUS_0,
self::STATUS_1 => self::MSG_STATUS_1,
self::STATUS_2 => self::MSG_STATUS_2,
self::STATUS_3 => self::MSG_STATUS_3,
self::STATUS_4 => self::MSG_STATUS_4,
self::STATUS_5 => self::MSG_STATUS_5,
self::STATUS_6 => self::MSG_STATUS_6,
self::STATUS_7 => self::MSG_STATUS_7,
self::STATUS_8 => self::MSG_STATUS_8,
self::STATUS_9 => self::MSG_STATUS_9,
self::STATUS_11 => self::MSG_STATUS_11,
];
}
}
/**
* Class for Buyer offer status codes
*/
class BuyerOfferStatusCode extends OfferStatusCode {
public static function getAllMessages() {
$allMessages = parent::getAllMessages();
$allMessages[self::STATUS_0] = self::MSG_STATUS_0 . ' given to seller.';
$allMessages[self::STATUS_1] = self::MSG_STATUS_1 . ' by seller.';
$allMessages[self::STATUS_2] = self::MSG_STATUS_2 . ' by seller.';
$allMessages[self::STATUS_3] = self::MSG_STATUS_3 . ' by you.';
$allMessages[self::STATUS_4] = self::MSG_STATUS_4 . ' received from seller.';
$allMessages[self::STATUS_5] = self::MSG_STATUS_5 . ' given to seller.';
$allMessages[self::STATUS_6] = self::MSG_STATUS_6 . ' by you.';
$allMessages[self::STATUS_8] = self::MSG_STATUS_8 . ' from seller.';
$allMessages[self::STATUS_9] = self::MSG_STATUS_9 . ' from seller, check with Domain Registrar.';
return $allMessages;
}
}
/**
* Class for Seller offer status codes
*/
class SellerOfferStatusCode extends OfferStatusCode {
public static function getAllMessages() {
$allMessages = parent::getAllMessages();
$allMessages[self::STATUS_0] = self::MSG_STATUS_0 . ' received from buyer.';
$allMessages[self::STATUS_1] = self::MSG_STATUS_1 . ' by you.';
$allMessages[self::STATUS_2] = self::MSG_STATUS_2 . ' by you.';
$allMessages[self::STATUS_3] = self::MSG_STATUS_3 . ' by buyer.';
$allMessages[self::STATUS_4] = self::MSG_STATUS_4 . ' given to buyer.';
$allMessages[self::STATUS_5] = self::MSG_STATUS_5 . ' received from buyer.';
$allMessages[self::STATUS_6] = self::MSG_STATUS_6 . ' by buyer.';
$allMessages[self::STATUS_8] = 'Provide authorization code to buyer.';
$allMessages[self::STATUS_9] = self::MSG_STATUS_9 . ' to buyer, awaiting confirmation.';
return $allMessages;
}
}
/**
* Class for System offer status codes
*/
class SystemOfferStatusCode extends OfferStatusCode {
public static function getAllMessages() {
$allMessages = parent::getAllMessages();
$allMessages[self::STATUS_1] = self::MSG_STATUS_1 . ' by seller.';
$allMessages[self::STATUS_2] = self::MSG_STATUS_2 . ' by seller.';
$allMessages[self::STATUS_3] = self::MSG_STATUS_3 . ' by buyer.';
$allMessages[self::STATUS_4] = self::MSG_STATUS_4 . ' from seller.';
$allMessages[self::STATUS_5] = self::MSG_STATUS_5 . ' from buyer.';
$allMessages[self::STATUS_6] = self::MSG_STATUS_6 . ' by buyer.';
$allMessages[self::STATUS_9] = self::MSG_STATUS_9 . ' from seller.';
$allMessages[self::STATUS_11] = 'New offer expired.';
return $allMessages;
}
}
<?php
interface OfferStatusCode {
// Offer Status Codes
const STATUS_DEFAULT = '-1';
const STATUS_0 = '0';
const STATUS_1 = '1';
const STATUS_2 = '2';
const STATUS_3 = '3';
const STATUS_4 = '4';
const STATUS_5 = '5';
const STATUS_6 = '6';
const STATUS_7 = '7';
const STATUS_8 = '8';
const STATUS_9 = '9';
const STATUS_11 = '11';
// Offer Status Messages
const MSG_STATUS_DEFAULT = 'Unknown offer status';
const MSG_STATUS_0 = 'New offer';
const MSG_STATUS_1 = 'Offer accepted';
const MSG_STATUS_2 = 'Offer canceled';
const MSG_STATUS_3 = self::MSG_STATUS_2;
const MSG_STATUS_4 = 'Counter offer';
const MSG_STATUS_5 = self::MSG_STATUS_4;
const MSG_STATUS_6 = self::MSG_STATUS_1;
const MSG_STATUS_7 = 'Awaiting payment confirmation';
const MSG_STATUS_8 = 'Awaiting authorization code';
const MSG_STATUS_9 = 'Domain push';
const MSG_STATUS_11 = 'Offer expired';
public static function getMessage();
public static function getAllMessages();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment