zapheus/skeleton

Zapheus框架的应用结构。

dev-master 2020-09-22 15:19 UTC

This package is auto-updated.

Last update: 2024-09-22 23:58:27 UTC


README

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

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