jus*_*dev 1 php oop design-patterns
我构建了一个只有静态方法的类.该类基本上是一个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);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
154 次 |
| 最近记录: |