zapheus / skeleton
Zapheus框架的应用结构。
dev-master
2020-09-22 15:19 UTC
Requires
- php: >=5.3.0
- vlucas/phpdotenv: ~2.0
- zapheus/zapheus: ~0.1
Requires (Dev)
- phpunit/phpunit: ~4.2|~5.7
- scrutinizer/ocular: ~1.1.0
- zapheus/slytherin-bridge: ~0.1
This package is auto-updated.
Last update: 2024-09-22 23:58:27 UTC
README
为Zapheus框架提供应用结构。
安装
通过Composer安装Skeleton
$ composer create-project zapheus/skeleton:dev-master "acme"
基本用法
运行应用程序
使用PHP内置的web服务器(v5.4+可用)
$ php -S localhost:8000 -t app/web
现在打开您的网页浏览器,并转到https://:8000。
添加Zapheus提供者
// app/config/providers.php return array( // ... 'zapheus' => array( // ... // Application Providers 'App\Acme\AcmeProvider', 'App\Acme\SampleProvider', // ... ), );
必须在一个ProviderInterface
中实现Zapheus提供者
namespace Zapheus\Provider; use Zapheus\Container\WritableInterface; interface ProviderInterface { /** * @return \Zapheus\Container\ContainerInterface */ public function register(WritableInterface $container); }
向MappingsProvider
添加依赖项
// src/Zapheus/MappingsProvider.php class MappingsProvider implements ProviderInterface { public function register(WritableInterface $container) { $test = 'App\Acme\DelegatesController'; return $container->set($test, new $test); } }
MappingsProvider
仅适用于指定依赖项的处理,因为Zapheus默认会尝试根据从容器中找到的实例来管理依赖项。对于复杂的依赖项,建议将其实现为ProviderInterface
。
向DispatcherProvider
添加HTTP路由
// src/Acme/RouteCollection.php use Zapheus\Routing\Router; class RouteCollection extends Router { /** * Namespace applied to all class-based routes. * * @var string */ protected $namespace = 'App\Acme'; /** * Returns an array of route instances. * * @return \Zapheus\Routing\Route[] */ public function routes() { $this->get('/delegates', 'DelegatesController@index'); return $this->routes; } }
// src/Zapheus/DispatcherProvider.php class DispatcherProvider implements ProviderInterface { /** * An array of Zapheus\Routing\RouterInterface instances. * * @var string[] */ protected $routers = array('App\Acme\RouteCollection'); // .. }
添加多目录模板文件
// src/Acme/AcmeProvider.php use Zapheus\Container\WritableInterface; use Zapheus\Provider\ProviderInterface; class AcmeProvider implements ProviderInterface { /** * Registers the bindings in the container. * * @param \Zapheus\Container\WritableInterface $container * @return \Zapheus\Container\ContainerInterface */ public function register(WritableInterface $container) { // ... $templates = __DIR__ . DIRECTORY_SEPARATOR . 'Templates'; // Add a dot notation after "app.views" $config->set('app.views.acme', $templates); // ... } }
// src/Acme/DelegatesController class DelegatesController { protected $renderer; public function __construct(RendererInterface $renderer) { $this->renderer = $renderer; } public function index() { // Use the "acme" prefix defined from AcmeProvider return $this->renderer->render('acme.test'); } }
变更日志
有关最近更改的更多信息,请参阅CHANGELOG。
测试
$ composer test
许可证
MIT许可证(MIT)。有关更多信息,请参阅LICENSE。