Created
July 11, 2018 10:47
-
-
Save milinmestry/ff18585a9bb5da3f51ea2f5b592d3c53 to your computer and use it in GitHub Desktop.
Use of Interface, Abstract class and Inheritance example
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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; | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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