php中static self区别与总结

<?php

/** * static self 区别与总结 * 总结: *  1.在 PHP 里,在没有继承时候,你用self::class 和 static::class是一样的,都是获取当前类名。 *  2.如果用到了继承,并且这个方法写在了父类里,你想要分别获取当前父类名和未知的子类名,就要按照下面的方法进行获取。 *  在 PHP 类中,self指向的是当前方法存在的这个类,也就是父类。static指向的是最终那个子类。 * *  1.在一个类A中,self::who() 等同于 static::who() *  2.当子类B继承父类A,子类B::test(),调用的时候,区别: *      test()方法调用 self::who() 调用父类的who()方法 *      test()方法调用 static::who()调用的是子类的who()方法 */

/** * Class A * 1.在同一个类中使用 self static 获取的都是获取当前类名 */class A{    public static function who()    {        echo __CLASS__;    }

    public static function test()    {        self::who();   echo ‘<br>‘;   // A        static::who(); echo ‘<br>‘;   // A    }}

A::test(); echo ‘<br>‘; // A A

/** * class B extends A *   B::test(); *   self::who();  调用 A 父类  的 who 方法 *   static::who(); 调用子类 B 的 who 方法 */class B extends A{    public static function who()    {        echo __CLASS__;    }}

echo B::test(); echo ‘<br>‘; // A B

/** * 父类P中 获取子类C的类名 */class P{    public static function getParent()    {        return self::class;    }

    public static function getChild()    {        return static::class;    }}

class C extends P{

}

echo C::getParent();         // Pecho C::getChild(), PHP_EOL; // C

原文地址:https://www.cnblogs.com/dreamofprovence/p/11743435.html

时间: 2024-10-10 19:23:12

php中static self区别与总结的相关文章

C++中static 的使用方式,以及与c中的static的区别

http://blog.csdn.net/hackbuteer1/article/details/7487694 c++中static有种使用方式:面向过程的static,面向对象的static.前者用于普通变量或函数,不涉及类.而后者出现在类中. 一:面向过程的static , 1.静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量.我们先举一个静态全局变量的例子,如下: 1 #include<iostream> 2 using namespace std;

Java中主类中定义方法加static和不加static的区别

Java中主类中定义方法加static和不加static的区别(前者可以省略类名直接在主方法调用,后者必须先实例化后用实例调用) 知识点:1.Getter and Setter 的应用 2.局部变量与成员变量(也可叫做全局变量) 3.Static关键字的用法 a.成员变量被static修饰后的所有类的共享属性 b.方法被static修饰之后,在本类内调用的类名省略问题;以及不用Static,即使在本类内也必须先实例化 4.This关键字的用法 this:是当前类的对象引用.简单的记,它就代表当前

java中static、final、static final的区别

final可以修饰:属性,方法,类,局部变量(方法中的变量) final修饰的属性的初始化可以在编译期,也可以在运行期,初始化后不能被改变. final修饰的属性跟具体对象有关,在运行期初始化的final属性,不同对象可以有不同的值. final修饰的属性表明是一个常数(创建后不能被修改). final修饰的方法表示该方法在子类中不能被重写,final修饰的类表示该类不能被继承. 对于基本类型数据,final会将值变为一个常数(创建后不能被修改):但是对于对象句柄(亦可称作引用或者指针),fin

Java中static final 与 final 的区别(转载)

转自:http://advance0683.iteye.com/blog/1107732 Java中static final 与 final 的区别: 例子: Java代码 import java.util.Random; //这个例子想说明一下static final 与 final的区别 public class StaticAndFinalTest { private static Random rand = new Random(47); //47作为随机种子,为的就是产生随机数. pr

PHP中new self()和new static()的区别探究

1.new static()是在PHP5.3版本中引入的新特性. 2.无论是new static()还是new self(),都是new了一个新的对象. 3.这两个方法new出来的对象有什么区别呢,说白了就是new出来的到底是同一个类实例还是不同的类实例呢? 为了探究上面的问题,我们先上一段简单的代码: class Father { public function getNewFather() { return new self(); } public function getNewCaller

vue中assets和static的区别

Vue中assets和static的区别 再一次框架定型中,与同事在静态资源的存放上有了一些分歧,后来经过查阅总结如下: 相同点: assets和static两个都是存放静态资源文件.项目中所需要的资源文件图片,字体图标,样式文件等都可以放在这两个文件下,这是相同点 不相同点: assets中存放的静态资源文件在项目打包时,也就是运行npm run build时会将assets中放置的静态资源文件进行打包上传,所谓打包简单点可以理解为压缩体积,代码格式化.而压缩后的静态资源文件最终也都会放置在s

php 中 self 和 static 的区别

php 中 self 和 static 的区别 class Foo { public static $str = 'This is foo'; public static function show() { echo __METHOD__ . PHP_EOL; echo static::$str; } } class Boo extends Foo { public static $str = 'This is boo'; } Boo::show(); # 输出结果 # Foo::show #

C/C++中static关键字的用法

1.什么是static? static 是C/C++中很常用的修饰符,它被用来控制变量的存储方式和可见性. 1.1static的引入 我们知道在函数内部定义的变量,当程序执行到它的定义处时,编译器为它在栈上分配空间,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题: 如果想将函数中此变量的值保存至下一次调用时,如何实现? 最容易想到的方法是定义为全局的变量,但定义一个全局变量有许多缺点,最明显的缺点是破坏了此变量的访问范围(使得在此函数中定义的变量,不仅仅只受此函数控制).s

(转)全局变量、extern/static/const区别与联系

全局变量.extern/static/const区别与联系 编译单元(模块):     在IDE开发工具大行其道的今天,对于编译的一些概念很多人已经不再清楚了,很多程序员最怕的就是处理连接错误(LINK ERROR), 因为它不像编译错误那样可以给出你程序错误的具体位置,你常常对这种错误感到懊恼,但是如果你经常使用gcc,makefile等工具在linux或者嵌 入式下做开发工作的话,那么你可能非常的理解编译与连接的区别! 当在VC这样的开发工具上编写完代码,点击编译按钮准备生成exe文件时,V