• php对象在内存中存在形式


    1,php中基本数据类型存在于栈区,对象这种数据类型存在于堆区;

    比如如下代码,两个指针指向同一个对象,其输出相同

    <?php
    /**
     * Created by PhpStorm.
     * User: usa007lhy
     * Date: 2015/10/15
     * Time: 21:38
     */
    //定义一个类描述人
    class Person{
        public $name;
        public $age;
    }
    $c = 90;
    $a = new Person();
    $a->name = '小明';
    $a->age = 20;
    $b = $a;
    echo $a->name."<br/>";
    echo $b->name."<br/>";
    ?>
    

      其输出

    代码对应的内存变化如下图:

    2,如果给一个函数传递一个对象,实际传递的是一个地址,指向对象的地址;如果给函数传递的是基本数据类型(整数、小数、布尔、字符串),传递的是值;如果给函数传递的是数组,传递的是值;

    3,php中构造方法

    php存在两种构造方法,(1)构造函数名和类名相同,此方法一直通用;(2)public function __construct(){},此方法是php5版本新提出来的,在php4及之前版本没法使用。如果两种方法同时存在,优先选择第二种方法__construct()。在编程过程中,优先使用第二种构造方法。

    <?php
    class Person{
        public $name;
        public $age;
        public function __construct(){
            echo "我是新的构造方法,优先级高于第二种方法";
        }
        public function Person(){
            echo "我是旧的构造方法,优先级低于第一种方法";
        }
    }
    $p1 = new Person();
    ?>
    

      构造方法的特点:

    (1),一旦自定义了一个构造函数,默认的构造函数就会失效;

    (2),一个类只有一个构造函数;java中一个类可以通过重载有多个构造函数;

    (3),构造方法没有返回值;

    (4),构造函数作用是完成对对象的初始化,并不是创建对象本身;

    (5),在创建对象后,系统自动调用该类的构造方法;

    (6),构造方法的默认访问修饰符是public;

    4,php中析构方法

    析构方法的调用时间:
    (1)当程序退出时(进程结束时);
    (2)当一个对象成为垃圾对象(没有指针指向的对象称为垃圾对象)时候,系统立即调用析构函数;

    析构方法的特点
    (1)析构方法会自动调用;
    (2)析构方法的主要作用是释放资源(比如释放数据库的链接,图片资源,销毁对象等);
    (3)析构函数不写上去,程序不会执行析构函数;
    (4)析构函数没有返回值,没有参数;
    (5)一个类最多只有一个析构方法;
    (6)析构方法调用顺序是,先创建的对象后被销毁;

  • 相关阅读:
    python-字典
    python-列表
    python:基础数据类型
    前端之JS
    数据库之备份,恢复
    前端之CSS
    前端之CSS笔记
    前端之html
    数据库之操作使用python操作mysql数据库
    何为javaBean?
  • 原文地址:https://www.cnblogs.com/usa007lhy/p/4892085.html
Copyright © 2020-2023  润新知