danmrichards / notaframework
NotAFramework - PHP中的实用工具
Requires
- php: ^7.1.3
- filp/whoops: ^2.0
- league/container: ^3.0
- phroute/phroute: ^2.1
- symfony/http-foundation: ^4.0
- twig/twig: ^2.0
Requires (Dev)
- phpunit/phpunit: ~7.0
- squizlabs/php_codesniffer: ^3.0
This package is auto-updated.
Last update: 2024-08-29 03:52:52 UTC
README
这不是一个框架,这是在PHP中完成任务的实用工具。
这个工具使用一些社区包来提供足够的功能,以便做些有用的事情。
例如,Whoops用于错误处理,HttpFoundation用于HTTP,PHRoute用于路由。仅举几个例子。
安装
最佳安装方式是通过composer
composer create-project --prefer-dist danmrichards/notaframework anewthing
或者,如果你有某种原因不喜欢composer,你也可以下载zip文件。
路由
路由定义在src/App/Http/routes.php文件中。默认情况下,路由由PHRoute提供支持。所以请查阅完整的文档,但基本上路由可以是闭包定义的
$router->get('/example', function() {
return 'This route responds to requests with the GET method at the path /example';
});
或者它们可以针对类和方法定义,例如文件中定义的2个示例路由
$router->get('/', ['NotAFramework\App\Controllers\HelloWorldController', 'show']);
控制器
控制器放在src/App/Controllers目录中,并且应该在NotAFramework\App\Controllers;下命名空间。
这些控制器没有严格的模式遵循,你可以添加任意多的依赖项、助手和额外的特性/服务/接口。
示例控制器src/App/Controllers/HelloWorldController.php扩展了基本抽象类NotAFramework\App\Controllers\Controller。这允许将Symfony请求和响应对象传递给控制器。这是一种好的做法,将允许更容易地与HTTP层进行交互。
依赖注入
PHP League的Container处理依赖注入。所有服务都定义在src/App/container.php文件中。
已设置了一些默认服务;Symfony\Component\HttpFoundation\Request和Symfony\Component\HttpFoundation\Response在核心服务部分定义。这些都是共享依赖,意味着单个实例将在整个应用程序中注入。
可以在文件的底部添加任何额外的服务。例如,默认前端渲染器Twig已经被定义。注意,它已被定义为RendererInterface接口的别名,下面将详细介绍。
有关Container的更多信息,请参阅文档。
主题
默认情况下使用Twig作为主题层,但可以轻松替换。只需在src/App/Render目录中创建一个新的渲染器类,该类实现了NotAFramework\App\Render\RendererInterface接口。然后你可以更新相应的src/App/container.php文件和控制器。
如果使用文件系统模式,Twig将查找其模板文件在templates文件夹中。
测试
是的...所有的包都在其内部进行了单元测试,我们还有PHPUnit。所以现在就足够了。
许可
MIT许可!