Blogger Information
Blog 49
fans 0
comment 1
visits 46703
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
__construct()构造函数__get()和__set()魔术方法-----2018年05月02日
失去过去的博客
Original
1000 people have browsed it

1、类文件

<?php
class Phone
{
	//创建私有属性 private public 公共的 protected 受保护的 var不推荐使用了已经淘汰
	private $name='';
	private $price=0;
	private $model='';
	private $data=[];
	//魔术方法__construct()该方法是构造方法就是能在对象实例化的时候直接自动调用
	//并且一个标准的类中只能有一个构造方法
	//一个方法中只能用一个return 否则会警告return 过多
	public function __construct($name,$price,$model){
//		初始化构造方法的成员属性
		$this->name = $name;
		$this ->price = $price;
		$this->model = $model;

	}
	public function sale(){
		
		$msg =  '手机名称:'.$this->name.'<br>型号是:'.$this->model.'<br>价格是:'.$this->price;
	
		return $msg;
	}
	//__get()魔术方法 该方法是获取当前属性是私有属性当值 该方法在同一个类中不能重复只能设置一个
	public function __get($name){
	$msg = '非法操作';
	switch ($name) {
		case 'name':
			$msg = $this->name;
			break;
		case 'price':
			$msg = $this->price;
			break;
		case 'model':
			$msg = $this->model;
			break;	
		case 'data':
			$msg = $this->data;
			break;
		default:
			$msg='属性不存在';
			break;	
	}
	return $msg;
	}
//魔术方法__set() 该方法是用于设置属性值的魔术方法 类外部创建对象赋值的时候对私有属性的赋值
//该方法有两个参数 参数1是属性名称,参数2是属性值
public function __set($name,$value){
	//直接设置属性
//$this->$name=$value;
//判断是否存在该属性如果不存在则保存到数组中
if (isset($this->$name)) {
 $this->$name=$value;
	
} else {
	//不存在则存放在这个数组中
	$this->data[$name]=$value;
}



}
	
	
}




?>

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例化demo.php

<?php
//加载文件
require 'Phone.php';
//创建一个对象 当对象创建成功后就会自动执行后构造方法 该方法不能手动调用
 $phone = new Phone('三星',4320,'i900');
   echo $phone->sale();
 echo '<hr>';
 //魔术方法__get()测试
   echo $phone->name;
 echo '<hr>';
 
   echo $phone->price;
  echo '<hr>';
   
   echo $phone->model;
 //魔术方法__set()
echo $phone->name='奶茶妹妹';
echo $phone->model='y2638';
echo $phone->price=3222;
 $phone->luo='ding';
 $phone->apple=true;
 $phone->orange=123;
 $phone->mac='231';
 var_dump($phone->data);

?>

运行实例 »

点击 "运行实例" 按钮查看在线实例

QQ20180503-101456.png

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post