Rozdělení aplikace na Front a Back

Rndoom04
Člen | 72
+
0
-

Ahoj všichni. :)

Doteď jsem dělal malé projekty, proto nebylo potřeba aplikaci rozdělovat. Ale nyní už je to jiné. vytvořil jsem přes composer novou aplikaci a nyní ji rozděluji. Rozdělení mám takto: Adresářová struktura

Ten BasePresenter.php mám takto mimo z důvodu, že budu stejný používat pro front i back. V něm mám:

<?php
declare(strict_types=1);
namespace App\Presenters;

use Nette;


abstract class BasePresenter extends Nette\Application\UI\Presenter
{
    public function startup() {
        parent::startup();
        dump("Base presenter");
    }
}

Ve Frontu v Homepage presenteru mám:

<?php
declare(strict_types=1);
namespace App\Presenters\FrontModule;

use App\Presenters\BasePresenter as BasePresenter;
use Nette;


final class HomepagePresenter extends BasePresenter
{
    public function renderDefault()
    {
        dump("HomepagePresenter");
    }
}

Mapování takto:

application:
	errorPresenter: Error
	mapping:
		*: App\Presenters\*Module\*Presenter

a router takto:

final class RouterFactory
{
	use Nette\StaticClass;

	public static function createRouter(): RouteList
	{
            /*$router = new RouteList;
            $router->addRoute('FrontModule/<presenter>/<action>[/<id>]', 'Homepage:default');
            return $router;*/

            $router = new RouteList();
            $router[] = $admin = new RouteList('Back');
            $admin->addRoute('admin/<presenter>/<action>[/<id>]', 'Homepage:default');

            $router[] = $front = new RouteList('Front');
            $front->addRoute('<presenter>/<action>[/<id>]', 'Homepage:default');

            return $router;
	}
}

Vše mi funguje. Jak Front, tak Back. Aplikace hodí oba dumpy, jak předpokládám a načte správné latte. Ale. V HomepagePresenteru mi to ukazuje Chyba v HomepagePresenter

Pokud změním v HomepagePresenteru final na abstract, chybu to neukazuje, ale aplikace hází chybu:

Cannot load presenter 'Front:Homepage', class 'App\Presenters\FrontModule\HomepagePresenter' is abstract.

Pokud přehodím

namespace App\Presenters\FrontModule;

use App\Presenters\BasePresenter as BasePresenter;

na

use App\Presenters\BasePresenter as BasePresenter;

namespace App\Presenters\FrontModule;

Netbeans chybu neukazuje, ale aplikace hlásí:

Class 'App\Presenters\FrontModule\BasePresenter' not found

Kde mohu prosím dělat chybu? Ve standardní podobě aplikace funguje, jen Netbeans hlásí, že chce funkci mít abstract a ne final. Jenže abstract už je BasePresenter. Děkuji všem za pomoc. :)

Editoval Rndoom04 (8. 6. 2020 16:01)

David Matějka
Moderator | 6445
+
+1
-

jestli tu chybu hlásí jen netbeans a ne php během runtime, tak je to pravděpodobně chyba v netbeans

Kamil Valenta
Člen | 752
+
0
-

Z čeho dědí ten BasePresenter?

Někde tam bude závislost na ArrayHash. Což je podivné…

Rndoom04
Člen | 72
+
0
-

David Matějka napsal(a):

jestli tu chybu hlásí jen netbeans a ne php během runtime, tak je to pravděpodobně chyba v netbeans

Děkuji za odpověď. Chybu hlásí asi opravdu jen Netbeans. V logu nic není ani při vypnuté laděnce.

kamil_v napsal(a):

Z čeho dědí ten BasePresenter?

Někde tam bude závislost na ArrayHash. Což je podivné…

Také děkuji za odpověď. BasePresenter je abstract a dědí pouze z Nette\Application\UI\Presenter ve kterém jsem nic nedělal. Dokonce BasePresenter žádnou chybu nehlásí ani v Netbeansu.