Adapter_Factory - PHP Online
Form of PHP Sandbox
Enter Your PHP code here for testing/debugging in the Online PHP Sandbox. As in the usual PHP files, you can also add HTML, but do not forget to add the tag <?php
in the places where the PHP script should be executed.
Result of php executing
Full code of Adapter_Factory.php
- <?php
- # Sms Services of different carriers
- interface ISmsSender
- {
- }
- class KsSmsSender implements ISmsSender
- {
- public function sendMessage()
- {
- echo "Default KS SMS sended!" . PHP_EOL;
- }
- }
- class VfSmsSender implements ISmsSender
- {
- public function sendSms()
- {
- echo "Default VF SMS sended!" . PHP_EOL;
- }
- }
- # Adapters for carriers SMS services
- interface ISmsSenderAdapter
- {
- public function send();
- }
- class VfSmsSenderAdapter implements ISmsSenderAdapter
- {
- private $vfSmsSender;
- public function __construct()
- {
- $this->vfSmsSender = new VfSmsSender();
- }
- public function send()
- {
- $this->vfSmsSender->sendSms();
- }
- }
- class KsSmsSenderAdapter implements ISmsSenderAdapter
- {
- private $ksSmsSender;
- public function __construct()
- {
- $this->ksSmsSender = new KsSmsSender();
- }
- public function send()
- {
- $this->ksSmsSender->sendMessage();
- }
- }
- # Adpters factory
- class SmsSenderAdapterFactory
- {
- const VF_TYPE = 'vodafone';
- const KS_TYPE = 'kyivstar';
- public static function create(string $type)
- {
- switch ($type)
- {
- case self::VF_TYPE:
- return new VfSmsSenderAdapter();
- break;
- case self::KS_TYPE:
- return new KsSmsSenderAdapter();
- break;
- }
- }
- }
- # Application main class
- class App
- {
- private static $smsSenderAdapter;
- public static function run(ISmsSenderAdapter $smsSenderAdapter)
- {
- self::$smsSenderAdapter = $smsSenderAdapter;
- echo "App started!" . PHP_EOL;
- self::$smsSenderAdapter->send();
- echo "App finished its work!" . PHP_EOL;
- }
- }
- # Client code
- $smsSenderType = "vodafone";
- $smsSender = SmsSenderAdapterFactory::create($smsSenderType);
- App::run($smsSender);
File Description
- Adapter_Factory
- PHP Code
- 24 Jan-2020
- 1.89 Kb
You can Share it:
Latest PHP Pastes