PHP 设计模式-工厂类

<?php
 
class SmsApi {
 public static function create($smsprovider){
        $sms = null;
        switch ($smsprovider) {
            case 'duanxinwang':
                $sms = new DuanXinWang();
                break;
            case 'baidusms':
                $sms = new BaiduSms();
                break;
        }
 
        return $sms;
    }
}
 
class DuanXinWang {
    public function getsms(){
 
    }
 
}
class BaiduSms {
    public function getsms(){
 
    }
 
}
//使用方法 
$sms = SmsApi::create(C('SMS_PROVIDER'));//此可通过配置读取 短信商 C('SMS_PROVIDER') =duanxinwang
$sms->getsms();

以下为增加版

<?php
 
class SmsApi {
public static function create($smsprovider){
$sms = null;
$sms= new $smsprovider(); //如果使用了命名空间,这里一定要带上
return $sms;
}
}
 
class DuanXinWang {
public function getsms(){
echo 'duanxinwang';
 
}
 
}
class BaiduSms {
public function getsms(){
 
}
 
}
//使用方法
$sms = SmsApi::create('DuanXinWang');//此可通过配置读取 短信商 C('SMS_PROVIDER') =DuanXinWang 
 $sms->getsms();
 
?>
PHP 设计模式-工厂类
标签: