PHP群里有人询问 self 关键字的用法,答案是比较明显的:静态成员函数内不能用 this 调用非成员函数,但可以用 self 调用静态成员函数/变量/常量;其他成员函数可以用 self 调用静态成员函数以及非静态成员函数...但是其与 self 关联上是PHP 5.3以来引入的新用途:静态延迟绑定。 有了 static 的静态延迟绑定功能,可以在运行时动态确定归属的类。..., PHP_EOL; } public static function getSelf() { return new self(); } public...此行为貌似在不同PHP版本中表现不同,在当前的7.3中ok; 在静态函数和非静态函数中输出 self ,猜猜结果是什么?...参考 When to use self over $this? 原文:https://www.tlanyan.me/self-in-php/
{一}PHP中this,self,parent的区别之一this篇 面向对象编程(OOP,Object OrientedProgramming)现已经成为编程人员的一项基本技能。...利用OOP的思想进行PHP的高级编程,对于提高PHP编程能力和规划web开发构架都是很有意义的。...PHP5经过重写后,对OOP的支持额有了很大的飞跃,成为了具备了大部分面向对象语言的特性的语言,比PHP4有了很多的面向对象的特性。...PHP中this,self,parent的区别之二self篇 此篇我们就self的用法进行讲解 首先我们要明确一点,self是指向类本身,也就是self是不指向任何已经实例化的对象,一般self使用来指向类中的静态变量...{三}PHP中this,self,parent的区别之三parent篇 此篇我们就parent的用法进行讲解。
php中self与static的区别 通过一些示例,我们可以很容易看出self和static的区别。假定我们有class Car – 它有两个方法,model和getModel。...注意,这里我们使用了关键字self。...static关键字和延迟静态绑定(late static binding) 在PHP5.3中,加入了一个新的特性,叫做延迟静态绑定。它可以帮我们实现多态,解决上面的问题。...php 5.3以下的版本无法使用延迟静态绑定 注意,php 5.3之前的版本无法使用延迟静态绑定。如果尝试在php 5.3以下的版本运行上面的例子,将会报错。...php中的self和static 现在我们将例子中的self用static替换,可以看到,两者的区别在于:self引用的是当前类(current class)而static允许函数调用在运行时绑定调用类
再谈PHP中的self与static 之前的文章中有介绍过self、static和parent的传递问题。今天,通过一个小实验,我们来看看self和static操作变量的问题。...)方法,所以B类调用selfName()时调用的是父类A的selfName()方法,self在这个方法中指向的是A类。...测试代码:https://github.com/zhangyue0503/dev-blog/blob/master/php/201912/source/%E5%86%8D%E8%B0%88PHP%E4%...B8%AD%E7%9A%84self%E4%B8%8Estatic.php 参考文档:https://www.cnblogs.com/mr-amazing/p/5953227.htmlhttps://www.php.net.../manual/zh/language.oop5.constants.php
在php的面向对象编程中,总会遇到 class test{ public static function test(){ self::func(); static::func();...} public static function func(){} } 可你知道self和static的区别么?...其实区别很简单,只需要写几个demo就能懂: Demo for self: class Car { public static function model(){ self::getModel...在PHP5.3版本以前,static和self还是有一点区别,具体是什么,毕竟都是7版本的天下了。就不去了解了。...总结呢就是:self只能引用当前类中的方法,而static关键字允许函数能够在运行时动态绑定类中的方法。
本文实例讲述了PHP后期静态绑定之self::限制。分享给大家供大家参考,具体如下: 在此我想讲一讲后期静态绑,我想讲self::与static进行比较说明。...在此我想用官方文档上的一个例子来说明self::限制: self::实例 class A{ public static function who(){ echo __CLASS__; }...看到static::,不禁想起来:self:: parent:: 在此我想把self:: static:: parent::进行一个比较: self:: 通常指向类本身,也就是self是不指向任何已经实例化的对象...更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串...(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》 希望本文所述对大家PHP程序设计有所帮助。
简介 在使用PHP代码时,您可能经常会遇到parent::、static::和self::。但是当你第一次作为一个开发人员开始的时候,有时候你会很困惑,不知道它们是做什么的,以及它们之间的区别。...因此,我们需要告诉PHP在BaseTestCase中使用setUp方法,而不是使用this->setUp()。...这是由于PHP中一个名为“后期静态绑定”的特性。 如果您有兴趣阅读更多关于后期静态绑定的内容,可以在这里查看PHP文档。...https://www.php.net/manual/en/language.oop5.late-static-bindings.php 根据PHP文档:这个特性被命名为“后期静态绑定”,从内部的角度考虑...什么时候使用self::或 static::? 现在我们对self::和static::之间的区别有了一个大致的了解,让我们快速介绍一下如何决定在自己的代码中使用哪一个。
下面我们举个栗子: class Father { public static function getSelf() { return new self(); } public static...Son echo get_class(Father::getSelf()); // Father echo get_class(Father::getStatic()); // Father new self...这里面注意这一行 get_class(Son::getStatic()); 返回的是 Son 这个 class, 可以总结如下: self 返回的是 new self 中关键字 new 所在的类中...,比如这里例子的 : public static function getSelf() { return new self(); // new 关键字在 Father 这里 } 始终返回 Father...Son::getStatic()) 返回的是 Son, Father 执行 get_class(Father::getStatic()) 返回的是 Father 而在没有继承的情况下,可以认为 new self
本文实例讲述了php 中self,this的区别和操作方法。...利用OOP的思想进行PHP的高级编程,对于提高PHP编程能力和规划web开发构架都是很有意义的。 这里我主要谈的是this,self关键字之间的区别。从字面上来理解,分别是指这、自己。...用self时,可以不用实例化的 class self_test { static $instance; public function __construct(){ self::$instance...更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串...(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》 希望本文所述对大家PHP程序设计有所帮助。
self - 就是这个类,是代码段里面的这个类。...static - PHP 5.3加进来的只得是当前这个类,有点像$this的意思,从堆内存中提取出来,访问的是当前实例化的那个类,那么 static 代表的就是那个类。...还是看看老外的专业解释吧: self refers to the same class whose method the new operation takes place in....static in PHP 5.3's late static bindings refers to whatever class in the hierarchy which you call the...class A { public static function get_self() { return new self(); } public static function
self!...if(self!=top){ top.location=self.location; } top指向最顶层框架的window对象,self指向当前框架的window对象。...如果网页中没有iframe,则top和self是同一个值,所以这段代码可以防止自己的网页被别人用iframe的方式嵌入到其它网页中去。...self 属性返回指向当前 window 对象的引用,利用这个属性,可以保证在多个窗口被打开的情况下,正确调用当前窗口内的函数或属性而不会发生混乱。self 属性是只读的。...注:window、self、window.self 是等价的。
这个特别的变量指对象本身,按照惯例它的名称是self。 虽然你可以给这个参数任何名称,但是强烈建议你使用self这个名称——其他名称都是不赞成你使用的。...这也意味着如果你有一个不需要参数的方法,你还是得给这个方法定义一个self参数。...): print "hello self!" ...In [4]: #如果去掉self的话就会报错 n [6]: class Testself: def testself(): print "hello self!" ...============ In [26]: class Testself1: ....: def testself1(self): ....: print 'self
#定义`地瓜`类 classSweetPotato: '这是烤地瓜的类' #定义初始化方法 def__init__(self): self.cookedLevel =0 self.cookedString...="生的" self.condiments = [] 4.添加"烤地瓜"方法 ?
背景 最近作者在进行工程代码分析时,经常看到这样的代码: self.delegate = self //自己的代理设置为自己 于是心中产生了不少疑问,为什么会这样写?这样写是否是正确的?...首先针对新增的部分代码进行注释,把 self.delegate = self 代码注释掉,然后重新运行程序,发现问题得到解决。 2. 控制变量法开始排查。...难道是 self.delegate = self 导致的?...可以肯定的是,在没有任何方法调剂的情况下,即 “self.delegate == self”,是不会出现死循环的问题的。...在没有考虑清楚前,避免使用 self.delegate = self。 2. 破除死循环,解决上述问题,只需停止消息转发即可。
引言 之前的文章我们已经讲过,在 PHP 类的创建过程中,使用 self 作为类本身的引用,使用 $this 作为类对象的引用。 ? 而在 self 和 static 的使用上,有这细微的差别。...特别是类继承过程中,self 可能带来意想不到的反应,也正如那篇文章所说,建议使用 static 作为类本身的引用。 本文再来探讨,类内的 new self 与 new static 有什么区别。...学习时间 self 总是指向 new 关键字所声明的类;static 在静态绑定中,可以指向层级结构中的任意类。 下面举一个例子。 ? 类B继承了类A的方法。...对于 get_self 方法,返回的是类A本身。而static则返回的是调用者的类,也就是说,谁调用,static就指向谁。self 则持续地指向声明的类。...因为 self 引用的是类本身,调用 class 静态方法也完全行得通。
意思是block中使用了self的实例变量_newPossword,因此block会隐式的retain住self。...Xcode认为这可能会给开发者造成困惑,或者因此而因袭循环引用,所以警告我们要显示的在block中使用self,以达到block显示retain住self的目的。...解决方案: xcode9.3后创建的项目 Implicit retain of 'self'within blocks 默认为YES改为NO即可! ?...Xcode提示,改成self-> _newPossword 也可。
本文实例讲述了php面向对象程序设计中self与static的区别。分享给大家供大家参考,具体如下: 1、假设我们有个Car类,它有2个方法:model()和getModel()。...class Car{ public function model(){ //这里我们使用了关键字self self::getModel(); } protected function getModel...3、关键字self的工作原理是:它会调用当前类的方法。 因为model()方法只在Car类中定义的,所以对self来说当前类就是Car类。...self::getModel()就是调用Car类中的getModel方法。 这似乎不是我们想要的,如何解决呢?...此时我们调用: $mercedes = new Mercedes(); $mercedes- model(); // 输出:I am mercedes 6、小结 在php5.3中加入了一个新特性,叫做延迟静态绑定
php class Person { public $name; public function getName() { echo $this->name; }...self::指向类,一般用来访问当前类的静态变量和静态方法,运行之前已经确定指向哪个类。 <?...php class Person { public static $name = "小红"; public static function getName() { echo...static 和 self 一样,都是指向类,一般都用来访问类中的静态变量和静态方法,但是又有一些不一样,具体来讲:self 写在哪个类里,实际调用的就是这个类;static 则是写在父类里,然后通过子类用到了这个...php class A { public function say() { echo "Hello"; } public function saySelf()
Self Attention 详解 前言 注意力机制(Attention),之前也是一直有所听闻的,也能够大概理解 Attention 的本质就是加权,对于 Google 的论文《Attention is...最开始接触 self attention 的时候,最不理解的就是 图片 到底是什么东西,为什么又要按照上面的式子去这样计算。 下面我们对其每一个部分进行分析。...Attention 实现 待施工… 参考资料 The Illustrated Transformer Attention is all you need 超详细图解 Self-Attention
题意:找出10000以内所有的不能由n+n的各位数字和组成的数字 #include<stdio.h> #include<string.h> int main()...
领取专属 10元无门槛券
手把手带您无忧上云