rceman / copper
Copper PHP 框架
v1.0.13
2020-11-25 19:01 UTC
Requires
- php: >=7.0
- ext-json: *
- symfony/config: 3.4
- symfony/http-foundation: 3.4.35
- symfony/routing: 3.4
README
Copper 是一个主要关注简洁性和开发速度的 PHP 框架
版本
- v1.0 - https://github.com/therceman/copper/tree/v1.0.13
- v2.0 (master) - https://github.com/therceman/copper (正在进行中,尚无手册/README/文档)
由 Anton (therceman) 开发和维护 - 网页开发者和安全研究员 / 虫害猎人
v1.0 的文档
查看 Copper 骨架,这是一个基于 Copper v1.0 的最小和空应用程序,您可以在此基础上创建新的应用程序
安装
composer require rceman/copper
文件夹结构
/
- config
- routes.php
- public
- index.php
- src
- Controller
- HomeController.php
- templates
- index.php
配置(入门)
创建文件 /public/index.php
<?php
require dirname(__DIR__) . '/vendor/autoload.php';
use Symfony\Component\HttpFoundation\Request;
$kernel = new Copper\Kernel();
$kernel->handle(Request::createFromGlobals())->send();
创建文件 /public/.htaccess
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
<IfModule !mod_rewrite.c>
<IfModule mod_alias.c>
RedirectMatch 302 ^/$ /index.php/
</IfModule>
</IfModule>
配置(高级)
更新文件 /composer.json
{
...
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
}
运行控制台命令
composer update
创建文件 /templates/index.php
<?php /** @var \Copper\Component\Templating\ViewHandler $view */ ?>
<?= $view->render('header') ?>
<body>
<h4><?= $view->out($view->dataBag->get('message')) ?></h4>
</body>
创建文件 /src/Controller/HomeController.php
<?php
namespace App\Controller;
use Copper\Controller\AbstractController;
class HomeController extends AbstractController
{
public function getIndex()
{
$parameters = [
'head_title' => 'App :: Home',
'head_meta_description' => 'Application based on Copper PHP Framework',
'head_meta_author' => '{enter your name here}',
'message' => 'Welcome to your Application!'
];
return $this->viewResponse('index', $parameters);
}
}
创建文件 /config/routes.php
<?php
use Symfony\Component\Routing\Loader\Configurator\RoutingConfigurator;
use App\Controller\HomeController;
return function (RoutingConfigurator $routes) {
$routes->add('index', '/')
->controller([HomeController::class, 'getIndex'])
->methods(['GET']);
};
配置(可选)
创建文件 /.gitignore
vendor/
composer.lock
composer.phar
框架模块
- 路由配置模块(使用 config/routes.php)
- 控制器模块(使用 Controller/*Controller.php)
- 视图(模板)模块(使用 templates/*.php)
路由配置模块 :: 类
类
- [RoutingConfigurator] (Symfony) - 路由配置器
- 实例
$routes
- 默认实例
- 方法(基本)
->add($name, $path)
- 添加路由。->controller($controller)
- 向路由添加控制器。->methods($methods)
- 设置此路由限制的 HTTP 方法(例如'POST'
)->requirements($requirements)
- 添加路由要求(例如['page' => '\d+']
)->defaults($defaults)
- 添加路由默认值(例如['page' => 1]
)
- 实例
视图(模板)模块 :: 变量、方法和类
变量
$view->request_method
- 请求方法 GET 或 POST$view->request_uri
- 请求 URI$view->client_ip
- 客户端 IP 地址$view->controller_name
- 控制器名称$view->route_name
- 路由名称
方法
$view->routeBag->get($key, $default = null)
- 通过键获取路由参数$view->postBag->get($key, $default = null)
- 通过键获取 POST 参数$view->queryBag->get($key, $default = null)
- 通过键获取 GET 参数$view->cookiesBag->get($key, $default = null)
- 通过键获取 Cookies 参数$view->dataBag->get($key, $default = null)
- 通过键获取模板参数$view->out($value)
- 转义 HTML 代码并作为字符串输出$view->out($array)
- 转义 HTML 代码并作为格式化数组输出$view->render($template)
- 渲染模板$view->relativePath($name, $parameters = [])
- 返回到命名路由的相对路径$view->networkPath($name, $parameters = [])
- 返回到命名路由的网络路径$view->url($name, $parameters = [], $withScheme = false)
- 返回到命名路由的 URL
类
- [ViewOutput] - 输出处理器(转义、格式化等)
- 实例
$view->output
- 默认实例
- 方法
->raw($value)
- 输出字符串(不转义)->js($value)
- 转义JavaScript代码并输出字符串->json($array)
- 格式化数组为JSON字符串(不转义)->text($value)
- 转义HTML代码并输出字符串->dump($array)
- 转义HTML代码并以格式化数组输出
- 实例
- [ParameterBag] (Symfony) - 请求参数集合
- 实例
$view->routeBag
- 路由参数(可迭代)$view->postBag
- POST参数(可迭代)$view->queryBag
- GET参数(可迭代)$view->cookiesBag
- Cookies参数(可迭代)$view->dataBag
- 模板参数(可迭代)
- 方法(基本)
->all()
- 返回包含参数的数组->get($key)
- 通过名称返回参数->set($key, $value)
- 通过名称设置参数->has($key)
- 如果参数已定义则返回true->remove($key)
- 移除参数->getInt($key, $default = 0)
- 返回转换成整数的参数值->getBoolean($key, $default = false)
- 返回转换成布尔值的参数值
- 实例
控制器模块 :: 方法和类
方法
$this->viewResponse($view, $parameters = [])
- 返回包含渲染视图的Response$this->renderView($view, $parameters = [])
- 返回渲染后的视图$this->response($data, $status = 200, $headers = [])
- 返回HTTP Response$this->json($data, $status = 200, $headers = [])
- 返回使用json_encode的JsonResponse$this->redirectToRoute($route, $parameters = [], $status = 302)
- 返回指向给定路由的RedirectResponse$this->redirect($url, $status = 302)
- 返回指向给定URL的RedirectResponse
类
- [Request] (Symfony) - 请求表示一个HTTP请求
- 实例
$this->request
- 默认实例
- 实例
- [RequestContext] (Symfony) - 包含当前请求的信息
- 实例
$this->requestContext
- 默认实例
- 实例
- [RouteCollection] (Symfony) - RouteCollection表示一组Route实例
- 实例
$this->routes
- 默认实例
- 实例