当声明属性的时候用到了private,那么的话只能本类中才能访问此属性,其他地方无法使用,这个时候需要给外界提供一些方法来使外界访问

方法一:存取器:

可以提供一个public的方法来使外界对类里面的属性进行访问和赋值

class Student
{
private $name;
private $age;
public function show(){
echo "{$this->name}今年{$this->age}岁了";
}
/*****存取器:get,set******/
/****提供set方法给外界赋值***/
public function setName($name){
$this->name=$name;
}
public function setAge($age){
if($age<0){
$this->age = "18";
}else{
$this->age=$age;
}
} /******提供get方法给外界取值**********/
public function getName(){
return $this->name;
}
public function getAge(){
return $this->age;
}
}

 实例化的代码:

$stu = new Student();
/*****不能直接访问,需要用类里面的set,get方法来访问******/
$stu->setName("房明");
echo $stu->getName(); $stu->setAge(-18);
echo $stu->getAge(); $stu->show();

  

方法二:魔术方法进行访问

在php中文诶我们提供了许多的魔术方法,在这里我们只要是某某一个魔术方法就可以完成我们想要的效果

*__set():赋值
* __get():取值
* __isset():是否有这个属性
* __unset():销毁某个属性 代码如下:
class User
{
private $name;
private $age; /*****__set():赋值****/
function __set($name,$value)
{
if($name == "age"){
if($value <18){
$this->age = 18;
}else{
$this->age = $value;
}
}else{
$this->$name = $value;
}
} /****__get():取值***/
function __get($name)
{
if($name == "name"){
return "dog";
}else{
return $this->$name;
}
} /***** __isset():是否有这个属性****/
//当当前属性被isset()或者empty(),即当某个属性被检验空的方法调用的时候,会触发这个方法
function __isset($name)
{
echo "{$name}isset被调用了";
} /*******__unset():销毁某个属性******/
//
function __unset($name)
{
echo "{$name}被销毁了"; //防止被销毁的时候直接写一个return即可;
} public function show(){
echo "{$this->name}今年{$this->age}岁了";
}
}

  魔术方法进行访问:

$user = new User();
$user->name = "房明";
$user->age = 10;
echo $user->name; echo $user->age; $user->show(); isset($user->name); unset($user->name);

  

最新文章

  1. UnrealScript语言基础
  2. Mvc4中使用Spring.Net实现IOC和DI
  3. 超链接实现post方式提交
  4. [学习笔记]tarjan求割边
  5. 流行趋势:25款很酷的长阴影效果 LOGO 设计
  6. 推些C语言与算法书籍
  7. MFC一个令人纠心的错误
  8. JAVA多态学习3
  9. SQL中EXISTS的用法(转)
  10. 浅谈 zookeeper 原理,安装和配置
  11. [Linux] Vim 撤销 回退 操作
  12. python中List append()、extend()和insert()的区别
  13. Linux常用命令——关机重启命令
  14. Windows下安装Python虚拟环境
  15. elk之查询方式(4种)
  16. getchar(),scanf(),gets(),cin,输入字符串
  17. Codeforces 781C Underground Lab 构造
  18. Git——常用场景解析
  19. OpenCV不同类型Mat的at方法访问元素时该如何确定模板函数的typename(转)
  20. 计数dp

热门文章

  1. matlab与MFC
  2. 一款html5和css3实现的小机器人走路动画
  3. ucenter通信失败和不能登录的解决
  4. 利用jdbc连接池(利用jdni)
  5. Quartz 一个JOB 配置多个Trigger时注意的问题
  6. Tomcat性能优化之(一) 启动GZIP压缩
  7. 测试markdown编辑器
  8. Restful --- 让JSON回归单纯
  9. warning LNK4099: PDB 原因及解决方案
  10. selenium测试(Java)--操作cookie(十七)