Day21 类别与物件--魔术方法construct and deconstruct

类是通过class关键字来定义的,是对某个物件的定义,包含有关物件名称、方法、属性和事件,不过实际上类本身并不是物件,因为类不存在於内存中。
如果想引用类的代码运行,那需要创建类的一个新的实例(实例化),就等於在内存中创建了一个类,虽然只有一个类,但能从这个类在内存中创建多个相同类型的物件。

现在就直接开一个例子吧~~~
在这边我写了一个MysqlClass的类,写法上一章有介绍过,这边有属性与方法,写了注解让大家更好的了解,并实例化这个类,把它变成可以访问的!

<?php
class MysqlClass
{
	//成员属性
	const DB_HOST = 'localhost';
	const DB_USER = 'root';
	const DB_PWD = 'abcd';
	const DB_NAME = 'Winnie';
	//成员方法
	function text_Const()
	{
		//类中访问常量
		echo MysqlClass::DB_HOST;
		echo self::DB_NAME;
		echo self::DB_PWD;
	}
}
//在类的外部访问
echo MysqlClass::DB_HOST;
echo MysqlClass::DB_USER;

//在类的内部访问
$inv = new MysqlClass;
$inv ->text_Const();

物件的生成和使用方法

  • 一般情况下,类是无法直接使用的,需要将类实例化物件之後才可以使用。

  • 实例化物件的方法

    • 物件变量 = new 类名;
    • 物件变量 = new 类名();
  • 使用物件中的成员属性

    • 物件变量->成员属性名
  • 使用物件中的成员方法

    • 物件变量->成员方法名()
  • $this关键字

    • $this 表示当前的物件
    • 作用:在当前物件的成员方法中,调用当前物件中的成员属性。
    • 类必须实例化才能使用$this

物件导向的魔术方法及特性

构造方法及析构方法
  • 魔术方法(Magic methods):
    是一种特殊的函数,PHP中把以两个下划线__开头的方法称为魔术方法。
    在命名自己的类方法时不能使用这些方法名,除非是想使用其魔术功能。
    1. 构造方法:
      • __construct()
      • 触发时机:在物件实例化的时候自动触发
      • 作用:初始化成员属性
      • 参数:可有可没有,取决於设定和逻辑
      • 返回值:没有
      • 注意:如果构造方法具有参数,且参数没有默认值,在实例化物件时,必须在类名後面的括号内添加
    2. 析构方法:
      • __destruct()
      • 触发时机:在销毁物件的时候自动触发(unset() 或者 页面执行完毕)
      • 作用:回收物件使用过程中的资源
      • 参数:没有
      • 返回值:没有
<?php
class HumanClass
{
    //成员属性
    var $name;
    var $sex;
    var $id; //身份证号

    //成员方法
    //魔术方法--构造方法 :构建和创造
    function __construct($name)
    {
        echo '#####';
        $this->sex = mt_rand(0, 1) ? '男' : '女';
        $this->name = $name;
        $this->id = uniqid();
        //没有返回值
        //return 'aaaa';
    }
    function sayHi()
    {
        echo 'Hello~~~';
    }
    function sing()
    {
        echo '一闪一闪亮晶晶~';
    }
    //析构方法  拆解构造
    function __destruct()
    {
        echo '@@@@@@@';
        unset($this->id);
    }
}

$one = new HumanClass('Winnie');
var_dump($one);
// unset($one);
echo '<hr>';
echo $one->id;
// unset($one);

Day21 Winnie的聊天室

今天介绍了两个很主要的魔术方法,剩的明天继续介绍~~


<<:  机器视觉与影像辨识

>>:  Day21 用python写UI-聊聊PanedWindow & Notebook

Day 12:Python基本介绍05 | 流程控制、回圈

各位安安,今天讲的是对任何程序语言都很重要也很基础的流程控制和回圈的概念,如果你先前已经学过其他程序...

[Day 25] Facial Alignment

有了前两天的人脸关键点侦测後,我们今天终於要谈到人脸对齐 (Facial Alignment)这个工...

高内聚与低耦合

从软件的角度来看: 内聚力(cohesion)是指模组(module)中元素的相关(related...

Vue.js 从零开始:v-if,v-show

条件判断 v-if v-show v-if 与 v-show 的区别 <div id=&quo...

Chapter3 今天来学习画一棵树(I)学学人家DOM 自己用递回做一个树状图结构

你是说...树吗? 嘿~丢!铁人赛至今已经过半,实在是油尽灯枯,想不到主题了,刚好看到这两个很赞的树...