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

PHP静态(static)方法和静态(static)变量使用介绍

php中,访问的方法/变量有两种方法: 1. 创建对象object = new Class(),然后使用”->”调用: 2....直接调用方法/变量:class::attribute/function,无论是静态/非静态都可以。但是有前提条件: A. 如果是变量,需要该变量可访问。 B....如果是方法,除了该方法可访问外,还需要满足: b1) 如果是静态方法,没有特殊条件; b2) 如果是非静态方法,需要该方法中没有使用$this,即没有调用非静态的变量/方法,当然,调用静态的变量/方法没有问题...静态变量 静态成员只保留一个变量值,而这个变量值对所有的实例都是有效,也就是说,所有的实例共享这个成员。 2....静态方法 静态方法可以直接使用class::… 来调用,而非静态方法需要满足一定限制条件才能使用class::.. 的方法调用,如之前所述

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

php学习之类与对象的静态属性

静态变量定义 静态变量是当前的所有对象共享的变量,任何一个该类的对象去访问它时,取得的都是相同的值,同样任何一个该类的对象去修改它时,也时同样被修改 定义静态变量 访问修饰符 static 静态属性名...; static 访问修饰符 静态属性名; 两种方式都可以 访问静态变量 在的内部访问:有两种方式 self::静态属性名; 名::$静态属性名; ?...-> self是的范畴指向,$this是对象实例,指向对象实例 静态变量的使用注意事项 如果在的内部去使用静态变量,有两种形式,self::$静态变量,   名::$静态变量, 静态属性可以是public...、protected、private 在的外部访问静态属性时 只能是名::$静态属性名,要求是public 静态变量可以在定义时,直接初始化,普通的成员属性也可以 需求: 玩游戏时,当有人加入游戏时加一... 加入游戏'; //在中调用静态变量的方法是self::变量名 self::$num++ ; } //定义个统计方法 public function count1(){ echo '总共有'

62700

PHP与对象后期静态绑定操作实例详解

本文实例讲述了PHP与对象后期静态绑定操作。分享给大家供大家参考,具体如下: 做项目是后期静态绑定非常有用。比如service层单例模式,使用后期静态绑定就非常好实现。...自 PHP 5.3.0 起,PHP 增加了一个叫做后期静态绑定的功能,用于在继承范围内引用静态调用的。...准确说,后期静态绑定工作原理是存储了在上一个“非转发调用”(non-forwarding call)的名。...当进行静态方法调用时,该类名即为明确指定的那个(通常在 :: 运算符左侧部分);当进行非静态方法调用时,即为该对象所属的。...“后期绑定”的意思是说,static:: 不再被解析为定义当前方法所在的,而是在实际运行时计算的。也可以称之为“静态绑定”,因为它可以用于(但不限于)静态方法的调用。 <?

41151

PHP whois查询定义与用法示例

本文实例讲述了PHP whois查询定义与用法。分享给大家供大家参考,具体如下: whois.class.php <?...php class Whois{ private $WHOIS_SERVERS = array( "com" = array("whois.verisign-grs.com","whois.crsnic.net...php require("whois.class.php"); $whois=new Whois; echo $whois- whoislookup("www.zalou.cn"); ?...更多关于PHP相关内容感兴趣的读者可查看本站专题:《php socket用法总结》、《php字符串(string)用法总结》、《PHP数学运算技巧总结》、《php面向对象程序设计入门教程》、《PHP数组...(Array)操作技巧大全》、《PHP数据结构与算法教程》、《php程序设计算法总结》及《PHP网络编程技巧总结》 希望本文所述对大家PHP程序设计有所帮助。

1.4K40

php学习之类与对象的静态方法

基本介绍 当程序员需要对静态属性进行操作时,就需要定义静态方法处理,静态方法是专门操作静态属性的 基本语法 class 名{ 访问修饰符 static function 函数名 (){ //函数体 }...} 说明: 静态方法是在定义的 static是关键词 静态方法是专门用于操作静态属性 静态方法可以直接用名调用,形式是:名::静态方法名(参数) 小案例: <?...php //静态方法 class Person{ public $name; private static $age=18; //静态方法来操作静态属性 public static function...php //编写一个操作数据库的工具,要求只能创建一个对象 class DaoMysql{ //定义需要的属性 //连接数据库 private $mysql_link; //定义一个静态属性,用来的对象实例...php //编写一个操作数据库的工具,要求只能创建一个对象 class DaoMysql{ //定义需要的属性 //连接数据库 private $mysql_link; //定义一个静态属性,用来的对象实例

60000

PHP 静态属性和静态方法

1、基本使用 前面介绍的 PHP 类属性和方法都要在实例化后才能调用(常量属性除外),除此之外,PHP 还提供了静态属性和静态方法,所谓「静态」指的是无需对进行实例化,就可以直接调用这些属性和方法,...静态属性和方法的定义和调用 在 php_learning/oop 目录下新建一个 static.php 文件,编写一段测试代码如下: <?...return self::$WHEELS; } } 在 PHP 中,我们通过 static 关键字来修饰静态属性和方法,这里我们定义了一个静态属性$WHEELS 和静态方法 getWheels...这是因为,和 $this 指针始终指向持有它的引用对象不同,self 指向的是定义时持有它的而不是调用时的,为了解决这个问题,从 PHP 5.3 开始,新增了一个叫做后期静态绑定的特性。...后期静态绑定 后期静态绑定(Late Static Bindings)针对的是静态方法的调用,使用该特性时不再通过 self:: 引用静态方法,而是通过 static::,如果是在定义它的中调用,则指向当前

4.2K10

PHP面向对象-和对象的定义(一)

PHP面向对象编程中,和对象是最基础和最重要的概念。...是一种抽象的数据类型,它定义了一组属性和方法,用来描述某种事物的特征和行为;而对象则是的一个实例,它具有定义的属性和方法,并可以进行相应的操作。1....定义PHP中,定义一个的语法如下:class 名 { // 属性 public $属性名1; private $属性名2; protected $属性名3; // 方法 public...定义可以放在任何一个PHP文件中,但是一般情况下,每个都应该定义在一个单独的文件中,并以名命名,以便于管理和维护。...下面是一个简单的PHP的示例:class Person { public $name; private $age; public function __construct($name, $age

55520

PHP面向对象-和对象的定义(五)

PHP中,多态可以通过接口和抽象来实现。接口是一种定义规范的抽象类型,它只包含方法的声明,不包含实现。可以实现一个或多个接口,必须实现接口中声明的所有方法。...}下面是一个接口的示例:interface Shape { public function getArea(); public function getPerimeter();}在这个示例中,我们定义了一个名为...抽象是一种包含抽象方法的,抽象方法只包含方法的声明,不包含实现。子类必须实现抽象中的所有抽象方法,才能被实例化。...抽象的语法如下:abstract class 抽象名 { // 抽象方法}下面是一个抽象的示例:abstract class Animal { protected $name; // 动物名称...我们还定义了一个函数printShapeInfo(),用于打印形状的面积和周长。在主程序中,我们创建了一个圆形和一个矩形,并分别调用了printShapeInfo()函数,输出了它们的面积和周长。

60141

优雅地创建未定义PHP对象

优雅地创建未定义PHP对象 在PHP中,如果没有事先准备好,需要创建一个未定义的对象,我们可以采用下面三种方式: new stdClass() new class{} (object)[] 首先是...stdClass,这个是一个空的模板,是PHP的内部保留关键字及名。...可以把它相像成是Java中的Object基,在Java中,所有都天然继承自Object基。而PHP中的这个stdClass则是完全的一个空的模板。你自己新创建的并不是它的子类。...但是用这个模板可以创建一个自己未定义的对象。当然,这个对象内部没有任何东西。 1$a = new stdClass(); 2var_dump($a); new class{}呢?...这时候就可以使用上述的方法灵活地生成对象而不用完整的定义模板了。

2.8K10

扩展方法必须在非泛型静态定义

下面的示例演示为 System.String 定义的一个扩展方法。 ...请注意,它是在非嵌套的、非泛型静态内部定义的: C# namespace ExtensionMethods { public static class MyExtensions {...在编译时绑定扩展方法 可以使用扩展方法来扩展或接口,但不能重写扩展方法。 与接口或方法具有相同名称和签名的扩展方法永远不会被调用。 编译时,扩展方法的优先级总是比类型本身中定义的实例方法低。 ...静态 Extensions 包含为任何实现了 IMyInterface 的类型定义的扩展方法。  A、B 和 C 都实现了该接口。...例如,如果你在一个名为 Extensions 的命名空间中具有多个包含扩展方法的静态,则这些扩展方法将全部由 using Extensions; 指令置于范围中。

1.8K10

php静态延迟方法,phpstatic延迟静态绑定_PHP教程

function create(){ return new u2(); } } 这段代码正常工作是没问题,但大量重复的代码会很烦人 我不想在每个子类中添加create方法,如果把create方法放在超U...on line 21 因此self被解析为定义create的U,而不是解析为调用self的u1。...php5.3之前,在这方面都有严格的限制,产生过很多笨拙的解决方案,php5.3引入了延迟静态绑定 及使用 关键字 static static类似self,但它指的是被调用的而不是包含。...} class u1 extends U{ } class u2 extends U{ } u1::create(); static不仅可以用于实例化,和self,parent一样还可以作为静态方法的调用标识符...,甚至是从非静态上下文中调用 abstract class U{ private $group; public function __construct(){ $this->group=static

1K10

静态静态方法、静态变量的区别

引言 一直疑惑静态静态方法、静态变量的内存驻用情况。今天就写了个Demo来深入八一八他们的区别和注意点。...为了演示方便,方法名和变量名采取中文命名 先上结论 静态变量 只在初始化时加载一次 静态方法和静态方法语法糖 实时加载里面的内容 只读属性 实时加载里面的内容 附有初始值的属性语法糖 只在初始化时加载一次...请看代码 代码 先看测试Demo 1.非静态静态方法 /// /// 非静态 /// public class TestCommonService...ConfigHelper.TryGetOtherProject(ProjectsEnum.SurpriseGamePollApi, "ConfigId", "")}"; } } 2.静态静态方法.../// /// 静态 /// public static class TestStaticService {

1.6K10

PHP后期静态绑定

在看到后期静态绑定这个词的时候,感觉挺官方的,不太好理解,这里为我权当做个笔记了 即在的继承过程中,使用的不再是继承的.而是调用的,通过static关键字来实现,"static"不在被解析定义为当前方法所在的...,而是在实际运行时计算得到的,即为运行时最初调用的,虽然称为后期静态绑定 但是并不局限于静态方法的调用 class A { public static function call()...::test(); // 输出 class A class B 在上面的实例中,在调用test() 函数的时候,"self::"是直接调用的本类中的方法,而static是根据调用test()函数的来决定..."static::"的值,因此static的值只有在调用时才能确定下来.这里需要注意的是,static并不限于静态方法的调用,它同样适用于非静态方法,调用的方式如上一致,是在调用时动态确定的,下面给出例子

92910

PHP接口(interface)的定义、特点和应用示例

本文实例讲述了PHP接口(interface)的定义、特点和应用。分享给大家供大家参考,具体如下: 一、接口的定义: 简单形象的说,接口是的模板,定义实现它的需要实现哪些功能。...二、接口的特点: 接口通过“interface”关键词来定义; 上下级接口可以通过“extends”关键词继承; 接口所有方法都是“public”权限(爱E族); 接口可以定义常量成员,但不能定义变量成员...; 通过“implements”关键词来实现接口,必须完全实现接口定义的所有功能; 一个可以同时“implements”(实现)一个到多个接口; 三、为什么需要接口:   PHP 是单继承,也就是不支持多继承...,当一个需要多个的功能时,继承就无能为力了,为此 PHP 引入了的接口技术。...on line xxx 更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结

99410

静态的原罪

什么是静态 所谓静态指的是无需实例化成对象,直接通过静态方式调用的。代码如下: <?...静态的问题 本质上讲,静态是面向过程的,因为通常它只是机械的把原本面向过程的代码集合到一起,虽然结果是以的方式存在,但此时的更像是一件皇帝的新衣,所以可以说静态实际上是披着面向对象的皮儿,干着面向过程的事儿...> 有了变量的介入,可以在运行时设定具体使用哪个静态: <?php Article::setDao('MockArticleDAO'); Article::save(); ?...补充说明,利用动态语言的特性,其实可以简单的通过require一个不同的定义文件来实现Mock,但这样做同样有弊端,设想我们在脚本里需要多次变换实现方式,但实际上我们只有一次require的机会,否则就会出现重复定义的错误...… 当然,静态有好的一面,比如说很适合实现一些无状态的工具,但多数时候,我的主观倾向很明确,多用对象,少用静态,避免系统过早的固化。顺便说一句,希望别有人告诉我静态类比对象快之类的说教,谢谢。

32620
领券