doulao2916 2015-05-11 20:40
浏览 42

如何在PHP类中“隐藏”私有变量

I might not have a good understanding of this, but since the "username" variable is private. Shouldn't this not be a part of the return? How do I make it so the $username is private and not outputed, but the public member is?

class MyClass 
{
    private $username = "api";


    public function create_issue()
    {
        $this->public = "Joe";
        return $this;
    }

}

$test = new MyClass();
$test->create_issue();

var_dump($test);

class MyClass#1 (2) {
  private $username =>
  string(3) "api"
  public $public =>
  string(3) "Joe"
}
  • 写回答

2条回答 默认 最新

  • douweinu8562 2015-05-11 20:46
    关注

    Note: Don't ever use var_dump to render your class unless it's for debugging purposes.

    Even though this is not the intent of private scope, interestingly enough, you can use echo json_encode($object); and the private variables within the class will not be outputted. You can then safely use this JSON in your API.

    class MyClass 
    {
        private $username = "api";
    
    
        public function create_issue()
        {
            $this->public = "Joe";
            return $this;
        }
    
    }
    
    $test = new MyClass();
    $test->create_issue();
    
    echo json_encode($test); // prints {"public":"Joe"}
    

    Read up more on proper private/protected/public usage here

    评论

报告相同问题?

悬赏问题

  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100