实例
<?php /** * 单例模式:单一实例,一个类仅允许实例化一次 * 例如: * 1、一个站点仅仅创建出一个数据库连接对象就够了 * 2、一个站点仅仅需要一个配置类对象就够了 * */ class Write { private static $instance=null; private $content = []; private function __construct() { } private function __clone() { // TODO: Implement __clone() method. } public static function Instance() { if(self::$instance==null){ self::$instance = new self(); } return self::$instance; } } $instance = Write::Instance(); $instance1 = Write::Instance(); var_dump($instance,$instance1);
运行实例 »
点击 "运行实例" 按钮查看在线实例
实例
<?php /** * 工厂模式 * Class Calculator * */ class Calculator { public static function operation($symbol,array $num=[]) { switch ($symbol){ case '+': return new Add($num[0],$num[1]); break; case '-': return new Sub($num[0],$num[1]); break; case '*': return new Mul($num[0],$num[1]); break; case '/': return new Div($num[0],$num[1]); break; } } } class Add { public $num1; public $num2; public function __construct($num1,$num2) { $this->num1 = $num1; $this->num2 = $num2; } public function result() { return $this->num1+$this->num2; } } class Sub { public $num1; public $num2; public function __construct($num1,$num2) { $this->num1 = $num1; $this->num2 = $num2; } public function result() { return $this->num1-$this->num2; } } class Mul { public $num1; public $num2; public function __construct($num1,$num2) { $this->num1 = $num1; $this->num2 = $num2; } public function result() { return $this->num1*$this->num2; } } class Div { public $num1; public $num2; public function __construct($num1,$num2) { $this->num1 = $num1; $this->num2 = $num2; } public function result() { if($this->num2 != 0){ return $this->num1/$this->num2; }else{ return '除数不得为0'; } } } $obj = Calculator::operation('+',[3,9]); echo $obj->result().'<br>'; $obj = Calculator::operation('-',[55,9]); echo $obj->result().'<br>'; $obj = Calculator::operation('*',[3,2]); echo $obj->result().'<br>'; $obj = Calculator::operation('/',[3,3]); echo $obj->result();
运行实例 »
点击 "运行实例" 按钮查看在线实例
实例
<?php /** * 注册树模式 * Class Demo1 */ class Demo1 { } class Demo2 { } class tree { public static $objs = []; public static function set($index, $obj) { self::$objs[$index] = $obj; } public static function get($index) { return self::$objs[$index]; } public static function del($index) { unset(self::$objs[$index]); } } tree::set('Demo1', new Demo1()); tree::set('Demo2', new Demo2()); var_dump(tree::get('Demo1')); tree::del('Demo1'); var_dump(tree::get('Demo1'));
运行实例 »
点击 "运行实例" 按钮查看在线实例