encrypts); if($needEncrypt) { $value = $this->encrypt($value, $name); } parent::setAttr($name, $value, $data); } /** * 获取器 获取数据对象的值 * * @param string $name 名称 * * @throws InvalidArgumentException * * @return mixed */ public function getAttr(string $name) { $value = parent::getAttr($name); $needDecrypt = in_array($name, $this->decrypts); if($needDecrypt) { $value = $this->decrypt($value, $name); } $needBlur = in_array($name, $this->blurs); if($needBlur && $value) { $value = $this->blur($value, $name); } return $value; } /** * 解密 */ protected abstract function decrypt($val, $name); /** * 模糊 */ protected abstract function blur($val, $name); /** * 加密 */ protected abstract function encrypt($val, $name); }