PhpStorm označuje BasePresenter jako nedefinovanou třídu v odděděné třídě
- gizer
- Člen | 67
Dobrý den,
ve svém projektu používám Base presenter. Celé to funguje to a laděnka nic
nehlásí. Obě třídy mám v nette v adresáři App\FrontModule\
Presenters.
Nevím proto, proč mně phpStorm udělá „higlight“ na odděděný BaseFrontpresenter? V popisu chyby zjistím, že jde o nedeklarovanou třídu. Proč, vždyť ji přece deklaruji v tom samém adresáři?
Samozřejmě ten „highlight“ jde vypnout v phpStormu File->Settings->Editor->Inspections->undefined symbols->undefined class v phpStorm verze 2021.3.1.
Děkuji za případnou radu. Posílám kód obou tříd.
AdvertmessagesPresenter:
declare(strict_types=1);
namespace App\FrontModule\Presenters;
use Nette;
use Nette\Application\UI\Form;
abstract class AdvertmessagesPresenter extends BaseFrontPresenter //Highlighted BaseFrontPresenter
{
public function renderAdvertmessages(): void
{
$this->template->advertmessages = $this->database->table('advertmessages');
$this->template->post = $this->database->table('posts')->get(1);
$this->template->selfLink = $this->link('this');
}
}
A samotný base presenter
BaseFrontPresenter:
declare(strict_types=1);
namespace App\FrontModule\Presenters;
use Nette;
use Nette\Http\SessionSection;
use Nette\Application\UI\Presenter;
abstract class BaseFrontPresenter extends Presenter
{
/** @persistent */
public $backlink = '';
/** @var Nette\Database\Context */
protected $database;
public function __construct(Nette\Database\Context $database)
{
parent::__construct();
$this->database = $database;
}
}
- m.brecher
- Generous Backer | 873
Ahoj, ten kód vypadá v pořádku.
Drobná chyba – AdvertmessagesPresenter nesmí být abstract, ale final, protožře se z této třídy už další presenter nedědí, naopak se vytváří objekt a to z abstract classy nejde.
Zkus smazat v AdvertmessagesPresenter-u slovo BaseFrontPresenter za klíčovým slovem extends a napsat to znova s použitím nápovědy phpstormu, napíšeš Advertmess a on by měl příslušnou třídu i s namespace najít a nabídnout k dopsání. Pokud ji nenajde tak bude asi chyba v phpstormu – (update/reinstall?).
Nebo jednoduše zkus napsat jen tak nějaký jiný presenter poděděný z BaseFrontPresenter jestli se ta chyba zopakuje.
- gizer
- Člen | 67
Děkuji moc všem za rady. Problém zatím přetrvává i když jsem všechny podněty ověřil.
Přesto možná tuším, odkud se problém bere, i když zatím nevím jak to opravit. Stěhoval jsem projekt z jednoho PC na druhé. Jednoduše jsem to v novém PC stáhnul z gitHubu.
Teď jsem si nově všimnul, že mně odmítá refactoring-rename s hláškou „Selectd element is used from non-project files“ a nabídne „Proceed anyway“. Jakoby ty soubory nebyly součástí projektu.
Pokud někdo máte zkušenost s touto hláškou v phpStormu budu rád?
- nightfish
- Člen | 519
gizer napsal(a):
Teď jsem si nově všimnul, že mně odmítá refactoring-rename s hláškou „Selectd element is used from non-project files“ a nabídne „Proceed anyway“. Jakoby ty soubory nebyly součástí projektu.
Pokud někdo máte zkušenost s touto hláškou v phpStormu budu rád?
První věc, kterou bych zkusil, je vymazat cache v PHPStormu (menu File →
Invalidate caches).
Druhá věc je zkontrolovat, že máš správně nastavené „Sources“
adresáře (menu File → Settings → Directories – složka s PHP kódem
projektu – např. app
nebo src
by měla být
Marked as source).
Pokud by ani to nepomohlo, tak zavřít PHPStorm, smazat .idea
v adresáři projektu, otevřít projekt v PHPStormu a znovu provést
nastavení Sources.