<?php
/**
*PHP面向对象:封装--魔术方法__set()
*魔术方法的方法名、参数列表、作用、返回值都是在PHP中规定好的,使用时只需编辑方法体重的内容即可。
*/
class Person{
// 使用private关键字修饰就实现了对成员的封装
private $name;
private $sex;
// 构造函数
function __construct($name="匿名",$sex="男"){
$this->name=$name;
$this->sex=$sex;
}
// 魔术方法(需要两个参数:成员属性名,属性值)
public function __set($propertyName,$propertyValue){
if($propertyName=="sex"){
if(!$propertyName=="男"||$propertyName
=="女"){
// 如果非法参数,返回空,结束方法执行
return;
}
}
// 更参数属性为其复制
$this->$propertyName=$propertyValue;
}
public function say(){
echo $this->name."说:我的性别是".$this->sex;
echo "<br/>";
}
}
$per=new Person("小明");
$per->say();
// 下列赋值时会自动调用__set()方法
$per->name="小小小明";
$per->sex="女";
$per->say();
/**
*PHP面向对象:封装--魔术方法__set()
*魔术方法的方法名、参数列表、作用、返回值都是在PHP中规定好的,使用时只需编辑方法体重的内容即可。
*/
class Person{
// 使用private关键字修饰就实现了对成员的封装
private $name;
private $sex;
// 构造函数
function __construct($name="匿名",$sex="男"){
$this->name=$name;
$this->sex=$sex;
}
// 魔术方法(需要两个参数:成员属性名,属性值)
public function __set($propertyName,$propertyValue){
if($propertyName=="sex"){
if(!$propertyName=="男"||$propertyName
=="女"){
// 如果非法参数,返回空,结束方法执行
return;
}
}
// 更参数属性为其复制
$this->$propertyName=$propertyValue;
}
public function say(){
echo $this->name."说:我的性别是".$this->sex;
echo "<br/>";
}
}
$per=new Person("小明");
$per->say();
// 下列赋值时会自动调用__set()方法
$per->name="小小小明";
$per->sex="女";
$per->say();