PHP中的static 关于静态变量和方法的问题也是面试中经常会出现的问题,这种问题多看手册搞明白原委就能解决,只是确实关于静态变量的问题还是比较绕的,这里我们就结合手册用实际的代码来看!...现在我们回过头来看最早的例子,普通方法中调用静态方法或变量,实际上就是在这个实例化对象中调用了Test::showV(),只是我们使用了self关键字而已。..."\n"; } } CCC::test(); // AAA、CCC、CCC CCC继承了BBB,BBB继承了AAA 在AAA中的foo()方法使用了static::who()来调用who(...说了这么多,也算是把static静态的特性讲解的差不多了。在实际应用中还是要综合考虑,不能因为静态属性方便就全都使用静态属性和方法或者完全不使用,还是要结合各路业务需求进行取舍。...具体代码: https://github.com/zhangyue0503/php/blob/master/newblog/php-static.php
当static用来修饰局部变量的时候,它就改变了局部变量的存储位置,从原来的栈中存放改为静态存储区。...静态成员:静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配内存,所以静态成员不能访问非静态的成员..因为静态成员存在于内存...,所以非静态成员可以直接访问类中静态的成员 参考: https://www.cnblogs.com/li1056822533/p/6396530.html ——————————— d.php <?...————————— php之static静态变量详解 在看别人项目过程中,看到函数里面很多static修饰的变量,关于static修饰的变量,作用域,用法越看越困惑,所以查了下资料。...php static $name = 1; $name++; echo $name; ?> 另外:考虑到PHP变量作用域 <?
php中self与static的区别 通过一些示例,我们可以很容易看出self和static的区别。假定我们有class Car – 它有两个方法,model和getModel。...可以使用关键字static。 static关键字和延迟静态绑定(late static binding) 在PHP5.3中,加入了一个新的特性,叫做延迟静态绑定。它可以帮我们实现多态,解决上面的问题。...在上面的例子中,如果我们使用延迟静态绑定(static),意味当我们调用“Mercedes::model();”时,class Mercedes中的getModel方法将会被调用。...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操作变量的问题。...通过这个简单的例子,我们可以看出两点: self写在哪个类里面,它固定指向的就是当前的这个类 static就是哪个对象调用它,它指向的就是这个调用者 从代码中我们可以看出,B类没有重写selfName(...测试代码: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
: 表示受保护的,只有本类或子类或父类中可以访问; 定义常量也可用 define 定义。...if($a>10){define('LE','hello');} class Demo { //定义常量【自php5.3后】,一个常量是属于一个类的,而不是某个对象的 //不可改变的...const EVENT = 'const'; static $event = 'static'; public $eventPublic = 'public'; private...'; //继承父级中的成员变量后,只能访问公共变量 //私有变量和受保护的变量不能在子类中访问 echo $this->eventPublic...public private protected ================= const static const static public
在php的面向对象编程中,总会遇到 class test{ public static function test(){ self::func(); static::func();...} } Taxi::model(); 得到输出 This is a car model This is a car model 可以发现,self在子类中还是会调用父类的方法 Demo for static...,子类哪怕调用的是父类的方法,但是父类方法中调用的方法还会是子类的方法(好绕嘴。。)...在PHP5.3版本以前,static和self还是有一点区别,具体是什么,毕竟都是7版本的天下了。就不去了解了。...总结呢就是:self只能引用当前类中的方法,而static关键字允许函数能够在运行时动态绑定类中的方法。
嗯,扯远了,我今天只想说说:static 与 yield。 先来说说 static 关键字。本篇只讲静态方法的使用与后期绑定的知识点。...static 什么时候用来修饰方法 static 关键字大家都知道是用来修饰方法与属性的。 那么大家在项目中会在哪些场景下使用它?...static 后期静态绑定 这一点php的文档做了详细的介绍,但是我以前一直很少关注这个地方,基本上都是使用 self:: 的方式进行静态方法与属性的调用。...这里贴出 php 文档中的例子来进行一下讲述 <?...PHP 中 yield 的使用场景 说实话,很长一段时间我并不知道 php 还有这么个语法。直到有一天我在 js 中遇到了这个关键字,感觉这么不明觉厉的东西,世界上最好的语言怎么没有?
我们又知道,static int a;表示在全局区为变量a分配内存,同理我们在数组前面加上static之后,系统也为该数组在全局区分配内存,全局区的总内存比较大,一般会满足我们的需求。...如题:当n*m比较大时,这就是为什么static a[n*m]={0};必须带着static的原因了。 静态分配的,有两种情况: 1....、字段、属性、方法 2.标记为static的就不用创建实例对象调用了,可以通过类名直接点出来 3.static三种用法: 4.用于变量前,表示每次重新使用该变量所在方法、类或自定义类时,变量的值为程序这次运行最后一次为变量赋值时的值...(参数,下面同)) { ~~~~(方法内容,下面同) } void s(....) { ~~~~ } } 当你在其他方法里调用这个类中的方法s,则需先声明这个类的变量如:t sd = new t(......(参数,下面同)) { ~~~~(方法内容,下面同) } static void s(....) { ~~~~ } } 7.当你在其他方法里调用这个类中的方法s,则不用先声明这个类的变量如直接调用方法:
在php中,访问类的方法/变量有两种方法: 1. 创建对象object = new Class(),然后使用”->”调用: 2....如果是方法,除了该方法可访问外,还需要满足: b1) 如果是静态方法,没有特殊条件; b2) 如果是非静态方法,需要该方法中没有使用$this,即没有调用非静态的变量/方法,当然,调用静态的变量/方法没有问题
这篇文章主要介绍了php面向对象中static静态属性和静态方法的调用,实例分析了static静态属性和静态方法的原理与调用技巧,需要的朋友可以参考下 本文实例讲述了php中static静态属性和静态方法的调用...具体如下: 这里分析了php面向对象中static静态属性和静态方法的调用。关于它们的调用(能不能调用,怎么样调用),需要弄明白了他们在内存中存放位置,这样就非常容易理解了。...静态属性、方法(包括静态与非静态)在内存中,只有一个位置(而非静态属性,有多少实例化对象,就有多少个属性)。 <?...php header("content-type:text/html;charset=utf-8"); class Human{ static public $name = "小妹"; public...php里,一个方法被self:: 后,它就自动转变为静态方法;
本文实例讲述了PHP中Static(静态)关键字功能与用法。分享给大家供大家参考,具体如下: 1、什么是static? static 是C++中很常用的修饰符,它被用来控制变量的存储方式和可见性。...但在PHP中用 static 关键字来定义静态方法和属性, 也可用于定义静态变量以及后期静态绑定。 2、为什么要引入static?...php class Foo { public static $my_static = 'foo'; public function staticValue() { return self...php function test() { static $a = 0; echo $a; $a++; } ?...php function test() { static $count = 0; $count++; echo $count; if ($count < 10) { test()
static - PHP 5.3加进来的只得是当前这个类,有点像$this的意思,从堆内存中提取出来,访问的是当前实例化的那个类,那么 static 代表的就是那个类。...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...get_static() { return new static(); } } class B extends A {} echo get_class(B::get_self())...; // A echo get_class(B::get_static()); // B echo get_class(A::get_static()); // A 这个例子基本上一看就懂了吧。
php中的变量作用范围的另一个重要特性就是静态变量(static 变量)。静态变量仅在局部函数域中存在且只被初始化一次,当程序执行离开此作用域时,其值不会消失,会使用上次执行的结果。 <?...php function Test() { $w3sky = 0; echo $w3sky; $w3sky++; } ?...php function Test() { static $w3sky = 0; echo $w3sky; $w3sky++; } ?...PHP function Test() { static $count = 0; $count++; echo $count; if ($count < 10) { Test(); }...PHP function foo(){ static $int = 0;// correct static $int = 1+2; // wrong (as it is an expression
前言 本文主要给大家介绍了关于PHP中static和yield关键字的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 先来说说 static 关键字。...static 后期静态绑定 这一点php的文档做了详细的介绍,但是我以前一直很少关注这个地方,基本上都是使用 self:: 的方式进行静态方法与属性的调用。...这里贴出 php 文档中的例子来进行一下讲述 <?...php class A { public static function who() { echo __CLASS__; } public static function test() { self::...PHP 中 yield 的使用场景 说实话,很长一段时间我并不知道 php 还有这么个语法。直到有一天我在 js 中遇到了这个关键字,感觉这么不明觉厉的东西,世界上最好的语言怎么没有?
1 static 静态变量 1.1 静态变量的使用 static变量也称作静态变量,也叫做类变量 静态变量被所有的对象所共享,在内存中只有一个副本 当且仅当在类初次加载时会被初始化 静态变量属于类 通过类名就可以直接调用静态变量...2 静态方法 static修饰的方法,叫静态方法,也叫做类方法 静态方法中,不能直接访问非静态成员变量和非静态成员方法 静态方法中,不能使用 this 关键字 通过类名可以直接调用静态方法 也可以通过对象名...String classRoom; public static void showClassRoom(){ //静态方法中不能使用this关键字 System.out.println...} 3 静态块 3.1 静态块的使用 静态代码块在类加载时执行,并且只执行一次 静态代码块中不能有this关键字 静态块可以有多个,按照顺序执行 public class Emp{ static...public static void main(String[] args) { double random = random(); //Math中的方法 System.out.println
而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。...(3)static函数与普通函数作用域不同,仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。...对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件。 如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍。...php class staticTest { public function test() { $i = 0; $i++; } public static function testStatic()...可见,虽然没有文章中说的效率提升那么恐怖,性能的提升方面确实提升了一倍左右。 因此还是建议: 如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近1倍。
本文实例讲述了php面向对象程序设计中self与static的区别。分享给大家供大家参考,具体如下: 1、假设我们有个Car类,它有2个方法:model()和getModel()。...因为model()方法只在Car类中定义的,所以对self来说当前类就是Car类。self::getModel()就是调用Car类中的getModel方法。 这似乎不是我们想要的,如何解决呢?...5、解决方案二:把self关键字换成static class Car{ public function model(){ //这里我们使用了关键字static static::getModel...(); } protected function getModel(){ echo 'I am car'; } } 我们只是将Car类中的self替换成了static,并未对Mercedes类作修改...此时我们调用: $mercedes = new Mercedes(); $mercedes- model(); // 输出:I am mercedes 6、小结 在php5.3中加入了一个新特性,叫做延迟静态绑定
本文实例讲述了PHP中abstract(抽象)、final(最终)和static(静态)原理与用法。分享给大家供大家参考,具体如下: abstract(抽象) PHP 5 支持抽象类和抽象方法。...为了兼容 PHP 4,如果没有指定访问控制,属性和方法默认为公有。 由于静态方法不需要通过对象即可调用,所以伪变量 $this 在静态方法中不可用。 静态属性不可以由对象通过 – 操作符来访问。...自 PHP 5.3.0 起,可以用一个变量来动态调用类。但该变量的值不能为关键字 self,parent 或 static。...php class Foo { public static $my_static = 'foo'; public function staticValue() { return self..."\n"; // As of PHP 5.3.0 print Bar::$my_static . "\n"; $bar = new Bar(); print $bar- fooStatic() .
介绍 static-php-cli 是一个用于静态编译、构建 PHP 解释器的工具,支持众多流行扩展。目前 static-php-cli 支持 cli、fpm、embed 和 micro SAPI。.../php 的二进制文件,此文件可分发、可直接使用。该文件编译后会存放在 buildroot/bin/ 目录中,名称为 php,拷贝出来即可。 cd buildroot/bin/ ..../micro.sfx 的文件,此文件需要配合你的 PHP 源码使用。该文件编译后会存放在 buildroot/bin/ 目录中,拷贝出来即可。...在正常的 Linux 发行版和 macOS 系统中,安装 php-fpm 后包管理会自动生成默认的 fpm 配置文件。...,你可以在你的其他代码中引入它们。
领取专属 10元无门槛券
手把手带您无忧上云