文档章节

大概率 PHP中static和self的区别

s
 shangshandalaohu
发布于 2017/06/05 08:33
字数 287
阅读 1
收藏 0
点赞 0
评论 0

使用 self:: 或者 CLASS对当前类的静态引用,取决于定义当前方法所在的类:

 

使用 static:: 不再被解析为定义当前方法所在的类,而是在实际运行时计算的。也可以称之为“静态绑定”,因为它可以用于(但不限于)静态方法的调用。

 

静态绑定是PHP 5.3.0,增加的一个功能 用于在继承范围内引用静态调用的类

 

简单通俗的来说,

 

self就是写在哪个类里面, 实际调用的就是这个类.

 

static代表使用的这个类, 就是你在父类里写的static,然后被子类覆盖,使用的就是子类的方法或属性

 

<?php class Person { public static function name() { echo "111"; echo "<br />"; } public static function callself() { self::name(); }

 

public static function callstatic()

{

    static::name();

}

}

 

class Man extends Person { public static function name() { echo "222"; echo "<br />"; } }

 

Man::callself(); // output: 111 Man::callstatic(); // output: 222 ?> 

 

 

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。互联网+时代,时刻要保持学习,携手千锋PHP,Dream It Possible。

本文转载自:

共有 人打赏支持
s
粉丝 0
博文 34
码字总数 6669
作品 0
php面向对象中self和static的区别

在php的面向对象编程中,总会遇到 可你知道self和static的区别么? 其实区别很简单,只需要写几个demo就能懂: Demo for self: 得到输出 可以发现,self在子类中还是会调用父类的方法 Demo f...

botkenni ⋅ 2016/11/07 ⋅ 0

关于 self 和static的区别

<?php 可你知道self和static的区别么? 其实区别很简单,只需要写几个demo就能懂: Demo for self: class Car { public static function model(){ self::getModel(); } protected static fu......

chenhongjiang ⋅ 2016/05/10 ⋅ 0

PHP基本概念

接口和抽象类的区别 接口中所有的方法都是抽象的,没有程序体。 接口的方法必须被全部实现,否则将报错。 抽象类里可以包含公共方法和抽象方法,抽象的方法必须被实现。 抽象类不能实例化,普...

lilugirl ⋅ 2014/03/12 ⋅ 1

PHP中new static 的用法和new self 之间的区别

啥都不多说: 举个栗子: 先来看第一个true 我们大致可以理解为 new self = new static ; 在来看第二个true 我们理解为 在 extendWangjh 这个类中的 self 还是指向了子类,为什么呢? 不服 ...

王景华 ⋅ 2016/03/25 ⋅ 0

PHP5.3_延迟静态绑定_static

基于PHP版本: 5.3.5 PHP5.3 以后引入了延迟静态绑定: static(关键字) 类似于 self(关键字) , 但它指向的是被调用的类(Document) 而不是包含类(DomainObject) , static 和 self 的区别: Code:...

斯文剑客 ⋅ 2012/01/06 ⋅ 2

PHP中this,self,parent的区别

{一}PHP中this,self,parent的区别之一this篇 面向对象编程(OOP,Object OrientedProgramming)现已经成为编程人员的一项基本技能。利用OOP的思想进行PHP的高级编程,对于提高PHP编程能力和规划...

一切_放空 ⋅ 2013/08/27 ⋅ 0

PHP中this,self,parent的区别

{一}PHP中this,self,parent的区别之一this篇 面向对象编程(OOP,Object OrientedProgramming)现已经成为编程人员的一项基本技能。利用OOP的思想进行PHP的高级编程,对于提高PHP编程能力和规划...

随智阔 ⋅ 2012/11/21 ⋅ 0

PHP中new static()与new self()的区别异同分析

self - 就是这个类,是代码段里面的这个类。 static - PHP 5.3加进来的只得是当前这个类,有点像$this的意思,从堆内存中提取出来,访问的是当前实例化的那个类,那么 static 代表的就是那个...

lilugirl ⋅ 2016/04/07 ⋅ 0

php init()和__construct() 区别

区别 construct() : 是PHP内置的构造函数,实例化之前 PHP 解析引擎自动调用,做一些初始化的工作或者外部服务器检测的工作。在实例化对象之前需要做的工作都写在这里 init() : 方法一般都是...

solate ⋅ 2016/08/16 ⋅ 2

php中static和self调用静态方法区别

由于看到框架里面经常使用static::method() 于是稍微了解下static和self的区别 废话少说,直接上代码 class Father{public function construct(){$this->init(); self::test();} public stat...

china_lx1 ⋅ 04/19 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Docker系列教程28-实战:使用Docker Compose运行ELK

原文:http://www.itmuch.com/docker/28-docker-compose-in-action-elk/,转载请说明出处。 ElasticSearch【存储】 Logtash【日志聚合器】 Kibana【界面】 答案: version: '2'services: ...

周立_ITMuch ⋅ 29分钟前 ⋅ 0

使用快嘉sdkg极速搭建接口模拟系统

在具体项目研发过程中,一旦前后端双方约定好接口,前端和app同事就会希望后台同事可以尽快提供可供对接的接口方便调试,而对后台同事来说定好接口还仅是个开始、设计流程,实现业务逻辑,编...

fastjrun ⋅ 54分钟前 ⋅ 0

PXE/KickStart 无人值守安装

导言 作为中小公司的运维,经常会遇到一些机械式的重复工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装。 常规的办法有什么? 光盘安装系统 ===> 一...

kangvcar ⋅ 昨天 ⋅ 0

使用Puppeteer撸一个爬虫

Puppeteer是什么 puppeteer是谷歌chrome团队官方开发的一个无界面(Headless)chrome工具。Chrome Headless将成为web应用自动化测试的行业标杆。所以我们很有必要来了解一下它。所谓的无头浏...

小草先森 ⋅ 昨天 ⋅ 0

Java Done Right

* 表示难度较大或理论性较强。 ** 表示难度更大或理论性更强。 【Java语言本身】 基础语法,面向对象,顺序编程,并发编程,网络编程,泛型,注解,lambda(Java8),module(Java9),var(...

风华神使 ⋅ 昨天 ⋅ 0

Linux系统日志

linux 系统日志 /var/log/messages /etc/logrotate.conf 日志切割配置文件 https://my.oschina.net/u/2000675/blog/908189 logrotate 使用详解 dmesg 命令 /var/log/dmesg 日志 last命令,调......

Linux学习笔记 ⋅ 昨天 ⋅ 0

MVC——统一报文格式的异常处理响应

在我们写controller层的时候,常常会有这样的困惑,如果需要返回一个数据是,可能为了统一回去构造一个类似下列的数据格式: { status:true, msg:"保存成功!", data:[]} 而且在写...

alexzhu592 ⋅ 昨天 ⋅ 0

[知乎]SSH框架

网上图书馆管理系统包括管理员管理和图书管理,图书借阅,查询模块等等,网上商城包括前台页面和后台管理页面,两个都是以前别人的实际项目,只是别人用的不是SSH,我把他们改用SSH了,除了S...

颖伙虫 ⋅ 昨天 ⋅ 0

android -------- 打开本地浏览器或指定浏览器加载,打电话,打开第三方app

开发中常常有打开本地浏览器加载url或者指定浏览器加载, 还有打开第三方app, 如 打开高德地图 百度地图等 在Android程序中我们可以通过发送隐式Intent来启动系统默认的浏览器。 如果手机本身...

切切歆语 ⋅ 昨天 ⋅ 0

linux 安装docker

通过以下命令下载安装docker wget -qO- https://get.docker.com | sh 执行以上命令后输出以下内容说明安装成功,注意红框中的内容,docker安装成功后默认只有root能使用,红框中给出的提示是...

haoyuehong ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部