洛丽糖 - 源码
type: channel
link: https://luolt.cn/tag/%E6%BA%90%E7%A0%81/
items: 图片转base64在线生成器源码
items: php仿typecho文件缓存类
items: 微博客程序使用的垃圾HTTP类（给人都整麻了）
items: php依赖注入容器功能代码教程文档（AI创作）
items: xiunoBBS PDO 数据库封装类文档（AI教程）
items: php仿typecho插件系统功能（ai教程）
items: php简单开发的插件功能代码教程(ai教程)
items: 使用AI写的“Component”类，一个功能丰富的 PHP 组件基类。（未验证是否用）
items: PHP轻量级舔狗一言程序
items: PHP轻量级笑话程序展示

图片转base64在线生成器源码
type: item
date: 2025-11-04T21:47:32+08:00
description: 本地处理，无需上传服务器 | 支持JPG、PNG、GIF、WebP等格式 | 一键复制 在线图片转Base64生成器 在线图片转Base64生成器 本地处理，无需上传服务器 | 支持JPG、PNG、GIF、WebP等格式 | 一键复制 <path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path> <polyline points="17 8 12 3 7 8"></polyline> <line x1="12" y1="3" x2="12" y2="15"></line> 上传图片 ? 点击或拖拽图片到此处上传 支持 JPG、PNG、GIF、WebP、BMP 格式 单文件最大 10MB 图片预览 文件名： - 文件大小： - 尺寸： - 格式： - 输出格式 完整 Base64 (带 Data URI 前缀) 纯 Base64 (不含前缀) HTML img 标签 CSS background 样式 <path d="M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5"></path> <path d="M2 12l10 5 10-5"></path> 开始转换 重置 <path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path> <polyline points="14 2 14 8 20 8"></polyline> <line x1="16" y1="13" x2="8" y2="13"></line> <line x1="16" y1="17" x2="8" y2="17"></line> <polyline points="10 9 9 9 8 9"></polyline> 转换结果 转换中，请稍候... <rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect> <path d="M5 15H4a2 2 0 0 1-2-2v-4a2 2 0 0 1 2-2h1"></path> 复制结果 <path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path> <polyline points="7 10 12 15 17 10"></polyline> <line x1="12" y1="15" x2="12" y2="3"></line> 下载 TXT 上传图片并点击"开始转换"按钮，生成的 Base64 代码将显示在这里 操作成功！

php仿typecho文件缓存类
type: item
date: 2025-11-02T08:01:47+08:00
description: Typecho 的缓存机制主要通过 Typecho_Cache 类实现，它不仅支持文件缓存，还支持内存缓存等多种方式。下面是一个核心的文件缓存实现，包含了缓存的设置、获取、删除和清空功能：<?php /** * Typecho 风格的文件缓存类 */ class Typecho_Cache { /** * 缓存目录 * @var string */ private static $_cacheDir; /** * 初始化缓存目录 * * @param string $cacheDir 缓存目录路径 * @return void */ public static function init($cacheDir = null) { if ($cacheDir === null) { // 默认缓存目录为根目录下的 cache 文件夹 self::$_cacheDir = dirname(__FILE__) . '/cache'; } else { self::$_cacheDir = $cacheDir; } // 如果缓存目录不存在，则创建 if (!is_dir(self::$_cacheDir)) { mkdir(self::$_cacheDir, 0755, true); } } /** * 设置缓存 * * @param string $key 缓存键名 * @param mixed $value 要缓存的数据 * @param integer $expire 过期时间(秒)，0 表示永不过期 * @return boolean */ public static function set($key, $value, $expire = 0) { $cacheFile = self::getCacheFile($key); // 序列化数据，并添加过期时间信息 $data = array( 'data' => $value, 'expire' => $expire > 0 ? time() + $expire : 0 ); return file_put_contents($cacheFile, serialize($data)) !== false; } /** * 获取缓存 * * @param string $key 缓存键名 * @return mixed 缓存数据或 false */ public static function get($key) { $cacheFile = self::getCacheFile($key); // 检查缓存文件是否存在 if (!file_exists($cacheFile)) { return false; } // 读取并反序列化数据 $data = unserialize(file_get_contents($cacheFile)); // 检查缓存是否过期 if ($data['expire'] != 0 && $data['expire'] < time()) { // 缓存过期，删除文件 self::delete($key); return false; } return $data['data']; } /** * 删除指定缓存 * * @param string $key 缓存键名 * @return boolean */ public static function delete($key) { $cacheFile = self::getCacheFile($key); if (file_exists($cacheFile)) { return unlink($cacheFile); } return false; } /** * 清空所有缓存 * * @return boolean */ public static function flush() { $handle = opendir(self::$_cacheDir); if ($handle === false) { return false; } while (($file = readdir($handle)) !== false) { if ($file != '.' && $file != '..') { $filePath = self::$_cacheDir . '/' . $file; if (is_file($filePath)) { unlink($filePath); } } } closedir($handle); return true; } /** * 根据键名生成缓存文件路径 * * @param string $key 缓存键名 * @return string 缓存…

微博客程序使用的垃圾HTTP类（给人都整麻了）
type: item
date: 2025-10-17T13:05:00+08:00
description: 还得是AI狠起来不管你是什么都一刀切，下面这款http请求类最初的AI优化版简直眼里容不得沙子，过滤得真的狠，安全确实安全，就是安全的不正常，反而成了BUG。经过反复修改十几遍终于完成了下面的这版，至于还有没有问题哪就不知道。免费分享给大家看看博主使用AI优化的屎山代码<?php namespace xm; /** * HTTP请求参数过滤类（极致安全+极致性能版） * 支持：GET/POST/COOKIE/SESSION/HTTP头/文件上传参数过滤 * 依赖：PHP 7.4+（支持类型声明、match表达式） */ class http { // -------------------------- 安全常量（编译时确定，无运行时开销） -------------------------- //private const MAX_PARAM_LENGTH = 2048; // 单个参数最大长度（防超长Payload）(太狠了，一刀斩) private const MAX_GET_PARAM_LENGTH = 2048; // GET参数最大长度（严格限制） private const MAX_POST_PARAM_LENGTH = 1048576; // POST参数最大长度（1MB，可按需调整） private const MAX_URL_DECODE = 3; // URL最大解码次数（防DoS，3次足够覆盖大部分场景） private const DANGER_REPLACE = ''; // 危险内容替换为空（比替换为xxx更安全） private const ENCODING_TARGET = 'UTF-8'; // 统一编码（防宽字节） private const ALLOWED_HTTP_METHODS = ['GET', 'POST', 'PUT', 'DELETE']; // 允许的请求方法 //private const ALLOWED_UPLOAD_EXTS = ['jpg', 'jpeg', 'png', 'gif', 'pdf']; // 允许的上传扩展名 // 新增：HTML注释标记（统一匹配，避免硬编码，编译时确定无运行时开销） private const HTML_COMMENT_START = ' '; // 高频危险关键词哈希表（O(1)查找，比正则快10倍以上） private const DANGER_HASH = [ '<script' => true, ' ' => true, 'alert(' => true, 'confirm(' => true, 'prompt(' => true, 'eval(' => true, 'exec(' => true, 'union select' => true, 'insert into' => true, 'update ' => true, 'delete from' => true, 'drop table' => true, '../' => true, '..\\' => true, 'data:text/html' => true, 'data:text/javascript' => true, 'onload=' => true, 'onclick=' => true, 'onerror=' => true, 'svg ' => true, 'math ' => true ]; // -------------------------- 过滤规则（按优先级排序：快规则在前） -------------------------- // 1. 字符串替换规则（比正则快50倍） private const STRING_FILTER = [ 'search' => [ '<script', ' ', '<?php', '?>', '<?', '?>', '../', '..\\', '&#x', '&#0', '&#', '\\x', '%00', '%0a', '%0d' ], 'replace' => [ '<script', ' ', '<?php', '?>', '<?', '?>', '', '', '&#x', '&#0', '&#', '\\x', '', '', '' ] ]; // 2. 预编译正则规则（按功能拆分，减少回溯） private const REGEX_FILTER = [ 'xss' => '/<(?!<!--)[^>]*?(on\w+|xlink:href|data:text)=(["\'])?[^\2]*?\2?[^>]*?>/iS', 'sql' => '/\b(benchmark|slee…

php依赖注入容器功能代码教程文档（AI创作）
type: item
date: 2025-10-11T13:55:00+08:00
description: 这个依赖注入容器基本实现了功能如下：容器（Container）- 服务（Service）- 绑定（Binding）- 单例（Singleton）- 上下文绑定- 延迟加载单文件完整版本 # Dream Kernel Vessel 容器使用文档dream\kernel\vessel\Container 是一个轻量级依赖注入容器，用于管理类的实例化、依赖解析和服务注册，支持单例、上下文绑定、延迟加载等功能。以下是详细使用指南：1. 基本概念容器（Container）：核心类，负责管理服务的注册、解析和依赖注入。服务（Service）：通过容器注册和解析的对象（可以是类实例、闭包或任何值）。绑定（Binding）：将服务标识符与具体实现关联的过程。单例（Singleton）：只实例化一次的服务，后续解析将返回同一个实例。上下文绑定：为特定类提供专属的依赖实现。延迟加载：通过代理类延迟服务的实例化，直到首次调用其方法时才创建实例。2. 安装与初始化命名空间引入所有类位于 dream\kernel\vessel 命名空间下，使用前需通过 use 引入：use dream\kernel\vessel\Container;初始化容器$container = new Container();3. 服务绑定3.1 基础绑定（bind）将服务标识符与具体实现绑定，每次解析都会创建新实例（非单例）。// 绑定类名（默认使用类名作为标识符） $container->bind('logger', \app\services\Logger::class); // 绑定闭包（更灵活的实例化逻辑） $container->bind('cache', function ($container) { return new \app\services\Cache($container->get('config')); }); // 简化绑定（标识符与类名相同时） $container->bind(\app\services\Db::class);3.2 单例绑定（singleton）单例服务只会实例化一次，后续调用 get() 会返回同一个实例。// 绑定单例类 $container->singleton('config', \app\Config::class); // 绑定单例闭包 $container->singleton('db', function ($container) { return new \PDO(...); });3.3 标签绑定（tag/getByTag）为服务添加标签，便于批量获取同一类别的服务。// 为服务添加标签 $container->tag(['logger', 'cache'], 'services'); $container->tag('db', 'services'); // 通过标签获取所有服务 $services = $container->getByTag('services'); // $services 包含 'logger'、'cache'、'db' 三个服务实例4. 服务解析4.1 基本解析（get）通过服务标识符从容器中获取实例。// 解析服务 $logger = $container->get('logger'); $db = $container->get(\app\services\Db::class);4.2 检查服务是否存在（has）if ($container->has('cache')) { // 服务已注册或实例化 }5. 依赖自动注入容器会自动解析类的构造函数依赖，无需手动传递参数。示例：自动解析依赖class UserService { private $db; private $logger; // 构造函数依赖 Db 和 Logger public function __construct(\app\services\Db $db, \app\services\Logger $logger) { $this->db = $db; $this->logger = $logger; } } // 注册依赖的服务 $container->bind(\app\services\Db::class); $container->bind(\app\services\Logger::class); // 解析 UserService 时，容器会自动注入 Db 和 Logger $userService = $container->get(UserService::class);6. 上下文绑定为特定类提供专属的依赖实现（场景：同一接口在不同类中需要不同实现）。示例：上下文绑定// 定义接口和实现 …

xiunoBBS PDO 数据库封装类文档（AI教程）
type: item
date: 2025-10-10T09:50:55+08:00
description: 通过AI把xiunobbs中的数据库操作方式封装成一个类，方面其他框架程序引用使用类似xiunobbs数据库操作

php仿typecho插件系统功能（ai教程）
type: item
date: 2025-10-08T22:58:53+08:00
description: 好的，没问题！我已经帮你把整个插件系统整合好了，这是一个可以直接运行的完整项目代码包。你可以按照下面的目录结构，把这些文件创建好，然后运行 index.php 就能看到效果。项目目录结构plaintextyour_project/├── index.php # 主程序入口├── PluginInterface.php # 插件接口定义├── PluginManager.php # 插件管理器└── plugins/ # 插件目录├── HelloWorldPlugin/ │ ├── HelloWorldPlugin.php │ └── plugin.json └── ContentFilterPlugin/ ├── ContentFilterPlugin.php └── plugin.json 文件内容 index.php (主程序入口)<?php require_once 'PluginInterface.php'; require_once 'PluginManager.php'; // 初始化插件管理器 $pluginManager = new PluginManager(); // 加载 plugins 目录下的所有插件 $pluginManager->loadPluginsFromDirectory('./plugins'); echo "\n--- Main Application Start ---\n\n"; // 模拟原始页面内容 $pageContent = " Welcome to My Website "; $pageContent .= " This is a good article. It has some interesting points. "; echo "Original Page Content:\n"; echo $pageContent . "\n\n"; // 触发 'before_page_render' 钩子 echo "Triggering 'before_page_render' hook...\n"; $pluginManager->triggerHook('before_page_render'); // 应用 'content_filter' 过滤器 echo "Applying 'content_filter' filter...\n"; $filteredContent = $pluginManager->applyFilters('content_filter', $pageContent); echo "\nFiltered Page Content:\n"; echo $filteredContent; echo "\n\n--- Main Application End ---\n"; PluginInterface.php (插件接口)<?php interface PluginInterface { public function __construct($pluginManager, $config); public function initialize(); public function getInfo(); } PluginManager.php (插件管理器) plugins/HelloWorldPlugin/HelloWorldPlugin.php <?php class HelloWorldPlugin implements PluginInterface { private $pluginManager; private $config; public function __construct($pluginManager, $config) { $this->pluginManager = $pluginManager; $this->config = $config; } public function initialize() { $this->pluginManager->registerHook( 'before_page_render', [$this, 'onBeforePageRender'], $this->config['priority'] ); } public function onBeforePageRender() { echo "[HelloWorldPlugin] Hook 'before_page_render' triggered! Priority: " . $this->config['priority'] . "\n"; } public function getInfo() { retu…

php简单开发的插件功能代码教程(ai教程)
type: item
date: 2025-10-08T22:32:00+08:00
description: 这个实现的核心思想是一个插件管理器和一套钩子机制。主程序在关键节点留下"钩子"，插件则可以挂载自己的功能到这些钩子上。首先，创建插件管理器PluginManager.php这是整个插件系统的核心，负责注册插件和管理钩子。然后，创建一个示例插件HelloWorldPlugin.php这个插件会在页面加载时显示一条问候语。<?php class HelloWorldPlugin { public $info = [ 'name' => 'HelloWorldPlugin', 'version' => '1.0', 'description' => '一个简单的示例插件' ]; public function activate($pluginManager) { // 挂载一个函数到 'before_render' 钩子 $pluginManager->addHook('before_render', [$this, 'sayHello'], $this); } public function sayHello() { echo " ? 你好，我是来自 HelloWorldPlugin 的问候！ "; } } 再创建一个处理内容的插件ContentFilterPlugin.php这个插件会修改文章内容，比如把"Typecho"替换成"我的新系统"。<?php class ContentFilterPlugin { public $info = [ 'name' => 'ContentFilterPlugin', 'version' => '1.0', 'description' => '处理文章内容的插件' ]; public function activate($pluginManager) { // 挂载一个函数到 'filter_content' 钩子 $pluginManager->addHook('filter_content', [$this, 'replaceText'], $this); } public function replaceText($content) { // 将内容中的 'Typecho' 替换为 '我的新系统' return str_replace('Typecho', '我的新系统', $content); } } 最后，创建主程序 index.php这是你的应用入口文件，它会初始化插件管理器并运行。<?php require_once 'PluginManager.php'; try { // 初始化插件管理器 $pluginManager = new PluginManager(); // 注册插件 $pluginManager->register('HelloWorldPlugin.php'); $pluginManager->register('ContentFilterPlugin.php'); echo " 我的博客 "; // 触发 'before_render' 钩子 $pluginManager->doAction('before_render'); // 模拟文章内容 $articleContent = "这是我的第一篇文章，我正在使用 Typecho 搭建我的博客。"; // 触发 'filter_content' 钩子来处理内容 $filteredContent = $pluginManager->doAction('filter_content', $articleContent); echo " " . $filteredContent . " "; } catch (Exception $e) { echo "发生错误: " . $e->getMessage(); } 运行结果:当你访问 index.php 时，页面会显示：我的博客 你好，我是来自 HelloWorldPlugin 的问候！ 这是我的第一篇文章，我正在使用 我的新系统 搭建我的博客。你看， HelloWorldPlugin 在 before_render 钩子被触发时执行了 sayHello 方法，而 ContentFilterPlugin 则在 filter_content 钩子中修改了文章内容。这个设计让你的主程序非常干净，所有功能都可以通过插件来扩展。为了让你更方便地开发自己的插件，需要我为你提供一个插件开发模板吗？里面会包含完整的结构和注释，让你能快速上手。

使用AI写的“Component”类，一个功能丰富的 PHP 组件基类。（未验证是否用）
type: item
date: 2025-10-06T21:08:54+08:00
description: （未验证是否用）Component 是一个功能丰富的 PHP 组件基类，提供了完整的属性管理、事件系统、验证机制和渲染功能。它采用面向对象设计，支持继承和扩展，可用于构建各种 UI 组件。<?php /** * 丰富的 PHP 组件基类 * 提供属性管理、事件系统、验证机制和渲染功能 */ class Component { // 组件配置 private $_config = []; // 事件处理器 private $_events = []; // 验证规则 private $_rules = []; // 验证错误信息 private $_errors = []; // 组件标签 protected $tag = 'div'; // 组件内容 protected $content = ''; // 默认配置 protected $defaultConfig = [ 'id' => null, 'class' => '', 'style' => '', 'attributes' => [], 'visible' => true, 'enabled' => true ]; /** * 构造函数 * @param array $config 组件配置 */ public function __construct($config = []) { // 合并默认配置 $this->_config = array_merge($this->defaultConfig, $config); // 如果没有ID，自动生成 if (empty($this->_config['id'])) { $this->_config['id'] = $this->generateId(); } // 初始化 $this->init(); } /** * 初始化方法，子类可重写 */ protected function init() { // 子类可重写此方法进行初始化 } /** * 获取组件ID * @return string */ public function getId() { return $this->_config['id']; } /** * 设置组件ID * @param string $id */ public function setId($id) { $this->_config['id'] = $id; } /** * 获取配置值 * @param string $name 配置名 * @param mixed $default 默认值 * @return mixed */ public function getConfig($name, $default = null) { return isset($this->_config[$name]) ? $this->_config[$name] : $default; } /** * 设置配置值 * @param string|array $name 配置名或配置数组 * @param mixed $value 配置值 */ public function setConfig($name, $value = null) { if (is_array($name)) { $this->_config = array_merge($this->_config, $name); } else { $this->_config[$name] = $value; } } /** * 获取属性值 * @param string $name 属性名 * @param mixed $default 默认值 * @return mixed */ public function __get($name) { // 检查配置中是否存在 if (isset($this->_config[$name])) { return $this->_config[$name]; } // 检查是否有getter方法 $getter = 'get' . ucfirst($name); if (method_exists($this, $getter)) { return $this->$getter(); } // 抛出异常 throw new Exception("获取未定义的属性: " . get_class($this) . "::{$name}"); } /** * 设置属性值 * @param string $name 属性名 * @param mixed $value 属性值 */ public function __set($name, $value) { // 检查是否有setter方法 $…

PHP轻量级舔狗一言程序
type: item
date: 2025-09-22T16:37:00+08:00
description: 这是一款基于php+sqlite环境编写的轻量级笑话程序，非常简约小气的舔狗一言主题类型程序。支持列表点击加载更多内容，和无刷新点赞，踩踏，当然也支持API接口了，API接口地址：域名/?json=sj由于程序是面向过程开发，所以非常适合二次开发，程序代码也非常的少，二次开发不伤脑。程序截图

PHP轻量级笑话程序展示
type: item
date: 2025-09-21T23:32:00+08:00
description: 这是一款基于php+sqlite环境编写的轻量级笑话程序，非常简约小气的笑话主题类型程序。支持列表点击加载更多内容，和无刷新点赞，踩踏。由于程序是面向过程开发，所以非常适合二次开发，程序代码也非常的少，二次开发不伤脑。程序截图