`
275553385
  • 浏览: 724553 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
文章分类
社区版块
存档分类
最新评论

php 对象

阅读更多
当定义好类后,我们使用new关键字来生成一个对象。
     $对象名称 = new  类名称();
<?php
class Person
{
//下面是人的成员属性
var $name;  //人的名子
var $sex;    //人的性别
var $age;    //人的年龄

//下面是人的成员方法
function say()  //这个人可以说话的方法
{
echo "这个人在说话";
}

function run()  //这个人可以走路的方法
{
echo "这个人在走路";
}
}

$p1=new Person();
$p2=new Person();
$p3=new Person();
?>
$p1=new Person();
这条代码就是通过类产生实例对象的过程,$p1就是我们实例出来的对象名称, 同理,$p2, $p3也是我们实例出来的对象名称,一个类可以实例出多个对象,每个对象都是独立的,上面的代码相当于实例出来3个人来, 每个人之间是没有联系的, 只能说明他们都是人类, 每个人都有自己的姓名, 性别和年龄的属性,每个人都有说话和走路的方法,只要是类里面体现出来的成员属性和成员方法,实例化出来的对象里面就包含了这些属性和方法。
对像在PHP里面和整型、浮点型一样,也是一种数据类,都是存储不同类型数据用的,在运行的时候都要加载到内存中去用, 那么对象在内存里面是怎么体现的呢?内存从罗辑上说大体上是分为4段, 栈空间段, 堆空间段,代码段, 初使化静态段,程序里面不同的声明放在不同的内存段里面,栈空间段是存储占用相同空间长度并且占用空间小的数据类型的地方,比如说整型1, 10, 100, 1000, 10000, 100000等等,在内存里面占用空间是等长的,都是64位4个字节。 那么数据长度不定长,而且占有空间很大的数据类型的数据放在那内存的那个段里面呢?这样的数据是放在堆内存里面的。栈内存是可以直接存取的,而堆内存是不可以直接存取的内存。对于我们的对象来数就是一种大的数据类型而且是占用空间不定长的类型,所以说对象是放在堆里面的,但对象名称是放在栈里面的,这样通过对象名称就可以使用对象了。 

$p1=new Person();

对于这个条代码, $p1是对象名称在栈内存里面,new Person()是真正的对象是在堆内存里面的,具体的请看下图:


从上图可以看出$p1=new Person();等号右边是真正的对象实例, 在堆内存里面的实体,上图一共有3次new Person(),所以会在堆里面开辟3个空间,产生3个实例对象,每个对象之间都是相互独立的,使用自己的空间,在PHP里面,只要有一个new这个关键字出现就会实例化出来一个对象,在堆里面开辟一块自己的空间.
每个在堆里面的实例对象是存储属性的,比如说,现在堆里面的实例对象里面都存有姓名、性别和年龄。每个属性又都有一个地址。
$p1=new Person();等号的右边$p1是一个引用变量,通过赋值运算符“=”把对象的首地址赋给“$p1“这个引用变量, 所以$p1是存储对象首地址的变量,$p1放在栈内存里边,$p1相当于一个指针指向堆里面的对象, 所以我们可以通过$p1这个引用变量来操作对象, 通常我们也称对象引用为对象。
分享到:
评论

相关推荐

    由php对象生成json字符串 把php对象变成json字符串.zip

    在PHP中,将PHP对象转换成JSON(JavaScript Object Notation)字符串是一项常见的任务,尤其是在进行Web开发时,因为JSON是一种轻量级的数据交换格式,它允许服务器向客户端发送数据,并在客户端进行解析。...

    PHP对象相关知识总结

    本篇文章将深入探讨PHP对象的几个核心概念,包括对象的创建、传递、复制以及`__clone()`方法的使用。 首先,我们来看对象的传递。在PHP中,对象是通过引用传递的,但这里的"引用"并不完全等同于其他编程语言中的...

    php面向对象手册

    ### PHP面向对象手册知识点解析 #### 一、面向对象编程简介 面向对象编程(Object-Oriented Programming,简称 OOP)是一种程序设计范式,它将数据和处理数据的方法捆绑在一起形成“对象”。OOP 的核心思想是通过...

    Samsui一个工厂库构建PHP对象用于构建应用程序的测试数据

    Samsui通过提供一套强大的工厂方法,使得开发者可以快速生成符合需求的PHP对象,从而提高了测试的效率。 Samsui库的核心特性包括: 1. **对象构造**:Samsui允许开发者定义工厂类,这些类可以生成特定类型的对象。...

    php 把对象转化为json

    在PHP中,将对象转换为JSON(JavaScript Object Notation)是一种常见的操作,特别是在与前端交互时,例如在AJAX请求中。JSON格式是轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。下面我们将...

    php面向对象系列(完整)

    《PHP面向对象系列(完整)》是一份涵盖了2010年PHP面向对象编程的精华内容,主要包括了PHP 5.0中的多态性实现、PHP对象相关知识、PHP魔术函数等多个重要主题。以下是这些文档可能包含的关键知识点的详细解析: 1. **...

    php5 类与对象

    ### PHP5 类与对象知识点详解 #### 1. PHP 类与对象 在 PHP5 中,类是用于定义对象模板的一种语法结构。一个类可以包含属性(变量)和方法(函数)。对象则是根据类实例化的实体。 ```php class Person { public...

    实验PHP面向对象

    综上所述,通过面向对象设计实验,学习者可以熟练掌握PHP对象的创建,掌握构造函数与析构函数的使用,熟练掌握封装、继承、多态特性,并能正确使用接口。这一系列的知识点是进行面向对象编程的基础,也是进一步学习...

    PHP对象编程实现3D饼图

    PHP对象编程实现3D饼图,可以自己定义饼图的颜色。很不错的一个东西咯。

    PHP对象转换为数组函数(递归方法)

    今天我们将详细探讨如何使用递归方法将PHP对象转换为数组,以及该技术的应用场景和相关注意事项。 首先,我们需要明白对象与数组在PHP中的不同表现形式和它们各自的使用场景。对象是面向对象编程中的基本概念,包含...

    PHP面向对象全解析

    在PHP编程语言中,面向对象(Object-Oriented Programming,OOP)是一种强大的设计和组织代码的方法。PHP5引入了完整的面向对象支持,使得开发者能够利用类、对象、继承、封装和多态等核心概念来编写更加清晰、可...

    PHP把实例化的class对象永久保存

    PHP把实例化的class对象存入session(session的值写入memcache),不必每次都创建类的实例 听起来有点绕口,其实就是: 1.不管你网站有多大,且有多少个class,用此方法之后每个类只需要实例化一次(除非你重启了服务器),听...

    php对象和数组相互转换的方法

    本文实例讲述了php对象和数组相互转换的方法。分享给大家供大家参考。具体分析如下: 这里定义2个php匿名对象和数组相互转换的函数,代码如下: function array2object($array) { if (is_array($array)) { $obj =...

    php对象工厂类完整示例

    首先,让我们看一个PHP对象工厂类的实例: ```php class ObjectFactory { private static $objSet = array(); public function clear() { self::$objSet = array(); } public static function create() { $...

    php对象在内存中的存在形式分析

    本文将深入探讨PHP对象如何在内存中存储以及相关的概念。 首先,我们要了解内存的两个主要区域:栈(Stack)和堆(Heap)。栈通常用于存储基本类型的数据(如整型、浮点型和字符串)以及变量的引用,而堆则用于存储...

    PHP 面向对象技术(全面讲解).txt

    有人说PHP 不是一个真正的面向对象的语言,这是事实。PHP 是一个混合型语言,你可以使 用OOP,也可以使用传统的过程化编程。然而,对于大型项目,你可能需要在PHP 中使用纯的OOP 去声明类,而且在你的项目里只用对象...

    20140207PHP01_PHP面向对象程序设计.pdf

    根据提供的文档信息,本文将详细解析“20140207PHP01_PHP面向对象程序设计.pdf”中关于PHP面向对象程序设计的关键知识点。 ### 面向对象概念 面向对象编程(Object-Oriented Programming, OOP)是一种编程范式,它...

    PHP对象链式操作实现原理分析

    本文将深入探讨PHP对象链式操作的实现原理,通过一个具体的例子来阐述如何在PHP中实现这种特性。 首先,我们需要了解两个关键的PHP魔术方法:`__call()` 和 `__toString()`。`__call()` 方法在尝试调用一个对象上不...

Global site tag (gtag.js) - Google Analytics