nowise / uup-site
基于 OOP 主题/模板的页面渲染,具有路由功能。
Requires
- php: >=7.1.0
- nowise/uup-auth: ^2.3
Suggests
- nowise/uup-soap: ^1.2
- nowise/uup-web-component: ^2.0
- dev-master
- 1.2.7
- 1.2.6
- 1.2.5
- 1.2.4
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.6
- 1.1.5
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.39
- 1.0.38
- 1.0.37
- 1.0.36
- 1.0.35
- 1.0.34
- 1.0.33
- 1.0.32
- 1.0.31
- 1.0.30
- 1.0.29
- 1.0.28
- 1.0.27
- 1.0.26
- 1.0.25
- 1.0.24
- 1.0.23
- 1.0.22
- 1.0.21
- 1.0.20
- 1.0.19
- 1.0.18
- 1.0.17
- 1.0.16
- 1.0.15
- 1.0.14
- 1.0.13
- 1.0.12
- 1.0.11
- 1.0.10
- 1.0.9
- 1.0.8
- 1.0.7
- 1.0.6
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.0
- 0.9.8
- 0.9.7
- 0.9.6
- 0.9.5
- 0.9.4
- 0.9.3
- 0.9.2
- 0.9.1
- 0.9.0
This package is auto-updated.
Last update: 2024-09-15 13:46:40 UTC
README
此包是一个微框架,采用面向对象的方法在 PHP 中构建大规模网站和 Web 应用程序。考虑到小内存占用、易用性和快速执行。
控制器直接放置在 public 下,并从合适的基类派生以定义其行为(即公共网页或受保护的 JSON 服务),并负责加载它们的视图。分发器负责从请求路径到控制器的自然路由。
如果公共页面不包含类,则由分发器将其视为简单的视图处理,分发器在渲染之前将其包装在视图控制器中。
快速入门
对于那些急于尝试而无需进一步阅读的人
composer require nowise/uup-site ./vendor/bin/uup-site.sh --bootstrap ./vendor/bin/uup-site.sh --location /myapp --setup --auth --edit --locale --guide --examples
在您的 htdocs 下创建指向 public 的符号链接,并将您喜欢的浏览器指向 /myapp 应该能让您开始
很简单,对吧?
特性
支持多主题,直接渲染页面内容或使用分发器(路由)脚本,并设计这些目标
- 适用于 Web 接口、AJAX 或服务(例如 JSON 或 SOAP 中的 API)
- 响应式设计,具有多个主题
- 小内存占用(每个请求约 500kB)
- 快速请求处理(每个请求小于 0.01 毫秒)
- 支持国际化(I18N)和本地化(L10N)
网站配置
config/defaults.site 文件在包目录(vendor/nowise/uup-site)或网站目录(虚拟主机目录)中查找。默认情况下禁用了认证和编辑支持,在 config/defaults.site 中启用它们。
设置(网站)
推荐的解决方案是使用 uup-site.sh 使用 uup-site 设置实例。通过 composer 安装时位于 vendor/bin 下。安装虚拟主机时,请确保 public 是唯一暴露给外部世界的目录。
cd /usr/local/bin
wget https://nowise.se/oss/uup/site/files/uup-site.sh
要引导和初始化新的虚拟主机
mkdir -p /var/www/example.com && cd mkdir -p /var/www/example.com uup-site.sh --bootstrap uup-site.sh --setup
设置完成后,审查 public 和 config 目录的内容。决定是否使用页面路由(mod_rewrite)。通过将 public 目录定义为文档根(如果开发网站)来完成设置。
有关更多设置选项,包括引导、composer、存档或手动操作,请参阅 https://nowise.se/oss/uup/site/usage/setup/
主题
主题包含在主题目录中,包括公共内容和模板文件。在渲染阶段,在模板目录下查找匹配的主题和模板 (*.ui) 文件。
基础设施
菜单和发布信息可以通过在页面目录中具有自定义文件来定义,也可以通过在页面构造函数中重新定义菜单内容来程序化定义。
请参阅 example/context 了解基础设施示例。请参阅 example/multi 了解程序化定义菜单的示例。网站配置文件对菜单处理也有一定影响。
请参阅 example/context/menus 了解更高级的菜单,例如动态更新页面内容或定义相对于当前站点根的菜单。
控制器、分发和渲染
页面类可以直接渲染或使用路由。使用分发路由是推荐的方法,它还支持视图并提供漂亮的 URL。
渲染(直接)
// // Assume virtual host defines include path to root directory: // require_once('vendor/autoload.php'); use UUP\Site\Page\Web\StandardPage; class IndexPage extends StandardPage { // Define the printContent() member function at least. }; $page = new IndexPage(); $page->render();
渲染(分发)
// // The dispatcher.php (router) has already setup autoloading, no need // to explicit call render() either. // class IndexPage extends StandardPage { // Define the printContent() member function at least. };
源包中的示例目录包含更多示例。建议您的应用程序从提供的基类派生自己的控制器,以支持 JSON 或文件 API。
视图
虽然页面是完整的类,但视图只是包含主要部分内容的简单文件(HTML/PHP片段)。使用路由是渲染视图的推荐方法。
使用标准页面类来渲染视图可以使上下文(即菜单)可用于装饰。视图旨在用于网站,而页面则更针对网络应用(更多控制)。
认证
通过运行uup-site.sh启用认证。需要调整config/auth.inc文件以使用支持的认证器。
uup-site.sh --auth
您需要在config/defaults.site内部启用认证设置。一个控制器可以通过从安全基类派生来强制执行认证。也可以从公共控制器内部程序化地强制执行认证,例如基于请求的视图。
命名空间
默认的调度器设置不支持控制器中的命名空间。如果您想在它们中使用命名空间,请修改public/dispatch.php。
$router = new Router(); $router->setNamespace("\\"); // Use global namespace $router->handle();
如果您的控制器位于public/api/customer中,则在控制器中使用namespace API\Customer。如果您想在命名空间名称中使用应用程序前缀,例如MyApp\Controllers\API\Customer,则定义您的命名空间如下:
$router = new Router(); $router->setNamespace("\\MyApp\\Controllers\\"); // Harmonize with application namespace $router->handle();
地区和翻译
使用uup-site.sh启用地区(gettext)支持
uup-site.sh --locale (i) Edit settings in makefile, then run 'make new-locale' and 'make' in current directory.
这将创建一个地区目录并在当前目录中安装一个makefile。如果网站/应用程序很大,则建议使用多个文本域。
uup-site
├── htdocs/ // Document root
│ ├── dir1/
│ ├── dir2/
... ...
├── locale/ // Support for locale (gettext)
│ ├── dir1.pot
│ ├── dir2.pot
... ...
每个页面都可以在其构造函数中初始化自己的文本域。
class MyPage extends StandardPage { public function __construct() { parent::__construct(_("My page")); $this->locale->setTextDomain("dir2"); } }
在线内容编辑器
通过运行uup-site.sh启用CMS。您需要在config/defaults.site内部安装JavaScript库并调整编辑设置。
uup-site.sh --edit
对于小型安装,可以使用数组定义允许的内容编辑器(在config/defaults.site内部完成)。为了支持例如LDAP,可以通过配置一个可调用的(类或函数)来实现。
// // Naive example support for LDAP using hypotetical object: // 'edit' => array( 'user' => function($user) use($ldap) { return $ldap->exist(array('uid' => $user)); }, )
企业(ISP)
如果您是ISP,可以使用uup-site为您的客户启动多个虚拟主机。有关详细信息,请参阅企业设置页面。
好处包括:
- 每个虚拟主机大约使用200kB的磁盘空间。
- 定义一个可以使用的主题中央库。
- 更新单一点(只是uup-site的共享目录)
更多信息
有关更多信息,请访问项目页面