23. package foo;
import bar;
class Foo {
bar.Bar x;
function doFoo() {
x.process();
}
}
23
package bar;
class Bar {
function process() {
// do something...
}
}
24. package foo;
import bar;
class Foo {
bar.Bar x;
function doFoo() {
x.process();
}
}
24
package bar;
class Bar {
function process() {
// do something...
}
}
foo bar = foo → bar
25. package foo;
import bar;
class Foo {
bar.Bar x;
function doFoo() {
x.process();
}
}
25
package bar;
class Bar {
function process() {
// do something...
}
}
foo bar = foo → bar
26. package foo;
import bar;
class Foo {
bar.Bar x;
function doFoo() {
x.process();
}
}
26
package bar;
class Bar {
function process() {
// do something...
}
}
foo → bar
foo → bar
27. package foo;
class Foo {
Buz x;
function doFoo() {
x.process();
}
}
interface Buz {
function process();
}
27
package bar;
import foo;
class Bar implements foo.Buz {
function process() {
// do something...
}
}
28. package foo;
class Foo {
Buz x;
function doFoo() {
x.process();
}
}
interface Buz {
function process();
}
28
package bar;
import foo;
class Bar implements foo.Buz {
function process() {
// do something...
}
}
29. package foo;
class Foo {
Buz x;
function doFoo() {
x.process();
}
}
interface Buz {
function process();
}
29
package bar;
import foo;
class Bar implements foo.Buz {
function process() {
// do something...
}
}
foo bar = foo → bar
30. package foo;
class Foo {
Buz x;
function doFoo() {
x.process();
}
}
interface Buz {
function process();
}
30
package bar;
import foo;
class Bar implements foo.Buz {
function process() {
// do something...
}
}
bar foo = foo ← bar
31. package foo;
class Foo {
Buz x;
function doFoo() {
x.process();
}
}
interface Buz {
function process();
}
31
package bar;
import foo;
class Bar implements foo.Buz {
function process() {
// do something...
}
}
foo → bar
foo ← bar
70. 70
<?php
namespace AppProviders;
use IlluminateSupportServiceProvider;
use MyAppComponentsTasksUseCasesCreateInboxInputBoundary;
use MyAppComponentsTasksUseCasesCreateInboxInteractor;
use MyAppComponentsTasksUseCasesCreateInboxNormalOutputBoundary;
use MyAppComponentsTasksUseCasesIdProvider;
use MyAppComponentsTasksUseCasesTaskRepository as TaskRepositoryInterface;
use MyAppDatabaseRepositoriesAutoIncrementTaskIdProvider;
use MyAppDatabaseRepositoriesTaskRepository;
use MyAppWebPresentersCreateInboxPresenter;
class AppServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*
* @return void
*/
public function register()
{
$this->app->bind(IdProvider::class, AutoIncrementTaskIdProvider::class);
$this->app->bind(TaskRepositoryInterface::class, TaskRepository::class);
$this->app->bind(InputBoundary::class, Interactor::class);
$this->app->bind(NormalOutputBoundary::class, Presenter::class);
}
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
//
}
}
80. package foo;
class Foo {
Buz x;
function doFoo() {
x.process();
}
}
interface Buz {
function process();
}
80
package bar;
import foo;
class Bar implements foo.Buz {
function process() {
// do something...
}
}