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

PHP 静态属性和静态方法

1、基本使用 前面介绍的 PHP 类属性和方法都要在类实例化后才能调用(常量属性除外),除此之外,PHP 还提供了静态属性和静态方法,所谓「静态」指的是无需对类进行实例化,就可以直接调用这些属性和方法,...静态属性和方法的定义和调用 在 php_learning/oop 目录下新建一个 static.php 文件,编写一段测试代码如下: 静态属性和方法可以直接通过类引用,所以又被称作类属性和类方法(相应的,非静态属性和非静态方法需要实例化后通过对象引用,因此被称作对象属性和对象方法),静态属性和方法可以通过 类名::属性/方法 的方式调用...PHP_EOL; 如果是在类内部方法中,需要通过 self:: 引用当前类的静态属性和方法,就像常量一样,因为静态属性和方法无需实例化类即可使用,而没有实例化的情况下,$this 指针指向的是空对象,...,后者实例化后不影响类方法的调用,在上述代码中,我们将静态方法 printCar 调整为通过 sprintf 函数返回格式化字符串,然后在魔术方法 __toString 方法中调用,作为该非静态方法的返回值

4.3K10

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

php5.3之前,在这方面都有严格的限制,产生过很多笨拙的解决方案,php5.3引入了延迟静态绑定 及使用 关键字 static static类似self,但它指的是被调用的类而不是包含类。...在以下例子中u1::create将生成u1对象,而不是实例化U对象 abstract class U{ public static function create(){ return new static...(); } } class u1 extends U{ } class u2 extends U{ } u1::create(); static不仅可以用于实例化,和self,parent一样还可以作为静态方法的调用标识符...,甚至是从非静态上下文中调用 abstract class U{ private $group; public function __construct(){ $this->group=static...static function create(){ return new u1(); } } class u2 e… 本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉 本文系统来源:php

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

    PHP后期静态绑定

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

    95010

    PHP面向对象-静态属性和静态方法(二)

    静态属性和方法的限制虽然静态属性和静态方法具有很大的灵活性,但它们也有一些限制。下面是一些常见的限制:静态属性和方法无法访问非静态属性或方法。...如果您需要在静态属性或方法中访问非静态属性或方法,则需要使用“self”关键字来引用当前类。静态属性和方法的可见性必须是公共的(public)。...这是因为静态属性和方法是与类本身相关的,而不是与类的实例相关的。因此,它们必须是公共的,以便在不实例化类的情况下访问。静态属性和方法不能通过继承进行覆盖。...这意味着,静态属性和方法在脚本运行期间只被实例化一次,并在整个脚本运行期间保留其值。如果您需要在脚本运行期间更改静态属性或方法的值,则必须显式地重新分配它们。...静态属性和方法的示例下面是一个简单的示例,展示了如何在PHP中使用静态属性和方法:class Car { public static $numCars = 0; public $make; public

    66731

    PHP面向对象-静态属性和静态方法(一)

    静态属性静态属性是与类本身相关的数据。在PHP中,静态属性使用关键字“static”定义,并且可以通过类名直接访问。静态属性与类的实例无关,因此可以在不实例化类的情况下使用。...以下是一个简单的PHP类示例,其中包含一个静态属性:class Counter { public static $count = 0; public function increment() {...这意味着,无论在类的哪个方法中修改静态属性的值,该值都将被保留,直到脚本运行结束或被显式地重新分配。静态方法静态方法是与类本身相关的行为。...在PHP中,静态方法使用关键字“static”定义,并且可以通过类名直接调用。静态方法也与类的实例无关,因此可以在不实例化类的情况下使用。...以下是一个简单的PHP类示例,其中包含一个静态方法:class Calculator { public static function add($a, $b) { return $a + $b;

    80531

    页面静态化

    静态化的优势 (1)提高页面的打开速度 直接访问静态页面,无需任何动态处理,打开速度大幅提高 (2)降低服务器的访问压力 不需要应用服务器对动态程序的计算,也不需要连接数据库,极大降低系统压力 (3)有利于搜索引擎优化...搜索引擎喜欢静态页面,喜欢打开快的页面 (4)使网站更安全 减少使用动态页面的安全隐患,例如sql注入对静态页面是没用的 静态化策略 可以根据页面的具体情况,决定静态化整个页面,还是静态化局部 例如首页...,变化的频率一般不大,而且访问率非常高,比较适合整个页面静态化 例如详情页,一般详情本身不太会常变,但评论信息可能经常变化,可以把页面静态化,但评论部分使用javascript进来动态显示 静态化实现案例

    1.8K70

    PHP静态延迟绑定和普通静态效率的对比

    PHP静态延迟绑定和普通静态效率的对比 只是一个简单的小实验,对比了下 延迟绑定 和 非延迟的效率 延迟绑定主要就是使用 static 关键字来替代原来的 self ,但功能非常强大了 实验代码: class...() { return self::$cc4; } public static function n5() { return self::$cc5; } } 上面总共 A 、B 、C 三个类,里面全是静态成员变量和方法...,其中 A 类是使用了静态延迟, B 类是非延迟, C 类是继承A类实现了静态成员变量和方法的延迟绑定。...过程也不多说了,环境是 PHP5.4.27 直接上测试结果: 有两种情况, 当只有 A、B类(也就是不让任何类继承A类)时,效率上几乎没有差别的 当A类被C类继承了之后,使用静态延迟绑定的A类性能将会比...类有了继承的类就会变慢) 循环十万次,耗时在 2.8s ~ 3.2s 之间 时间差距在 0.3 秒左右,应该还是可以忽略不计了吧 补充个:后来加了些测试方法,如果 C 类继承 A 类后,重载了部分 A 类中的静态成员变量

    63730

    理解PHP的延迟静态绑定

    使用(static)关键字来表示这个别名,和静态方法,静态类没有半毛钱的关系,static::不仅支持静态类,还支持对象(动态类)。...转发调用 所谓的“转发调用”(forwarding call)指的是通过以下几种方式进行的静态调用:self::,parent::,static:: 以及 forward_static_call()。...非转发调用 那么非转发调用其实就是明确指定类名的静态调用(foo::bar())和非静态调用($foo->bar()) 后期静态绑定原理 后期静态绑定工作原理是存储了在上一个“非转发调用”(non-forwarding...who() { echo __CLASS__; } public static function test() { static::who(); // 后期静态绑定从这里开始...\n"; } } C::test(); 输出: A C C 分析:运行C::test()会调用C继承自B的test方法,这个方法中首先执行的是A中的foo方法,此时属于静态方法调用,static

    1.3K20

    php源码审计_静态代码审计

    最近在学PHP代码审计,那就将学习的笔记都整理一遍吧~ 前期准备: 当然,最基本的前提是至少大致学过PHP的语法。...变量跟踪的过程: 正向跟踪——通过变量找函数 逆向跟踪——通过函数找变量 常见的INI配置: 1、php INI文件: PHP 的配置文件一般是 php.ini 文件 php.ini 文件必须命名为’php.ini...在php.ini中可以使用环境变量。Apache Web服务器在启动时,会把目录转到根目录,这将导致PHP尝试在根目录下读取php.ini,若存在的话。...还可以在httpd.conf中覆盖php.ini的值以进行更灵活的配置:php_value name value。PHP常量仅能在php.ini中使用,在httpd.conf中必须使用相应的掩码值。...若禁用,就必须使用PHP代码开始标志的完整形式(php?>)。

    9.6K20

    typecho完全静态化

    前言 众所周知,typecho是一款轻量的博客程序,响应快,占用小,是一款收人喜爱的程序,但是静态化typecho可以让你博客起飞,不仅可以当静态备份使用,还可以优化seo,利于cdn缓存等等 这边会提供...3种静态方案,供大家选择:sunglasses: 首页静态化 可以让首页提前生成html文件,对于第一次打开有巨大帮助 静态化 你可以有2台服务器协作完成此操作 1台为html存放服务器(静态服务器) 1台为你的博客服务器(动态服务器) 步骤1 在静态服务器安装php,并创建 php文件,代码参考如下 php staticpass.php 会采集html,如果你的博客页面很多,对博客服务器压力比较大,慎重运行,如果采集服务器进IP黑名单,可以设置白名单。...然后你可以安装宝塔或者直接安装web服务器,将运行目录设置在采集完的目录 我的静态采集成功实例 静态web :https://static.fbk.ink 采集对象:https://fbk.ink 拓展使用

    1.5K10

    实现页面静态化,PHP是如何实现的,你又是如何实现的

    在PHP网站开发中为了网站推广和SEO等需要,需要对网站进行全站或局部静态化处理,PHP生成静态HTML页面有多种方法,比如利用PHP模板、缓存等实现页面静态化。...PHP静态化的简单理解就是使网站生成页面以静态HTML的形式展现在访客面前,PHP静态化分纯静态化和伪静态化,两者的区别在于PHP生成静态页面的处理机制不同。...方法1:利用PHP模板生成静态页面 PHP模板实现静态化非常方便,比如安装和使用PHP Smarty实现网站静态化。 在使用Smarty的情况下,也可以实现页面静态化。...php $out1 = "PHP网站静态化教程欢迎访问,本文主要介绍PHP网站页面静态化的方法PHP网站静态化教程" . "" . "欢迎访问脚本之家,本文主要介绍PHP网站页面静态化的方法" .

    1.5K40

    JSP页面静态化

    今天说说jsp页面静态化,知道静态化的朋友都不陌生,说白了就是访问后缀是html 而不是jsp。 没听说过静态化的朋友会问为啥要这么做,jsp访问好好的 为啥多此一举 好处:     1....这也是有些程序在没有真正实现 静态化的时候,提供了伪静态的访问方式,伪静态对服务器性能和访问速度没有提升,仅仅是在seo方向有一定作用。...具体说说怎么处理, 这里以java web为例讲解,因为我对php,asp研究没有jsp深。...好了具体的内容就讲到这里了,这就是页面静态化。...直接读取生成的静态html列表文件来生成列表, 这个挺好的,不用去查询数据库, 文件的操作会更好 【推荐】 虽说静态化有很多好处,但是也要结合实际情况,一天没有几个人访问的网站我觉得就没必要了, 主要适用于高并发

    5.8K40

    利用php新特性过静态查杀

    原因是突然想到既然php7.1不能利用可变函数的assert,那就利用php7的新特性来绕过查杀正则,最终绕过某盾和“某d0g”。 实验环境在7.1.9,所有马儿在php7以下的环境均不能使用。...PHP7.0.x [php手册-php7.0.x新特性]( https://www.php.net/manual/zh/migration70.new-features.php) 返回值类型申明 php7...接下来看看7.1的特性吧 php7.1.x [php手册-php7.0.x新特性]( https://www.php.net/manual/zh/migration71.new-features.php...`$c='a';$d='b';` 这样,就可以用这个少用的特性,来绕过静态查杀 首先写一个最简单的: 静态查杀。 还可以利用 `太空船操作符(组合比较符)`,`整数除法函数 intdiv()`等来绕过动态查杀。 这里给D哥的规则库又能添加几条了。

    93220
    领券