php面向对象中static静态属性与方法的内存位置分析

本文实例分析了php面向对象中static静态属性与方法的内存位置。分享给大家供大家参考。具体如下:

static静态属性的内存位置——>类,而不是对象。下面做测试来证明一下

<?php
header("content-type:text/html;charset=utf-8");
class Human{
 static public $name = "小妹";
 public $height;
 public function tell(){
 }
}
echo Human:$name;
//不依赖于对象,就能直接访问。因为静态属性的内存位置是在类里,而不是对象。
$p1 = new Human();
$p2 = new Human();
print_r($p1);
echo $p1::$name = "夫人";
//在$p1对象上改变静态属性的值,那$p2对象也会相应的改变。
echo $p2::$name;
?>

输出结果可以看出:

1、echo Human:$name :类声明完毕,就存在static属性,并不依赖于对象。因此,静态属性只有一个(意思是在内存里,存放的位置并不是在对象里;如果在对象里,那实例化一个对象,就相应的有该静态的位置,如height属性);

2、print_r($p1):打印结果只有height属性,而没有name;

3、静态属性的值变化后,所有对象的该属性值都会受到影响。

对于方法,无论是静态的、还是普通的,都是存在于类内存空间中。证明也很简单,new一个对象,print_r(对象)即可。

希望本文所述对大家的php程序设计有所帮助。

(0)

相关推荐

  • PHP取得一个类的属性和方法的实现代码

    复制代码 代码如下: <?php class myclass { var $var1; var $var2 = 'xyz'; var $var3 = 100; private $var4; function myclass() { $this->val1 = "foo"; $this->val2 = "bar"; return true; } function test1() { return true; } } //get_class_metho

  • PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间

    PHP前言: •动态地创建属性和方法 •对象的复制 •对象的比较 •加载指定的文件 •自动加载类文件 •命名空间 示例 1.类的相关知识点 3(动态地创建属性和方法) class/class3.php <?php /** * 类的相关知识点 3(动态地创建属性和方法) */ // 用于演示如何动态地创建属性(这就是 php 中所谓的重载) class Class1 { // __set 魔术方法,当设置的属性不存在或者不可访问(private)时就会调用此函数 public function _

  • php判断字符以及字符串的包含方法属性

    下面介绍使用方法: 1. strstr: 返回一个从被判断字符开始到结束的字符串,如果没有返回值,则不包含 复制代码 代码如下: <?php /*如手册上的举例*/ $email = 'user@example.com'; $domain = strstr($email, '@'); echo $domain; // prints @example.com ?> 2. stristr: 它和strstr的使用方法完全一样.唯一的区别是stristr不区分大小写. 3. strpos: 返回bo

  • PHP 5.0对象模型深度探索之属性和方法

    可以联用->,如果一个对象的属性包含了一个对象,你可以使用两个->运算符来得到内部对象的属性. 你甚至可以用双重引用的字符串来放置这些表达式. 下面的例子中,对象House中的属性room包含了一组Room对象. 访问方法和访问属性类似.->运算符用来指向实例的方法. 在下面的中调用getLastLogin就是.方法执行起来和类外的函数几乎相同. 如果一个类从另一类中继承而来,父类中的属性和方法将在子类中都有效,即使在子类中没有声明. 像以前提到过的,继承是非常强大的. 如果你想访问一个

  • php正则表达式匹配img中任意属性的方法

    经常和图片打交道,不得不用到一些提取图片中scr.alt.title.等的属性,这里总结给大家一些常用的,感觉还不错,比较通用! PHP正则表达式匹配img中任意属性PHP 复制代码 代码如下: <?php /*PHP正则提取图片img标记中的任意属性*/ $str = '<center><img src="/uploads/images/20100516000.jpg" height="120" width="120"&

  • PHP使用方法重载实现动态创建属性的get和set方法

    在PHP中,我们不能够直接通过方法名相同,签名不同的方法来实现方法重载,因为PHP是弱数据类型,不能很好的区分签名.但是,可以在PHP的类中运用__call()方法来实现方法重载.当调用一个类中并不存在的方法时,会自动调用__call()方法,其形式为__call($name,$arguments) 其中$name是方法的名称,$arguments是一个数组类型的参数. 下面的例子是使用PHP的方法重载来动态创建get和set方法.(在面向对象编程中,一个类中的属性会使用get和set来赋值,但

  • php面向对象中static静态属性和静态方法的调用

    本文实例讲述了php中static静态属性和静态方法的调用.分享给大家供大家参考.具体如下: 这里分析了php面向对象中static静态属性和静态方法的调用.关于它们的调用(能不能调用,怎么样调用),需要弄明白了他们在内存中存放位置,这样就非常容易理解了.静态属性.方法(包括静态与非静态)在内存中,只有一个位置(而非静态属性,有多少实例化对象,就有多少个属性). 实例: <?php header("content-type:text/html;charset=utf-8"); c

  • PHP获取类中常量,属性,及方法列表的方法

    复制代码 代码如下: $r = new ReflectionClass($this); Zend_Debug::dump($r->getConstants(), "Constants"); Zend_Debug::dump($r->getProperties(), "Properties"); Zend_Debug::dump($r->getMethods(), "Methods");

  • php输出xml属性的方法

    本文实例讲述了php输出xml属性的方法.分享给大家供大家参考.具体分析如下: 这段代码通过一个简单的范例演示了php如何读取xml文件并输出xml属性 <?php $xml = simplexml_load_file("books.xml"); foreach($xml->book[0]->author->attributes() AS $a => $b) { echo "$a = $b <br />"; } ?>

  • php面向对象中static静态属性与方法的内存位置分析

    本文实例分析了php面向对象中static静态属性与方法的内存位置.分享给大家供大家参考.具体如下: static静态属性的内存位置-->类,而不是对象.下面做测试来证明一下 <?php header("content-type:text/html;charset=utf-8"); class Human{ static public $name = "小妹"; public $height; public function tell(){ } } ec

  • js面向对象之公有、私有、静态属性和方法详解

    现下,javascript大行其道,对于网站开发人员来说,javascript是必需掌据的一门语言,但随着jquery等框架的流行和使用,许多人对于原生javascript缺乏深入的理解,习惯了函数式的编辑风格,对于闭包.原型总是说不清道不明.对于js面向对象蹩脚的用着,而要了解js面向对象,就必需先了解js中什么是公有方法.特权方法.静态方法 方法/步骤 1.公有属性和公有方法 function User(name,age){ this.name = name;//公有属性 this.age

  • Java 深入学习static关键字和静态属性及方法

    目录 static关键字 静态属性 静态方法 静态方法的使用 静态代码块 static关键字 在定义一个类时,只是描述某事物的特征和行为,并没有产生具体的数据,只有通过new关键字创建该类的实例对象时,才会开辟栈内存及内存,在堆内存中要保存对象的属性时,每个对象会有自己的属性. 如果希望某些属性被所有对象共享,就必须将其声明为static属性,如果属性使用了static关键字进行修饰,则该属性可以直接使用类名称进行调用,static关键字还可以修饰成员方法. 静态属性 如果在Java程序中使用s

  • 对Django中static(静态)文件详解以及{% static %}标签的使用方法

    在一个网页中,不仅仅只有一个html骨架,还需要css样式文件,js执行文件以及一些图片等.因此在DTL中加载静态文件是一个必须要解决的问题.在DTL中,使用static标签来加载静态文件.要使用static标签,首先需要{% load static %}. 加载静态文件的步骤如下: 首先确保django.contrib.staticfiles已经添加到settings.INSTALLED_APPS中. 确保在settings.py中设置了STATIC_URL. 注意: 上面两条都是在创建Dja

  • C#中static静态变量的用法实例

    本文实例讲述了C#中static静态变量的用法.分享给大家供大家参考.具体如下: 使用 static 修饰符声明属于类型本身而不是属于特定对象的静态成员static修饰符可用于类.字段.方法.属性.运算符.事件和构造函数,但不能用于索引器.析构函数或类以外的类型   静态全局变量 定义:在全局变量前,加上关键字 static 该变量就被定义成为了一个静态全局变量. 特点: ① .该变量在全局数据区分配内存. ② .初始化:如果不显式初始化,那么将被隐式初始化为0.   静态局部变量 定义:在局部

  • php之static静态属性与静态方法实例分析

    本文实例讲述了php之static静态属性与静态方法.分享给大家供大家参考.具体如下: <?php /* * static */ /*静态:属于类而不属于单个对象 (全局的,所有对象共享的) *静态属性:类的方法内调用静态属性时,不要使用$this->方式,而要使用self::的方式 *静态方法: *在类没有任何对象的时候也能被调用 *当成普通方法来用也没问题的 *在静态方法中不能调用普通方法 * * */ class xin { static private $name; public fu

  • php正则删除html代码中class样式属性的方法 原创

    本文实例讲述了php正则删除html代码中class样式属性的方法.分享给大家供大家参考,具体如下: 一.问题: 有如下代码: <div class="jb51"><div class="jb51_txt">欢迎访问我们</div></div> 要求:删除HTML代码中的class属性. 二.实现方法: php实现代码如下: $str='<div class="jb51"><div

  • php中static 静态变量和普通变量的区别

    php中static 静态变量和普通变量的区别 在变量的前面加上static 就构成了静态变量(static 变量). static变量和普通变量的区别在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的. 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它.由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源文件中引起错误. static变

  • python类和函数中使用静态变量的方法

    本文实例讲述了python类和函数中使用静态变量的方法.分享给大家供大家参考.具体分析如下: 在python的类和函数(包括λ方法)中使用静态变量似乎是件不可能[Nothing is impossible]的事, 但总有解决的办法,下面通过实现一个类或函数的累加器来介绍一些较为非主流的方法 方法一.通过类的__init__和__call__方法 class foo: def __init__(self, n=0): self.n = n def __call__(self, i): self.n

随机推荐