首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

php中self与static的区别

php中self与static的区别 通过一些示例,我们可以很容易看出self和static的区别。假定我们有class Car – 它有两个方法,model和getModel。...; } } 当我们调用Mercedes::model()时,猜猜结果是什么? 可能你觉得结果会是: I am a Mercedes! 但实际输出是: I am a Car!...static关键字和延迟静态绑定(late static binding) 在PHP5.3中,加入了一个新的特性,叫做延迟静态绑定。它可以帮我们实现多态,解决上面的问题。...php 5.3以下的版本无法使用延迟静态绑定 注意,php 5.3之前的版本无法使用延迟静态绑定。如果尝试在php 5.3以下的版本运行上面的例子,将会报错。...php中的self和static 现在我们将例子中的self用static替换,可以看到,两者的区别在于:self引用的是当前类(current class)而static允许函数调用在运行时绑定调用类

57520

PHP中include()与require()的区别说明

这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。...include 使用方法如 include("MyIncludeFile.php"); 。这个函数一般是放在流程控制的处理部分中。PHP 程序网页在读到 include 的文件时,才将它读进来。...这种方式,可以把程序执行时的流程简单化。 他们两个的用途是完全一样的,不一定非得哪个放在最前面哪个放在中间。他们最根本的区别在于错误处理的方式不一样。...,PHP 4.0是先把整个程序代码全部编译完成后,再将这些编译好的程序代码一次执行完毕,在编译的过程中不会执行任何程序代码)。...7. require通常放在PHP程序的最前面,PHP程序在执行前,就会先读入require所指定引入的文件,使它变成PHP程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。

59340
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    PHP中定义常量的区别,define() 与 const

    正文 在PHP5.3中,有两种方法可以定义常量: 使用const关键字 使用define()方法 const FOO = 'BAR'; define('FOO','BAR'); 这两种方式的根本区别在于...而define目前是不支持这一功能的,但是该功能会在PHP7中被实现: const FOO = [1, 2, 3]; // 在PHP 5.6中有效 define('FOO', [1, 2, 3])...尤其是在使用define定义大量常量时,PHP的运行速度会变得非常慢。...人们甚至发明了诸如apc_load_constantshide来避免这个问题 与define相比,const能使定义常量的效率提高一倍(在配置有XDebug的开发机器上,这个差异还会更大)。...但是在查询时间上,两者是没有区别的(因为二者用的都是同一个查询表) 最后需要注意的一点是,const可以在class和interface当中使用 ,而define是做不到这一点的: class Foo

    1.1K20

    PHP系列 | PHP中的stdClass是什么?

    简介 stdClass 是 PHP 中的空类,用于将其他类型转换为对象。它类似于 Java 或 Python 对象。...如果该值为 null,则新的实例为空。 array 转换成 object 将使键名成为属性名并具有相对应的值。注意:在这个例子里, 使用 PHP 7.2.0 之前的版本,数字键只能通过迭代访问。...所有使用 new stdClass 的变量,都不能使用方法,即不可能出现 $a->text() 的情况 stdClass 在 php5 版本开始流行起来的,低于php5的版本,尽量或不使用此方法(好像这一条是多余的...中对象的基类 这里需要注意的是,尽管是泛型类,stdClass 并不是 PHP 中对象的基类,我们可以使用 instanceof 关键字来证明这一点。...中对象的基类 3. json_encode() 和 json_decode() json_encode() 和 json_decode() 是专门用于对 JSON 字符串执行操作的函数。

    17410

    MySQL 中InnoDB与MyISAM的区别是什么?

    和 MyISAM 分别是什么,可能都不是非常清楚。...SHOW ENGINES; 三、存储引擎原理 首先针对可能面试会问到的问题「MyISAM 和 InnoDB 两种引擎所使用的索引的数据结构是什么」做一个回答: 都是 B+ 树,不过区别在于: MyISAM...在 MyISAM 中,主索引和辅助索引(Secondary key)在结构上没有任何区别: MyISAM 中索引检索的算法为首先按照 B+Tree 搜索算法搜索索引,如果指定的 Key 存在,则取出其...七、InnoDB与MyISAM的区别 MyISAM不支持事务,MyISAM:强调的是性能,每次查询具有原子性,其执行数度比InnoDB类型更快,但是不提供事务支持。...总结 对于面试题来说,一般只会被要求回答到 InnoDB 和 MyISAM 在使用上的区别,不过如果需要深究一下为什么会有那些区别的话,就需要了解其底层的实现原理,顺便还需要对于 B+ 树有一定的了解,

    55510

    PHP中this,self,parent的区别

    {一}PHP中this,self,parent的区别之一this篇 面向对象编程(OOP,Object OrientedProgramming)现已经成为编程人员的一项基本技能。...这里我主要谈的是this,self,parent 三个关键字之间的区别。从字面上来理解,分别是指这、自己、父亲。...PHP中this,self,parent的区别之二self篇 此篇我们就self的用法进行讲解 首先我们要明确一点,self是指向类本身,也就是self是不指向任何已经实例化的对象,一般self使用来指向类中的静态变量...我们的静态变量与下面对象的实例无关,它只是跟类有关,那么我调用类本身的的,那么我们就无法使用this来引用,因为self是指向类本身,与任何对象实例无关。...{三}PHP中this,self,parent的区别之三parent篇 此篇我们就parent的用法进行讲解。

    2.3K20

    php _initialize()与__construct()的区别

    _initialize()方法是在任何方法执行之前,都要执行的,当然也包括 __construct构造函数。...也就是说如果存在_initialize()函数,调用对象的任何方法都会导致_initialize()函数的自动调用, 而__construct()构造函数仅仅在创建对象的时候调用一次,跟其它方法调用没有关系...__construct这里是双划线,而_initialize()函数是单划线 如果父子类均有_initialize()函数,则子类覆盖了父类的,如果子类没有而父类有,则子类继承父类的。...默认情况下,子类的构造函数不会自动调用父类的构造函数。...在调用子类对象的_initialize()时,也不会导致自动调用父类的_initialize() 实际编写子类的构造函数时,一般都要加上父类构造函数的主动调用parent::__construct(),

    61410

    PHP中header头设置Cookie与内置setCookie的区别

    首先声明,浏览的Cookie操作都是通过HTTP Header(俗称“Http头”) 来实现。所有的服务器与客户端之间Cookie数据传输都是通过Http请求头来操作。...PHP中setCookie(函数的实现),就是对HTTP头进行封装,由此看来 使用 header 与 使用setCookie是一样的。...由于header头信息属于HTTP协议内容,必须先把头信息发送到服务器,再进行数据下载等其他操作,所以在setCookie 与 header 之前不能有任何内容输出(例如:echo/printf等) header...规定 cookie 的名称。 value 必需。规定 cookie 的值。 expire 可选。规定 cookie 的有效期。 path 可选。规定 cookie 的服务器路径。 domain 可选。...规定 cookie 的域名。 secure 可选。规定是否通过安全的 HTTPS 连接来传输 cookie。

    99710

    Shell中的单等号、双等号和-eq

    问: 在 shell 脚本编程中,=,== 和 -eq 之间的区别是什么? 以下内容是否有任何区别?...答: = 和 == 用于字符串比较 -eq 用于数值比较 注意 == 不是 POSIX 兼容的,在 sh(Bourne Shell) 或其兼容的 POSIX shell 中,== 用于字符串比较的操作符不是正式支持的...POSIX 规范和原始的 Bourne Shell 使用单个等号 = 作为字符串比较的操作符。在 Bourne Again Shell(bash) 、ksh 中,则两者都可以使用。...不要省略上述代码中的双引号。)...如果你想编写兼容 POSIX 的脚本,在比较字符串时最好使用单等号 = 或者用双方括号的表达式。 -eq 是条件测试的一部分,用于在 [ ] 或 [[ ]] 结构中判断两个整数是否相等。 #!

    70310

    Java中抽象类与接口的区别是什么?

    抽象类与接口的区别 1. 共同点 都可以包含抽象方法; 2....区别 抽象类是一种“类”,是使用class作为关键字来声明的;而接口是另一种数据,是使用interface作为关键字来声明的; 抽象类中可以有各种权限不同、修饰符不同的属性,也可以包含普通方法、抽象方法...的关系,当普通的类继承了抽象类后,就有义务重写抽象类中的抽象方法,在Java语句中,类之间的继承是1对1的关系;普通的类与接口的关系是”实现“的关系,当普通的类实现了接口后,也有义务重写接口中的所有抽象方法...使用心得 / 装 类,是描述”类别“的;接口,是描述形为模式、行为特征、规范、标准的! 类与类之间是is a的关系;类与接口之间是has a的关系。...Alt + Shift + R 在当前源文件中,对某个变量、方法重命名,操作之前需先选中整个名称 Ctrl + D 删除整行或若干行代码,操作模式与移动整行代码相同 ---- 未完,待续…

    41620

    PHP中abstract 和 interface的区别

    1.php 接口类:interface 其实他们的作用很简单,当有很多人一起开发一个项目时,可能都会去调用别人写的一些类,那你就会问,我怎么知道他的某个功能的实现方法是怎么命名的呢,这个时候php接口类就起到作用了...php class BaseShop implements Shop{ public function buy($gid) { echo('你购买了ID为 :' ....'的商品'); } } 你想想,在一个多人合作的大项目里面,有了接口类是多么的方便,这样你就不用去问别人,你的某某功能的方法名是什么了,当然如果你们喜欢这样我也没有办法。...2.php 抽象类 : abstract 其实抽象类和接口类有一部分很像,记得在哪里看见这样一句话,抽象类就把类像的部分抽出来,这句看上去很搞笑,其实它说出了抽象类的真理,抽象类的 作用是,当你发现你的很多类里面用很多方法你不断的在重复写...而 abstract function 方法和interface有些相似,就是父类中生声明的方法,子类中必须实现,但是没有用abstract声明的方法将成为子类的公共方法,没有必要在子 类中必须实现

    94910
    领券