1、基本使用 前面介绍的 PHP 类属性和方法都要在类实例化后才能调用(常量属性除外),除此之外,PHP 还提供了静态属性和静态方法,所谓「静态」指的是无需对类进行实例化,就可以直接调用这些属性和方法,...静态属性和方法的定义和调用 在 php_learning/oop 目录下新建一个 static.php 文件,编写一段测试代码如下: 静态属性和方法可以直接通过类引用,所以又被称作类属性和类方法(相应的,非静态属性和非静态方法需要实例化后通过对象引用,因此被称作对象属性和对象方法),静态属性和方法可以通过 类名::属性/方法 的方式调用...PHP_EOL; 如果是在类内部方法中,需要通过 self:: 引用当前类的静态属性和方法,就像常量一样,因为静态属性和方法无需实例化类即可使用,而没有实例化的情况下,$this 指针指向的是空对象,...,后者实例化后不影响类方法的调用,在上述代码中,我们将静态方法 printCar 调整为通过 sprintf 函数返回格式化字符串,然后在魔术方法 __toString 方法中调用,作为该非静态方法的返回值
在看到后期静态绑定这个词的时候,感觉挺官方的,不太好理解,这里为我权当做个笔记了 即在类的继承过程中,使用的类不再是继承的类.而是调用的类,通过static关键字来实现,"static"不在被解析定义为当前方法所在的类...,而是在实际运行时计算得到的,即为运行时最初调用的类,虽然称为后期静态绑定 但是并不局限于静态方法的调用 class A { public static function call()...self::"是直接调用的本类中的方法,而static是根据调用test()函数的类来决定"static::"的值,因此static的值只有在调用时才能确定下来.这里需要注意的是,static并不限于静态方法的调用...,它同样适用于非静态方法,调用的方式如上一致,是在调用时动态确定的,下面给出例子 class A { public function call() { echo "instance
静态属性和方法的限制虽然静态属性和静态方法具有很大的灵活性,但它们也有一些限制。下面是一些常见的限制:静态属性和方法无法访问非静态属性或方法。...如果您需要在静态属性或方法中访问非静态属性或方法,则需要使用“self”关键字来引用当前类。静态属性和方法的可见性必须是公共的(public)。...这是因为静态属性和方法是与类本身相关的,而不是与类的实例相关的。因此,它们必须是公共的,以便在不实例化类的情况下访问。静态属性和方法不能通过继承进行覆盖。...这意味着,静态属性和方法在脚本运行期间只被实例化一次,并在整个脚本运行期间保留其值。如果您需要在脚本运行期间更改静态属性或方法的值,则必须显式地重新分配它们。...静态属性和方法的示例下面是一个简单的示例,展示了如何在PHP中使用静态属性和方法:class Car { public static $numCars = 0; public $make; public
要在PHP中开启伪静态,你可以使用以下步骤: 创建一个.htaccess文件(如果尚未存在)在你的网站根目录下。这是Apache服务器上的一个配置文件,用于处理URL重写和伪静态规则。.../index.php [L] 这段代码将启用URL重写,并将所有请求重定向到index.php文件。...现在,你的PHP应用程序应该能够使用伪静态URL进行访问了。...你可以将链接中的index.php部分替换为实际的页面名称,例如example.com/page将解析为example.com/index.php?page=page。...请注意,伪静态的实现方式可能因服务器配置和使用的PHP框架而有所不同。上述步骤提供了一种常见的实现方式,但具体细节可能需要根据你使用的特定设置进行调整。
静态文件缓存一般是指在web 应用中,将图片、js、css、视频、html等静态文件或资源保存到磁盘中,以提高资源响应时间,减少服务器压力和资源开销的一门缓存技术。 实现静态缓存 php class File { private $_dir; public function __construct() { $this->_dir =.../files'; } /** * 静态缓存的文件处理 * @param string $file 文件名 * @param string $value 文件内容...* @param string $path 自定义静态文件存放路径 * return string 返回值为文件内容 */ public function cacheData...生成静态缓存文件 $file = new File; $data=file_get_contents(dirname(__FILE__).'/'.'
静态属性静态属性是与类本身相关的数据。在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;
下面这段代码是一个用PHP编写的网站首页静态化程序,代码并非站长本人所写,只是在一个项目中看到的。这个方案是将首页内容存入到一个磁盘文件中,需要时从这个文件中取出内容并输出。...php $cache_dir = "./"; $cache_filename = "index.tmp"; $cache_url = "http://www.sunbloger.com/index_test.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 类中的静态成员变量
今天继续带来Demi的SpringBoot专题教程:静态化。 thymeleaf模板 SpringBoot中默认使用thymeleaf模板引擎整合html。 SpringBoot不建议使用jsp。
使用(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
mod_rewrite是Apache的一个非常强大的功能,它可以实现伪静态页面。下面我详细说说它的使用方法!对初学者很有用的哦!...好吧,现在我们可以实现伪静态页面了,写下一下的规则: RewriteEngine on RewriteRule ([a-zA-Z]{1...,})-([0-9]{1,}).html$ index.php?...action=$1&id=$2 ([a-zA-Z]{1,})-([0-9]{1,}).html$是规则,index.php?...我们写一个处理的PHP脚本: index.php PHP代码php echo ‘你的Action是:’ .
静态化的优势 (1)提高页面的打开速度 直接访问静态页面,无需任何动态处理,打开速度大幅提高 (2)降低服务器的访问压力 不需要应用服务器对动态程序的计算,也不需要连接数据库,极大降低系统压力 (3)有利于搜索引擎优化...搜索引擎喜欢静态页面,喜欢打开快的页面 (4)使网站更安全 减少使用动态页面的安全隐患,例如sql注入对静态页面是没用的 静态化策略 可以根据页面的具体情况,决定静态化整个页面,还是静态化局部 例如首页...,变化的频率一般不大,而且访问率非常高,比较适合整个页面静态化 例如详情页,一般详情本身不太会常变,但评论信息可能经常变化,可以把页面静态化,但评论部分使用javascript进来动态显示 静态化实现案例
object(aClass)#1 (0) { } object(bClass)#1 (0) { } 以上aClass和bClass继承于base这个抽象类,但是在两个子类中同时实现了create()这个静态方法...于是为了解决这个问题,php5.3中引入了延迟静态绑定这个概念。...var_dump(bClass::create()); 这个代码与之前的几乎一致,不同点在于将self换成了static这个关键字,static会解析为子类,而非父类,这样就可以解决上面遇到的问题,这就是php...的延迟静态绑定。...object(aClass)#1 (0) { } object(bClass)#1 (0) { } [参考文献]深入PHP面向对象、模式与实践
引言在现代 Web 开发中,静态站点生成(SSG)已成为提升性能和 SEO 的关键技术。...Next.js 推出的增量静态再生(ISR)更是革新了传统 SSG 的工作方式,让我们能够在保持静态页面性能优势的同时,实现内容的动态更新。...与传统 SSR 相比,SSG 的优势在于:极致性能:无需服务端计算,CDN 直接返回 HTMLSEO 友好:搜索引擎可直接抓取完整内容成本更低:静态托管费用远低于动态服务器但传统 SSG 有个致命缺陷:...当用户访问过期页面时:立即返回旧的静态页面(保证响应速度)后台触发重新生成下次请求返回新页面这种" stale-while-revalidate "策略兼顾了性能与时效性。...它让我们既能享受静态页面的性能红利,又能保持内容的及时更新。掌握 ISR,是现代前端工程师的必备技能。
前言 众所周知,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 拓展使用
目前企业中:主要用Freemarker做静态页面或是页面展示 使用Freemarker所用到的jar 把下载到的jar包(freemarker-2.3.9.jar)放到\WebRoot\WEB-INF\...模板 + 数据模型 = 输出 第一步:Freemarker环境搭建 创建FMDemo类 //第一步:实例化Freemarker的配置类 Configuration conf
在PHP网站开发中为了网站推广和SEO等需要,需要对网站进行全站或局部静态化处理,PHP生成静态HTML页面有多种方法,比如利用PHP模板、缓存等实现页面静态化。...PHP静态化的简单理解就是使网站生成页面以静态HTML的形式展现在访客面前,PHP静态化分纯静态化和伪静态化,两者的区别在于PHP生成静态页面的处理机制不同。...方法1:利用PHP模板生成静态页面 PHP模板实现静态化非常方便,比如安装和使用PHP Smarty实现网站静态化。 在使用Smarty的情况下,也可以实现页面静态化。...php $out1 = "PHP网站静态化教程欢迎访问,本文主要介绍PHP网站页面静态化的方法PHP网站静态化教程" . "" . "欢迎访问脚本之家,本文主要介绍PHP网站页面静态化的方法" .
页面静态化 页面静态化 什么是页面静态华 将动态页面转化成静态的html,降低与数据库的交互次数,提高页面的访问速度 就是服务器在请求来之前把已经固定好的东西先编译好了,等请求来了再动态的填数据,不要等请求来了什么都没做忙得半死...利用第三方提供的模板引擎,生成对应的html thymeleaf freemark Velocity 为什么要使用网页静态化技术 网页静态化技术和缓存技术的共同点都是为了减轻数据库的访问压力...而网页静态化比较适合大规模且相对变化不太频繁的数据。...另外网页静态化还有利于SEO。...freemaker模板引擎可以通过模板和数据生成静态化页面.
介绍 static-php-cli 是一个用于静态编译、构建 PHP 解释器的工具,支持众多流行扩展。目前 static-php-cli 支持 cli、fpm、embed 和 micro SAPI。...Windows 高度自定义的代码 patch 功能 自带编译依赖管理 提供由自身编译的独立 spc 二进制(使用 spc 和 box 构建) 支持大量 扩展 整合 UPX 工具(减小二进制文件体积) 使用 静态...在线构建(使用 GitHub Actions) 使用 GitHub Action 可以方便地构建一个静态编译的 PHP,同时可以自行定义要编译的扩展。 Fork 本项目。.../bin/spc download --all --debug 不同 SAPI 的使用 使用 cli php-cli 是一个静态的二进制文件,类似 Go、Rust 语言编译后的单个可移植的二进制文件。...另外,有关如何使用此功能的高级示例,请查看如何使用它构建 FrankenPHP 的静态版本。
原因是突然想到既然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哥的规则库又能添加几条了。