inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Cây công nghệ tối ưu cho các nhà phát triển PHP, bài giảng Laravel

singleton 적용되지 않는 부분 문의드립니다.

257

hyunju23688483

2 câu hỏi đã được viết

0

안녕하세요, 강의중에 bind, singleton 부분에서 singleton 적용시에도 bind 처럼 동작하여 문의드립니다.

비슷한 증상의 질문 봤어서 해당 질문 답변에 기재된 gmail 주소로 소스코드 압축하여 보내드렸습니다.

확인해주실 수 있으실까요?ㅠㅠ

 

app.php

'providers' => ServiceProvider::defaultProviders()->merge([
        /*
         * Package Service Providers...
         */

        /*
         * Application Service Providers...
         */
        App\Providers\AppServiceProvider::class,
        App\Providers\AuthServiceProvider::class,
        // App\Providers\BroadcastServiceProvider::class,
        App\Providers\EventServiceProvider::class,
        App\Providers\RouteServiceProvider::class,
        App\Providers\AProvider::class,
    ])->toArray(),

 

web.php

Route::get('/one', function () {
    for ($i=0; $i < 3; $i++)
    {
        echo app(Acontroller::class)->multiple(2);
        echo "<br />";
    }

    return "------------";
});

 

Acontroller.php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class Acontroller extends Controller
{
    // 클래스 안에서만 쓸 수 있는 내부 변수
    protected $result;
    protected $basecontroller;

    // 내부 함수의 기본값을 설정하는 __contruct (생성자)
    public function __construct(BaseController $basecontroller){
        $this->basecontroller = $basecontroller;
    }

    public function multiple($num){
        $this->result += $this->basecontroller->plus($num) * 10;
        return $this->result;
    }
}

 

BaseController.php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class BaseController extends Controller
{
    protected $result;

    public function __construct(){
        $this->result = 0;
    }

    public function plus($num){
        $this->result = $num + 5;
        return $this->result;
    }
}

 

AProvider.php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use App\Http\Controller\Acontroller;
use App\Http\Controller\BaseController;


class AProvider extends ServiceProvider
{
    /**
     * Register services.
     */
    public function register(): void
    {
        $this->app->singleton(Acontroller::class, function($app) {
            return new Acontroller($app->make(Basecontroller::class));
        });
    }

    /**
     * Bootstrap services.
     */
    public function boot(): void
    {

    }
}

php Laravel

Câu trả lời 2

0

hyunju23688483

아ㅠㅠ 오타 꼼꼼히 확인했다고 생각했는데도 꼭 하나씩 발생하네요..

구조적인 이해가 부족한 탓도 있는것 같습니다.

복습하면서 다시해보겠습니다.

감사합니다!

0

backchur

보시면 AProvider.php 에 use 부분에 controller 가 아닌 controllers 로 바꾸어야 작동이 될 것으로 보입니다. 라라벨 세일 환경에서 이 같은 오타를 잡아낼 수 있는 확장 프로그램이 없어서 새로 배우시려는 분들이 많이 해매는 곳이기도 합니다.

변경전

image변경 후
image

wsl에서 폴더 열기 리눅스 드라이브가 보이지 않습니다.

0

65

1

우분투 설치후 도커 설치하고 재부팅후 우분투 설정 화면이 안나옵니다.

0

46

1

섹션8 wire:model 실시간 적용 안됨 문의...

0

136

2

색션6 미들웨어 실습 질문 - routeMiddleware가 없습니다..

0

150

1

composer require livewire:livewire "^2.0" 안되요 ㅠ

0

177

2

우분투 서버에서 개발한 프로그램 서비스하기

0

224

1

공부하면서 깃에 잔디도 심고싶은데 클론이 안되네요;;

0

347

2

기가 막히네..

-3

301

1

미들웨어 실습 시 data 가 false 일 경우 에러 문의

0

309

1

api.php, web.php 문의

0

282

2

꼭 api.php, web.php 로 나눠서 해야 하나요?

0

284

1

같은 에러 인데요..SQLSTATE[42S02]: Base table or view not found: 1146 Table 'laravel.sessions' doesn't exist

0

513

1

라라벨 11 버전으로 공부하고 있습니다. 서비스 프로바이더 변경되었네요.

1

853

1

7강 controller 에러 문의 드립니다

0

335

2

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'laravel.sessions' doesn't exist

0

1194

2

WSL Integration부터 자꾸 실패하는데..

0

295

1

라라벨 폴더명을 다르게 하면 연결이 안되네요

0

626

3

강사님 깃허브 폴더를 연결하고 싶습니다.

0

321

2

라라벨 설치부터막히네요 ㅠㅠ

0

278

1

ppt 강의 자료를 다운로드 받을 수 있을까요?

0

378

1

컨트롤러 로 호출하는게 안됩니다.

0

230

1

업로드에서 진행이 안되고 있습니다.

0

265

1

깃헙 주소 알려주세요~

0

355

1

The /var/www/html/bootstrap/cache directory must be present and writable.

0

497

1