【发布时间】:2017-02-02 08:11:13
【问题描述】:
我建立了一个只有静态方法的类。这个类基本上是一个 URL 构建器,包含 2 个公共静态方法。这些方法调用同一类中的私有方法。
我的问题是:
可以重写这个类来应用设计模式吗?在我看来,它接近立面或装饰!我的方法正确吗?
class UrlBuilder{
/**
* @param Model $model
* @return string
*/
private static function jsonFyModelAttribute(Model $model){
return json_encode($model->attributes);
}
private static function objectFy(array $json){
return json_decode($json['payload']);
}
/**
* @param $str
* @return string
*/
private static function buildFormUrl($str){
$slug = self::encodeUrl($str);
return $url = Yii::$app->params['formsUrl'].'pay?pay=' . $slug;
}
/**
* @param Model $model
* @return string
*/
public static function sign(Model $model){
$jws = new SimpleJWS([ 'alg' => 'RS256']);
$payLoad = self::jsonFyModelAttribute($model);
$jws->setPayload([
'payload' => $payLoad
]);
$privateKey = openssl_pkey_get_private("file:///var/pems/mykey.pem");
$jws->sign($privateKey);
return self::buildFormUrl($jws->getTokenString());
}
/**
* @param $str
* @return array
*/
public static function unSign($str){
$data = self::decodeUrl($str);
$jws= SimpleJWS::load($data);
$publicKey = openssl_pkey_get_public("file:///var/pems/pubkey.pem");
if ($jws->isValid($publicKey, 'RS256')) {
return self::objectFy($jws->getPayload());
}
}
/**
* @param $str
* @return string
*/
private static function encodeUrl($str){
return urlencode($str);
}
/**
* @param $str
* @return string
*/
private static function decodeUrl($str){
return urldecode($str);
}
}
【问题讨论】:
-
伙计,我不希望重写任何东西:),我问:这段代码接近哪种设计模式?谁说“重写”?
标签: php oop design-patterns