studyportals / cms
Studyportals的CMS
1.2.1
2022-01-24 16:06 UTC
Requires
- doctrine/cache: ~1.10.0
- psr/simple-cache: ~1.0.1
- rollbar/rollbar: ~2.1.0
- studyportals/template4: ~1.0.2
Requires (Dev)
- brainmaestro/composer-git-hooks: ~2.8.3
- mockery/mockery: ~1.3.1
- phpmd/phpmd: ~2.8.2
- phpstan/extension-installer: ~1.0.3
- phpstan/phpstan: ~0.12.11
- phpstan/phpstan-mockery: ~0.12.3
- phpstan/phpstan-phpunit: ~0.12.6
- phpunit/phpunit: ~8.5.2
- roave/security-advisories: dev-master
- slevomat/coding-standard: ~6.1.5
- squizlabs/php_codesniffer: ~3.5.4
This package is auto-updated.
Last update: 2022-01-27 08:39:47 UTC
README
Mastersportal.com 等背后的路由和页面组合框架
开发
需要 PHP 7.2。
composer install
过去几年中,测试覆盖率已经大幅提高,但仍未完成。提供了一组广泛的集成测试;许多单元测试仍然缺失...
composer run phpunit
除了 PHPUnit,完全符合 PHPStan,PSR-12 和 PHPMD 的一个子集。
composer run phpstan composer run phpstan:tests # slightly relaxed for tests/** composer run phpcs composer run phpmd composer run phpmd:tests # slightly (more) relaxed for tests/**
Git钩子
此项目使用 composer-git-hooks 来启用以下Git钩子
pre-push– 运行上面列出的所有测试。checkout– 在切换分支时,运行一个 自动更新脚本 并检查仓库是否与 repo-template-php 保持同步。pre-commit– 阻止在master和develop分支中直接提交;使用pull请求代替。
使用CMS
除了下面提供的单个代码片段外,目前尚无文档可提供... 😇
路由逻辑(例如将 path/to/a/page.html 转换为实际要显示的页面)是CMS的一部分。每个具体的实现都必须提供自己的逻辑来处理更广泛的环境。例如,从HTTP服务器接收信号、优雅地处理错误条件、发出HTTP重定向和管理客户端缓存行为等不是由CMS管理的。
CMS的最基本实现可能看起来像这样
$site = $this->siteHandler->createSite(); $this->templateHandler->initTemplate($site); // Set page according to virtual-path (e.g. via Apache RewriteRules) $virtual_path = trim( $this->inputHandler->get(INPUT_GET, 'virtual_path') ?? '' ); $site->getPageTree()->setPageByPath($virtual_path); // Show page echo (string) $site->getPage()->display();
CMS的起源
CMS的起源可以追溯到大约2004年。自2007年中期以来,它一直在为 Mastersportal.com(及其前身 MastersPortal.eu) 提供动力。
它最初是一个完整的 内容管理系统(因此得名及其许多组件),但随着时间的推移,它已经发展成为现在的路由和页面组合框架。
多年以来被 移除 的显著特性
- 一个允许实时修改网站、配置存储在SQL数据库中的拖放式WYSIWYG管理界面 – 被用PHP类定义的静态页面树替换。
- 多语言支持(通过
Accept-Language头部实现),包括一个交互式的WYSIWYG编辑器,允许所有静态界面元素在原地进行翻译——这种方法的复杂性远远超过了其回报;鉴于当前的内容管理系统(CMS)结构,可以在该包之上构建一个更简单但同样有效的解决方案。 - 动态(即运行时)的资产“打包器”,将众多JavaScript和CSS文件缩减为有限的资产“打包”(包括网站范围和单个页面级别)——由一个由Webpack驱动的构建过程所取代(不属于此存储库)。
多年来的杰出贡献者