当前位置: 源码素材网 » PHP教程 » 详情页

PHP封装一个类的方法和代码示例

  •   时间:2019-08-06
  • 概述:面象对象

PHP封装一个类的方法和代码示例,封装一个“人物”类对象,通过这个对象的自定义,你或许会明白面向对象是怎么一回事:

<?php
class Person  {
	private $name;//此属性被封装
	private $sex;//此属性被封装
	private $age;//此属性被封装
	function __construct($name="", $sex="男", $age=1) {
		$this->name = $name;
		$this->sex = $sex;
		$this->age = $age;
	}
	/**
		当在对象外面使用isset()测定私用成员属性时,自动调用,并在内部测定扣传给外部的isset()结果
		@param	string	$propertyName成员属性名
		@return	boolean	返回isset()查询成员属性的真假结果
	*/
	private function __isset($propertyName) {//需要一个参数,是测定的私有属性的名称
		if($propertyName == "name") //如果参数中传入的属性名等于“name”时条件成立
			return false;//返回假,不允许在对象外部测定这个属性
		return isset($this->$propertyName);//其他的属性都可以被测定,并返回测定的结果
  		}
	/**
		当在对象外面使用unset()方法删除私用属性时,自动被调用,并在内部把私用的成员属性删除
		@param	string	$propertyName	成员属性名
	*/
  		private function __unset($propertyName) {//需要一个参数,是要删除的私有属性名称
		if($propertyName == "name")  //如果参数中传入的属性名等于“name”时条件成立
			return; //退出方法,不允许删除对象中的name属性
		unset($this->$propertyName); //在对象的内部删除在对象外指定的私有属性
	}
	public function say() {
		echo "我的名字:".$this->name.",性别:".$this->sex.",年龄:".$this->age."。<br>";
	}
}
$person1 = new Person("张三", "男", 40); //创建一个对象$person1,将成员属性分别赋上初值
var_dump( isset( $person1->name ) );//输出bool(false),不允许测定name属性
var_dump( isset( $person1->sex ) );//输出bool(true),存在sex私有属性
var_dump( isset( $person1->age ) );//输出bool(true),对象中存在age私有属性
var_dump( isset( $person1->id ) );//输出bool(false),测定对象中不存在id属性
unset( $person1->name );//删除私有属性name,但在__unset()中不允许删除
unset( $person1->sex ); //删除对象中的私有属性sex,删除成功
unset( $person1->age );//删除对象中的私有属性age,删除成功
$person1->say();//对象中的sex和age属性被删除,输出:我的名字叫:张三,性别:,我的年龄是:
?>

    相关声明:

      若“PHP封装一个类的方法和代码示例”有损您的权益,请告之我们删除内容。
      部分文章来源于网络,版权归原作者所有。