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()函数检测不可访问的属性或者不存在的属性时自动调用。
扫描二维码关注公众号,回复:
2586294 查看本文章
__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同理
?>