Autor Wątek: Ice 1.1.0  (Przeczytany 1481 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Offline mruz

  • Administrator
  • *****
  • Wiadomości: 453
  • Karma: +15/-0
  • Płeć: Mężczyzna
    • Zobacz profil
Ice 1.1.0
« dnia: Styczeń 27, 2016, 12:49:00 »
Wersja 1.1.0 została wydana, przynosi ona przede wszystkim auto-resolving:

<?php
namespace App\Modules\Frontend\Controllers;

use Ice\Mvc\Controller;
use App\Services\UserService;

class UserController extends Controller
{

    protected $users;

    public function __construct(UserService $users)
    {
        $this->users = $users;
    }

    public function indexAction()
    {
        $user = $this->users->loadOne(['username' => 'admin']);
    }
}
<?php
namespace App\Services;

use App\Models\Users;
use Ice\Mvc\Service;

class UserService extends Service
{

    public function __construct(Users $users)
    {
        $this->setModel($users);
    }
}

Inny przykład:
<?php
class Foo {

protected $bar;
protected $baz;

public function __construct(Bar $bar, Baz $baz)
{
$this->bar = $bar;
$this->baz = $baz;
}
}

class Bar {}

class Baz {

protected $qux;

public function __construct(Qux $qux)
{
$this->qux = $qux;
}
}

class Qux {

protected $norf;

public function __construct(Norf $norf)
{
$this->norf = $norf;
}
}

class Norf {}

$foo = new Foo(new Bar, new Baz(new Qux(new Norf)));
// The same by auto-resolving:
$di = new Ice\Di();
$foo = $di->build('Foo');

Komponenty są też domyślnie przypisane do usług, więc w bootstrapie podajemy tylko to co chcemy ustawić, np. dla aplikacji hello:
namespace App;

// Create a dependency injector container
$di = new \Ice\Di();

// Register App namespace for App\Controller, App\Model, App\Library, etc.
$di->loader
    ->addNamespace(__NAMESPACE__, __DIR__)
    ->register();

// Set some service's settings
$di->dispatcher
    ->setNamespace(__NAMESPACE__);

$di->router
    ->setRoutes([
        ['GET', '/{controller:[a-z]+}/{action:[a-z]+[/]?}'],
        ['GET', '/{controller:[a-z]+[/]?}'],
        ['GET', ''],
    ]);

$di->view
    ->setViewsDir(__DIR__ . '/View/');

// Create and return a MVC application
return new \Ice\Mvc\App($di);
Wesprzyj moją pracę i kup mi czekoladę ;) Link do dotacji na mruz.me

Offline mruz

  • Administrator
  • *****
  • Wiadomości: 453
  • Karma: +15/-0
  • Płeć: Mężczyzna
    • Zobacz profil
Odp: Ice 1.1.0
« Odpowiedź #1 dnia: Marzec 18, 2016, 08:04:16 »
Wersje 1.1.1 i 1.1.2 zostały wydane, zawierają kilka poprawek i drobnych ulepszeń. Zmiany dostępne w CHANGELOG.
Wesprzyj moją pracę i kup mi czekoladę ;) Link do dotacji na mruz.me