类与对象的一些思考 (一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/youcijibi/article/details/87861183
<?php
echo '<pre />';

class Test
{
public $name;
public $email;
public $content;
// public $gender = '男';
private $gender = '男';

public function __set($name, $value)
{
if (!in_array($name,['男','女'])) {
return; //不符合预期的值不允许进行赋值
}
$this->$name = $value;
}

public function __get($name)
{
return $this->$name = '123';
}

public function SayGender()
{
//性别应是从数据库取出或给的默认值,但gender的可见性是public,这就表示它允许被外部客户端修改,这无疑破坏了类的封装性,并且给程序带来安全隐患,比如sql注入等
//所以gender属性应被设置为private或者至少为protected,只允许类或者子类修改,如果需要被外部所修改那么应该使用__set这个魔术方法并在魔术方法内部做好判断处理以备所设置的值符合预期
echo '我的性别是' . $this->gender;
}
}

$t = new Test();
$t->gender = '未知';
$t->sayGender();

猜你喜欢

转载自blog.csdn.net/youcijibi/article/details/87861183