封装记录
重构动机
记录型结构(例如{start:1, end:5})是多数编程提供的一种常见特性。它们能直观地组织起存在关联的数据,将数据作为单元传递,而不是一堆数据的拼凑。但是如果记录中存在可变的数据,我们可以将其封装到对象,并为可变数据提供对应的方法。
重构前
下面代码实现的功能:对姓名与手机号码的敏感信息替换成“*”
<?php
namespace app\controller;
class Test
{
    /**
     * @var null 记录型数据
     */
    public $organization = null;
    /**
     * 对姓名与手机号码做处理
     */
    public function index ()
    {
        $name               = mb_substr($_REQUEST['name'],0,1) . "**";
        $mobile_num         = substr_replace($_REQUEST['mobile_num'],'********',3);
        $this->organization = ['name' => $name, 'mobile_num' => $mobile_num];
        var_export($this->organization);
    }
}
重构后
将name 和 mobile_num 提取到类中,并为其获取提供方法。
<?php
namespace app\controller;
/**
 * Class Person
 * 将可变数据归到类中,并为其获取提供方法。
 * 
 * @package app\controller
 */
class Person
{
    private $name;
    private $mobile_num;
    public function __construct ($name, $mobile_num)
    {
        $this->name       = $name;
        $this->mobile_num = $mobile_num;
    }
    public function getName ()
    {
        return mb_substr($_REQUEST['name'], 0, 1) . "**";
    }
    public function getMobileNum ()
    {
        return substr_replace($_REQUEST['mobile_num'], '********', 3);
    }
}
<?php
namespace app\controller;
class Test
{
    /**
     * 记录型数据
     *
     * @var null
     */
    public $organization = null;
    /**
     * 对姓名与手机号码做处理
     */
    public function index ()
    {
        $person     = new Person($_REQUEST['name'], $_REQUEST['mobile_num']);
        $name       = $person->getName();
        $mobile_num = $person->getMobileNum();
        $this->organization = ['name' => $name, 'mobile_num' => $mobile_num];
        var_export($this->organization);
    }
}
                    
                    
                    
                
          
重构 改善既有代码的设计—笔记
            
            
                关于 LearnKu
              
                    
                    
                    
 
推荐文章: