taeluf / server
使用 taeluf/liaison 和 taeluf/phad 的易于使用的服务器
v0.2.x-dev
2022-06-30 17:05 UTC
Requires
- taeluf/cli: v0.1.x-dev
- taeluf/env: v1.0.x-dev
- taeluf/liaison: v0.6.x-dev
- taeluf/phad: v0.4.x-dev
Requires (Dev)
- league/commonmark: 2.3.x-dev
- taeluf/code-scrawl: v0.8.x-dev
- taeluf/tester: v0.3.x-dev
Suggests
- league/commonmark: 2.3.x-dev: For the markdown filter
This package is auto-updated.
Last update: 2024-09-29 06:20:25 UTC
README
Taeluf's Server | Liaison & Phad
使用我的开源库轻松设置的简易服务器。
示例设置请参阅 test/Server/。
注意:2022年3月24日 !!!
user-ship 还未准备就绪,因此 Phad 的许多功能都没有价值。您可以自己设置用户钩子,但这太一般了。
依赖关系
- php/liaison: 服务器框架
- php/lia/phad: 一个库,可以将纯 HTML(带一些自定义标签)编译成数据库连接的视图。HTML 可以包含 PHP 以进行额外的自定义。
额外内容
- php/env: 用于处理不同的环境(localhost/生产环境)
- php/cli: 简单的 CLI 接口
- php/code-scrawl: 生成此文档
- php/lexer: 生成 AST(由 Code Scrawl 使用)
- php/better-regex: 正则表达式相关内容...但我认为 Code Scrawl 已经不再使用它了...
- php/tester: 测试库
注意
我为自己编写这个。我也写了测试和文档。这意味着它可能适合您使用。
然而,由于我目前专注于解决自己的需求,我可能会在没有警告的情况下弃用或造成破坏性更改。任何重大的破坏性更改可能会是一个新的分支,并增加版本号。但无法保证。
安装
composer require taeluf/server v0.2.x-dev
或在您的 composer.json
{"require":{ "taeluf/server": "v0.2.x-dev"}}
基本设置
- 创建一个 deliver.php 脚本(见下文)
- 创建一些文件夹结构(更好的是查看 test/Server/)以获取完整示例。
- 运行
vendor/bin/tlfserv
以生成错误页面、站点地图(仅从 phad 项目中)以及重新编译 phad 项目 - 查看 liaison & phad 的文档(见上方)以了解如何进行所有操作。祝你好运!
CLI 事务
有关更多信息,请参阅 bin/tlfserv
执行 vendor/bin/tlfserv
以运行所有命令,或单独运行它们
tlfserv error-page
:生成错误页面tlfserv generate-sitemap
:仅生成 PHAD 项目的站点地图(不会生成非 PHAD 路由的站点地图。抱歉)tlfserv recompile-phad
:重新编译所有 PHAD 项目。
文件/文件夹结构
- deliver.php:运行您整个服务器的脚本。
- public:由 liason 自动路由的文件
- phad:包含 phad 的视图
- view:包含 liaison 的简单视图
- file:直接下载的文件(使用更快的路由器并跳过 liaison)
- fastroute:直接执行的脚本(使用更快的路由器并跳过 liaison)
- cache:缓存目录
- sitemap:站点地图文件的位置
示例 deliver.php 脚本
<?php
require(dirname(__DIR__,2).'/vendor/autoload.php');
$_SERVER['HTTP_HOST'] = $_SERVER['HTTP_HOST'] ?? 'localhost';
$debug = true;
$dir = __DIR__;
set_error_handler(
function($errno, $errstr, $errfile, $errline) {
throw new \ErrorException($errstr, $errno, 0, $errfile, $errline);
}
);
$pdo = new \PDO('sqlite:'.$dir.'/db.sqlite');
$server = new \Tlf\Server();
$server->file_route($dir.'/file/');
$server->php_route($dir.'/fastroute/');
$server->init($debug);
$server->enable_phad($dir, $pdo);
$server->enable_analytics($pdo);
// i think $lia is used by the cli
$lia = $server->lia;
$site = $server->addServer($dir);
$server->deliver();
类
class Tlf\Server
在 Liaison & Phad 之上提供(某种程度上)最小层的类,以使它们更容易设置。
常量
属性
static public $IS_TLFSERV_CLI = false;
将 TRUE 设置为阻止 deliver() 分发public bool $debug = false;
如果为true,则打印错误信息并始终重新编译所有内容
请参阅init()进行初始化。public bool $enable_error_route = true;
如果您想实现自己的 /generic-error-page/ 路由,请在调用init()之前将其设置为falsepublic array $phads = [];
phad对象的数组public \Env $env;
环境对象public \Lia $lia;
Liaison对象public \Phad $phad;
最近设置的Phad对象。查看 $this->phads 以获取所有phad实例的列表public \Lia\Package $main;
主要服务器包
方法
public function __construct()
public function init($debug=null)
初始化 liaison。public function load_env(string $file)
加载环境设置文件public function set_cache_dir(string $dir)
public function disable_theme()
禁用通常提供完整HTML文档的主题public function file_route($dir)
快速路由到$dir中的文件public function php_route($dir)
快速路由到$dir中的脚本public function is_request_to(string $url_prefix)
检查请求URI是否以给定的字符串开头public function addServer($dir,$name=null, $url_prefix'/')
为给定目录添加标准的 Liaison 服务器包public function env_pdo()
获取一个包含在您的环境设置文件中定义的mysql连接的pdo对象
设置必须定义
mysql.host, mysql.dbname, mysql.user, & mysql.passwordpublic function phad_item(string $item, array $args = [])
public function enable_phad(string $dir, \PDO $pdo, $phad_class='Phad', $route_prefix'')
public function deliver()
运行$lia->deliver()
并自动处理错误public function debug()
public function enable_analytics(\PDO $pdo)
1. 将当前页面保存到分析- 如果phad已启用,则启用分析路由
class Tlf\Server\Helper
常量
属性
方法
public function markdown_to_html(string $markdown)
如果安装了CommonMark,则将markdown转换为html