New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

__PHP_Incomplete_Class エラー #1332

Closed
hainey opened this Issue Dec 16, 2015 · 3 comments

Comments

Projects
None yet
3 participants
@hainey

hainey commented Dec 16, 2015

ECCUBE 3.0.5

どんなケースで発生しているかがはっきりしないですが、ログイン後しばらく放置してからマイページに行くと下記のようなエラーがありました。

PHP Catchable fatal error: Argument 1 passed to Eccube\Repository\OrderRepository::getQueryBuilderByCustomer() must be an instance of Eccube\Entity\Customer, instance of __PHP_Incomplete_Class given, called in /var/www/eccube3/src/Eccube/Controller/Mypage/MypageController.php on line 74 and defined in /var/www/eccube3/src/Eccube/Repository/OrderRepository.php on line 453, referer: http://eccube3.localhost.com/

@hainey hainey changed the title from バグでしょうか? to __PHP_Incomplete_Class エラー Dec 16, 2015

@nanasess nanasess added the bug label Dec 17, 2015

@nanasess

This comment has been minimized.

Contributor

nanasess commented Dec 17, 2015

タイムアウトで、 Customer のインスタンスが取得できなくなってしまった感じですかね。

@hainey

This comment has been minimized.

hainey commented Dec 21, 2015

こちらのエラーの原因がわかりました

Application.phpのinitPluginEventDispatcher関数に

        // hook point
        $this->before(function(Request $request, \Silex\Application $app) {
            $app['eccube.event.dispatcher']->dispatch('eccube.event.app.before');
        }, self::EARLY_EVENT);

EARLY_EVENTが原因で、eccube.event.app.beforeの関数にセッションの操作を行うと、
上記のエラーになってしまいました。
また、EARLY_EVENTだと、eccube.event.app.beforeのイベント関数にもログインしているユーザー情報も取得できません。
EARLY_EVENTをLATE_EVENTに直していただくとセッション操作もログインしているユーザー情報も問題なく取得できました。
一般的には、Pluginの開発者はセッションなどの取得が必要と思いますので、ECCUBE本体の修正をお勧めします。

@chihiro-adachi

This comment has been minimized.

Contributor

chihiro-adachi commented Feb 24, 2016

3.0.9でフックポイントが新設されました. #1410
ログインユーザ情報については、eccube.event.xxx.controllerで取得することが可能です。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment