【PHP-04】

1、类的定义

<?php
	class text1{ //类的定义
		public $name = "php";  //类里面是有属性和方法的
		public $age = 18;     //public 为访问修饰符
		public function fun1(){  //定义方法
			echo "hello";
		}
	}
	$p = new text1();
	echo $p->name; //php
	echo $p->fun1(); //hello
?>

2、访问修饰符

<?php
	//public 公共的、默认
	//protected 受保护的
	//private 私有的
	class text{
		public $name = "php";
		protected $age = 3;
		public function fun1(){
			echo $this->age; //在类中访问自己的属性用this关键字
		}
	}
	$p = new text();
	echo $p->name; //php
	echo $p->age; //受保护的外部不能访问,会报错,atal error: Cannot access protected property text
	$p->fun1(); //3
?>

3、构造函数和析构函数

构造函数是new对象的时候被调用。

析构函数不能带参数、会在对象的所有引用被删除或者显示的消失之前调用,常用于数据库链接。

<?php
	//php5.5之前定义构造函数与类名相同即可
	class text{
		public $name;
		public $age;
		public function text(){ //方法名与类名相同
			echo "aaaaa";
		}
	}
	$p = new text(); //输出aaaaa
	
	//php5.5之后用__construct()进行构造函数
	class text1{
		public $name;
		public $age;
		public function __construct(){
			echo "bbbbb";
		}
	}
	$p1 = new text1(); //输出bbbbb
	
	//用构造函数初始化传参
	class text2{
		public $name;
		public $age;
		public function __construct($name,$age){ //在构造函数中进行传参
			$this->name = $name;
			$this->age = $age;
		}
		//析构函数,在程序
		public function __destruct(){ //定义析构函数,在销毁资源、释放结果集、关闭链接时自动触发
			echo "111111";
		}
	}
	$p2 = new text2("php",18); //输出bbbbb
	echo $p2->name; //php
	echo $p2->age; //18
	$p2 = null; //输出11111 
?>

4、set和get魔术方法使用

set对外界提供设置成员属性的方法。

get对外界提供访问成员属性的方法。

魔术常量:__set    __get

<?php
	class text{
		private $name;  //定义一个私有属性,外界不能直接访问,故需通过set和get间接设置
		public function setName($name){
			$this->name = $name;
		}
		public function getName(){
			return $this->name;
		}
	}
	$p = new text();
	$p->setName("php");
	echo $p->getName(); //输出php 故通过自定义方法达到修改私有属性
	
	//魔术常量set和get的用法
	class text1{
		private $age; 
		private $name;
		public function __set($key,$value){  //有两个参数,第一个参数指要设置的哪个私有属性,第二个是指设置的值
			$this->$key = $value;
		}
		public function __get($key){
			return $this->$key;
		}
	}
	$p1 = new text1();
	$p1->__set("name","hello");
	echo $p1->__get("name"); //输出hello
?>

5、Isset和Unset魔术方法解析

__isset:当外部调用isset()函数检测不可访问的属性或者不存在的属性时自动调用。

__unset:当在类外部调用unset销毁不可访问属性时自动调用。

<?php
	class text{
		private $name;
		public $age;
		public function __isset($name){
			echo "11111";
		}
		public function __unset($name){
			echo "2222";
		}
	}
	$p = new text();
	var_dump(isset($p->age)); //bool(false)   age变量本来就是公共的,故触发__isset()函数
	var_dump(isset($p->name)); //11111bool(false)   name变量为私有的,当外界用isset()函数检测私有属性时会触发__isset()方法
	unset($p->name); //2222   __unset同理
?>

猜你喜欢

转载自blog.csdn.net/a15803617402/article/details/81192883
04