raphhh/puppy

使用 Twig 创建网站的微型框架

安装: 76

依赖: 0

建议: 0

安全: 0

星标: 8

关注者: 3

分支: 0

公开问题: 0

类型:项目

1.1.0 2015-04-19 20:23 UTC

This package is auto-updated.

Last update: 2024-08-25 21:59:03 UTC


README

Latest Stable Version Build Status Scrutinizer Quality Score Code Coverage Total Downloads License

Puppy 是一个用 PHP 构建的微型框架,帮助您使用 Twig 模板创建网站!

使用 Puppy,您可以直接在 Twig 中构建网站,无需处理路由或配置问题。Puppy 即插即用:您只需实现您的 HTML 代码即可。

Puppy 使用简单的路由系统,您可以轻松扩展以添加自己的行为并获得更多交互性。例如,您可以使用 Puppy 创建一个表单,并在后端处理。

资源

网站

http://www.puppyframework.com/

代码

核心

模块

测试

关于

Puppy 是一个运行 Puppy\Application 的骨架。它使用 Puppy\Config 作为配置管理器。

它包括一些默认模块

安装

使用 Composer 下载 Puppy

$ composer create-project raphhh/puppy path/to/my/project

文件架构

├── bin
|   ├── build
|   └── run
├── config
|   ├── dev.php
|   ├── global.php
|   └── tets.php
├── public
|   ├── .htaccess
|   ├── index.php
|   └── robots.txt
├── src
├── templates
|   └── public
|       └── index.html.twig
├── tests
├── vars
├── vendor
├── .editorconfig
├── .gitattributes
├── .gitignore
├── .scrutinizer.yml
├── .travis.yml
├── composer.json
├── composer.lock
├── LICENSE
├── phpunit.xml.dist
├── puppy
└── README.md
  • "bin" 包含您可以在控制台中通过命令 "puppy" 启动的可执行文件。
  • "config" 包含所有您的配置文件。
  • "public" 是 Web 入口点。
  • "src" 包含所有您的 PHP 代码。
  • "templates" 包含您的 twig 文件。它由 "静态路由" 模块使用。
  • "tests" 包含所有您的 PHP 测试。有关更多信息,请参阅 PHPUnit
  • "vars" 是一个临时文件夹,包含缓存等。
  • "vendor" 包含所有您的 PHP 依赖项。有关更多信息,请参阅 Composer

运行演示

使用内置 PHP 服务器

在您的控制台中使用 run 命令

$ puppy run

然后,您可以在 http://localhost:8080 的浏览器中启动 Puppy。

您还可以指定您要运行开发环境(无缓存)。

$ puppy run dev

使用任何服务器

首先,您需要知道 Puppy 的公共 HTTP 访问是目录 '/public'。这是您放置 CSS 或 JavaScript 的位置。

如果 Puppy 不位于 URL 地址的根目录,则创建本地配置以定义基本 URL。例如,如果您将在 'http://localhost/puppy/public' 启动 Puppy,则您的本地配置必须是

// config/local.php
<?php
return [
    'baseUrl' => '/puppy/public/', //use only an absolute path
];

本地配置不受版本控制,永远不会进入生产环境。有关配置的更多信息,请参阅特定部分。

另请参阅如何设置开发环境变量 'APP_ENV'。

然后,您可以在浏览器中启动 Puppy。 :)

清除缓存

要清除缓存,请重新构建您的项目

$ puppy build

创建自己的应用程序

现在您想编写您的网站。

首先,请注意 Puppy 的缓存。如果 Puppy 已被缓存,您的修改将不会显示在屏幕上。有关禁用缓存的配置,请参阅配置部分。

现在,让我们看看静态路由是如何工作的。

静态路由概述

“静态路由”是一个模块,它将URI路由到模板文件。路由器接收请求URI并尝试找到关联的模板。

请注意,模板文件必须位于“template/public/”目录中。

如果请求URI指向目录而不是文件,则会搜索默认文件。默认情况下:"

/index.html.twig。

如果在模板中找不到文件,则返回HTTP 404错误。

请注意,因为它是一个模块(raphhh/puppy-static-route),您可以将其删除。有关更多信息,请参阅模块部分。

添加新页面

将目录'/templates/public/'视为您公共网站访问的镜像,但特别针对twig模板。对于您网站中的每个页面,您都需要在此目录中放置一个twig文件。将该文件命名为如果它是html文件,但请添加扩展名'.twig'。

例如,对于主页,通常您将在公共区域的根目录下使用一个'index.html'。在这里,使用Puppy,您必须创建一个文件'/templates/public/index.html.twig'。相同的名称,但有特定的扩展名。

因此,例如,以下URI将调用这些twig

  • / => templates/public/index.html.twig
  • /index.html => templates/public/index.html.twig
  • /contact.html => templates/public/contact.html.twig
  • /contact => templates/public/contact/index.html.twig
  • /contact/index.html => templates/public/contact/index.html.twig

创建通用私有模板

现在,假设您想添加第二个页面,例如一个联系页面。因此,您想为URL '/contact.html'显示一个新的模板。您只需在文件'/templates/public/contact.html.twig'中创建此新模板。

一旦您创建了第二个模板文件,您的HTML中就有一些重复的代码(页眉、菜单、页脚等)。没问题,这里是Twig!例如,您可以将在单独的文件中组织您常见的基HTML代码,每个页面都会扩展它。

由于此文件不能直接通过URL访问,它不能出现在'/templates/public'目录中。您必须将其直接放在'/templates'目录的根目录中。因此,它永远不会从任何URL调用。

添加一些特定行为

现在,假设您在联系页面中有一个表单,用于发送电子邮件。您可以轻松地添加一个用于处理表单的PHP函数。

首先,您必须添加一个新的路由来处理提交的表单。

$application->post('contact', function(){ 
    ...
});

在控制器中,您必须测试表单是否适合您。如果表单无效,您可以调用与您的URI关联的twig模板,并传递错误消息。

//if the form is not filled, we display the form with the error
return $staticController->render([
    'text-danger' => 'Form not filled'
]);

如果表单有效并且您已经完成了工作,则可以重定向以避免刷新问题。

//if the email is send, we redirect to avoid F5.
return $staticController->redirect([
    'text-info' => 'Email sent'
]);

轻松检索传递给模板的消息(使用'render'或'redirect'方法)。您只需使用'retriever'服务。

{% if services['retriever'].has('text-danger') %}
    <p class="text-danger">{{ services['retriever'].get('text-danger') }}</p>
{% endif %}

请参阅DemoModule以获取示例。

配置

根据每个环境添加所有您想要的配置。Puppy使用易于使用的配置提供程序。

您的配置在'/config'目录中定义。

默认情况下,您有两个版本化的配置(全局和dev)。'dev'配置在prod环境中不加载。但是,为了指定您处于dev环境(并避免缓存),您必须设置环境变量'APP_ENV'。

此外,您还有一个第三个配置(local),它没有版本化。您可以仅为您指定一些内容。

有关更多信息,请参阅puppy-config文档。

路由

添加您想要特定行为的任何特殊路由。Puppy使用完整的路由提供程序。

$application->get('hello', function(){ 
    return 'Hello world!';
});

有关更多信息,请参阅puppy-application文档。

服务

添加您需要的所有服务。Puppy 使用 Pimple 作为服务容器。

$application->addService('serviceName', function(Container $services){
    return new MyService();
});

有关更多信息,请参阅puppy-application文档。

Puppy 使用预配置的服务构建。

  • config:提供您环境的配置。
  • request:提供当前请求($_REQUEST,...)。
  • template:处理twig引擎。
  • session:处理会话。
  • appController:在控制器中提供一些有用的工具。
  • staticController:调用与当前uri关联的twig模板。
  • frontController:调用与当前请求关联的控制器并显示视图。
  • router:找到与路由关联的控制器。
  • retriever:找到页面提供的参数。

有关会话和模板的更多信息,请参阅 puppy-service 文档。

模块

模块是一个可以像插件一样添加到Puppy的外部包。模块可以添加特定的服务、控制器、配置等。有关更多信息,请参阅模块文档。

在Puppy中添加新模块非常简单。您只需使用Composer加载包即可。

$ composer require <vendor/puppy-module>

就是这样,它工作得很好!

删除也很简单。

$ composer remove <vendor/puppy-module>

Puppy 包含一些默认模块,如会话、模板和静态路由。但是,您可以轻松地替换它们。

HTTP响应

您可以使用“after”方法管理HTTP响应的头部。例如,您可以定义http缓存。

$application->after(function(Response $response){
    ...
});

集成和部署

如何启动测试?

请参阅 .travis.yml 中的Travis配置。

如何部署?

请参阅 composer.json 中的composer安装脚本。