简介:
状态模式,属于行为型的设计模式。当一个对象的内在状态发生改变时,允许改变其行为,这个对象看起来像是改变了其类。
适用场景:
控制一个对象的状态改变过于复杂时,把状态的判断逻辑转移到表示不同状态的一系列类中。
一个对象的行为取决于它的状态,并且在运行时刻根据状态改变它的行为时,方便使用状态模
/**
* @function 动态的设置env文件中某项配置值
* @param $env_path string env文件路径
* @param $key string 配置项
* @param $val string|int 配
使用vscode调试PHP底层C源码
一直想着有机会调试一下php底层代码来着,这周正好心血来潮,就跟着教程配置了一下。本篇文章是基于macOS,可能在编译php源码之前的步骤对使用windows的师傅没啥可参考的。
windows下比较麻烦,主要是在编译php源码这一步,最方便的办法是用dock
简介:
组合模式,属于结构型的设计模式。将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。
组合模式分两种状态:
透明方式,子类的所有接口一致,使其叶子节点和枝节点对外界没有区别。
安全方式,子类接口不一致,只实现特定的接口。
适用场景:
希
简介:
享元模式,属于结构型的设计模式。运用共享技术有效地支持大量细粒度的对象。
适用场景:
具有相同抽象但是细节不同的场景中。
优点:
把公共的部分分离为抽象,细节依赖于抽象,符合依赖倒转原则。
缺点:
增加复杂性。
代码:
//用户类
class User
{
private $nam
简介:
中介者模式,属于行为型的设计模式。用一个中介对象来封装一系列的对象交互。中介者是各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互。
适用场景:
如果平行对象间的依赖复杂,可以使用中介者解耦。
优点:
符合迪米特法则,减少成员间的依赖。
缺点:
不适用于系统出现
简介:
访问者模式,属于行为型的设计模式。表示一个作用于某对象结构中的各元素的操作。它是你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
适用场景:
类中有易于变化的算法。
希望数据结构与数据分离。
优点:
便于增加新的操作,相当于增加一个访问者。访问者模式将有关行为集中到一个访问者对
基于php+webuploader的大文件分片上传,带进度条,支持断点续传(刷新、关闭页面、重新上传、网络中断等情况)。文件上传前先检测该文件是否已上传,如果已上传提示“文件已存在”,如果未上传则直接上传。视频上传时会根据设定的参数(分片大小、分片数量)进行上传,上传过程中会在目标文件夹中生成一个
基于php大文件分片上传至七牛云,使用的是七牛云js-sdk V2版本,引入js文件,配置简单,可以暂停,暂停后支持断点续传(刷新、关闭页面、重新上传、网络中断等情况),可以配置分片大小和分片数量,官方文档https://developer.qiniu.com/kodo/6889/javascri
各位技术大佬,大家好,我是练习时长两年半的代码练习生,Max,喜欢技术,后端和架构。
问题介绍
项目配置了多个域名,如下,php 代码中有获取 $_SERVER['SERVER_NAME'] 的值。
server {
server_name a.demo.com b.demo.com;
0x001 自定义参数
$extra_param = "Some extra param";
Hook::add('response_end', function($params) use ($extra_param) {
Log::info('Extra: '.$extra_param
一、安装PHP
下载:https://windows.php.net/download
我下载的是此时的最新版8.2.3
下载后 解压目录 放到C:/tool下面目录重命名为PHP 目录自己定 我这个tool目录是个人习惯 你可以放到主流的C:Program Files下也可以放到
有时候我们的项目不可能都是同一个PHP版本,需要每个项目都配置不同版本的PHP,宝塔和PHPStudy就是通过以下配置实现的:
Nginx
切割conf(非选)
在nginx.conf添加
include vhosts/*.conf;
这样Nginx会自动引入当前目录->vhosts目录下
PHP使用ZipArchive批量打包压缩文件,并下载。使用php自带的ZipArchive类,可以压缩或解压文件。
首先需要确定已经安装了zip扩展,如果没有安装,请先安装,下载:http://pecl.php.net/package/zip (相应php版本的zip包)
先把需要下载
1,消息队列解决方案:
RabbitMQ:RabbitMQ 是一个开源的 AMQP 消息中间件,提供了高可用、高并发、高吞吐量的消息队列服务。使用 PHP 语言可以通过 AMQP 扩展连接到 RabbitMQ 服务,实现消息的生产、消费和处理。
Redis 队列:Redis 是一个开源的内存数据库
学习swoole需要的前置知识
学习一项新的技术,最重要的就why、what、how。
这门技术是什么,为什么用它,要怎么用它。这篇文档的作用就是为了解释what与why。
php-fpm与swoole的异同
常驻内存
php-fpm模式为什么慢?
swoole的运行方式
同步与异步
什么是同步
PHP部分
官网下载地址:https://www.php.net/downloads.php
我下载的是此时的最新稳定版8.2.3
cd /usr/localwget https://www.php.net/distributions/php-8.2.3.tar.gz
解压
ta
基于PHP spl 遍历文件删除过期的日志文件
一.定义PHP类 , 限制文件扩展 RecursiveFileFilterIterator.class.php
<?php
class RecursiveFileFilterIterator extends FilterIterato
项目介绍
CCENOTE 是一个使用 Vue3 + Laravel8 开发的前后端分离的基于RABC权限控制管理的内容管理系统,由于作者本人比较喜欢写作的原因,因此开发了这个项目,后端使用的PHP的Laravel框架,并且整理了数据层与业务层,相对于laravel本身结构来说,开发起来会更简洁,当
最近在考虑用php的成品源码去搭建一个个人博客网页,于是就想着先在本地运行好后,然后再使用服务器来搭建php的环境和网页。
1.运行工具
因为本地基本只是考虑练习,不考虑真正的去搭建php环境,所以就想到了一个很实用的php小工具,用于测试可以说是一个很不错的选择:phpStudy_p