Diskuze: PHP 7.2 v NetBeans (postup pro Windows, vodítko pro ostatní OS)

PHP PHP PHP 7.2 v NetBeans (postup pro Windows, vodítko pro ostatní OS) American English version English version

Aktivity (1)
Avatar
Petr Spěvák:6. srpna 13:47

Pro případ, že někdo pro psaní PHP skriptů zvolil NetBeans a řešil by stejný problém, sem dávám konkrétní popis problému a postup řešení - třeba někomu ušetří trochu času.

Problém:
Poslední stabilní verze s podporou PHP (NetBeans 8.2) nabízí kontrolu syntaxe, našeptávání atp. pouze do verze 7.0. Použijete-li novinky z PHP 7.1 či 7.2, NetBeans se chová zhruba tak, že první výskyt označí bílým vykřičníkem v červené osmiúhelníku (hláška "Syntax error" ...), další výskyty + řádky po nich následující + řádek následující po "Syntax error" + některé další řádky pak černým vykřičníkem ve žlutém trojúhelníku (hláška "POSSIBLE Syntax Error"). V levé části okna pak soubor, jeho složku, všechny nadřazené složky a projekt označí bílým vykřičníkem v červeném kruhu (hláška "Error parsing file", resp. "Contains files with errors"). Pro názornost si můžete Composerem natáhnout třeba knihovnu Nette\Mail a sami uvidíte.
Řekl bych, že taková práce je značně nekomfortní a vyplatí se s tím něco dělat, i když řešení není úplně one-click.

Konkrétní příklad:

<?php

class Pokus
{
    private const SKORO_DVE = 1.999999999999;  // hláška Syntax error
    public $hodnota = 1;  // hláška POSSIBLE Syntax Error

    public function vratBezvyznamnyRetezec() : ?string   // hláška POSSIBLE Syntax Error
    {                                                                                    // hláška POSSIBLE Syntax Error
        /* nějaký kód vracející řetězec nebo NULL */
    }

    public function skoroSeZdvojnasob() : object  // hláška POSSIBLE Syntax Error, ale ne kvůli slovu object - v 7.0 jestě není rezervované, takže se považuje za název třídy (problém by tedy nastal až po skutečném spuštění v PHP < 7.2)
    {
        $this->hodnota *=  self::SKORO_DVE;
        return $this;
    }
}

$pokus = new Pokus();
echo $pokus->skoroSeZdvojnasob()->skoroSeZdvojnasob()->skoroSeZdvojnasob()->hodnota;

Postup řešení:

  • Ze stránky autora potřebného patche (https://junichi11.com/…p7-2-support) si stáhněte opatchovanou DEVELOPMENT VERSION NetBeans a rozbalte do libovolného adresáře - třeba C:\Program Files\netbeans-dev.
  • Stáhněte si JDK - v mém případě to byla verze 10.0.2.
  • V souboru adresář_s_Net­Beans\etc\net­beans.conf je potřeba odkomentovat (odstranit znak #) direktivu netbeans_jdkhome a nastavit správnou správnou cestu k JDK. V mém případě tedy výsledný řádek vypadal takto: netbeans_jdkho­me="C:\Program Files\Java\jdk-10.0.2"
  • Spouštěcí soubor je adresář_s_Net­Beans\bin\net­beans64.exe pro 64bitovou verzi a resp. adresář_s_Net­Beans\bin\net­beans.exe pro 32bitovou verzi (pokud máte 64bitový systém a přesto 64bitová verzinelze spustit, doporučuji nejprve spustit 32bitovou, tu pak zavřít a zkusit znovu 64bitovou).
  • Import nastavení a pluginů z NetBeans 8.2 by se měl dřív či později nabídnout sám. Výsledné nastavení nemusí být na 100% shodné, ale to už je otázka pár kliknutí.

Poznámky:

  • Předchozí verzi NetBeans není třeba odstraňovat, zůstává plně funkční.
  • Dost času jsem strávil zkoumáním (Google + pokus --> omyl), kterak předmětný patch použít samostatně. Možná by to i šlo, ale pravděpodobně ne na verzi 8.2. Tedy nejspíš by šel použít ve standardní DEVELOPMENT VERSION, ale s rozumnou znalostí Javy a ještě hlubší znalostí NetBeans. Ani tak ale nevím, zda by se to vyplatilo. Možnost je i ručně přepsat vybrané soubory z verze, kterou nabízí p. Yamamoto, do té stávající, kterou máte nainstalovánu (zkoušel jsem, fungovalo to částečně, opět by to chtělo hlubší znalost NetBeans --> nedoporučuji).
  • Na další scestí jsem se dostal díky tvrzení, že NetBeans 9 podporuje PHP 7.1 (což by relativně stačilo). Pravda je taková, že NetBeans 9 v současné době vůbec neobsahuje modul PHP. Mám tedy další pokusnou verzi do sbírky. Autor onoho tvrzení (fakt už nevím kde) měl zřejmě na mysli DEVELOPMENT VERSION osmičky.
  • Jun-ichi Yamamoto bude pravděpodobně vytvářet patche i pro budoucí stabilní verze PHP (pokud budou třeba), pouze je otázka, zda to bude pro Netbeans 8 DEV., nebo pro NetBeans 9. Ohledně podpory PHP 7.3 už založil issue: https://issues-test.apache.org/…NETBEANS-946
Editováno 6. srpna 13:50
 
Odpovědět  +3 6. srpna 13:47
Avatar
Odpovídá na Petr Spěvák
Petr Spěvák:8. srpna 13:55

Důležitý dodatek:
Věci se někdy mění rychleji, než by člověk čekal dokonce i v oboru IT. S dovolením bych to vzal od konce: Už mám Apache NetBeans IDE 9.0 s i s modulem PHP (a jak jinak, než s podporou verze 7.2).

Informace v mém předchozím příspěvku jsou stále platné (ze stránek Apache Foundation dosud devítku stáhnete pouze verzi bez PHP).

  • Cítil jsem povinnost Jun-ichimu Yamamotovi poděkovat za jeho skvělou práci (zvolil jsem Twitter).
  • Upozornil mě, že patch byl již zahrnut do hlavní vývojové verze: https://junichi11.com/…tbeans-build (což publikoval zhruba paralelně se vznikem mého předchozího příspěvku)
  • Jestliže předchozí postup "nebyl úplně one-click", tento už se neobejde bez častého použití příkazové řádky, nastavování systémových proměnných apod. Navíc poslední operace konkrétně u mě běžela 52 minut (asi mohla být o něco rychlejší nesedět na zahrádce od kavárny, která byla vevnitř plná notebookářů, ale pod 30 min. těžko).
  • Chtěl jsem dát ke sdílení rovnou ZIP s výsledkem, ale p. Yamamoto si to nepřál (protože nejde o stabilní verzi).
  • Zvažuji, jak pojmout kuchařku, aby si kdokoliv, kdo nezná použité technologie, mohl tento build sestavit bez zbytečných záseků.
  • Zatím prozradím svůj nejdelší WTF moment: V JDK 10 chybí soubor tools.jar (nejsem si jist zda v 9 byl deprecated, nebo již také chyběl), který je nezbytný pro poslední operaci v Apache Ant. Vyřešil jsem to instalací verze 8 a naměroval na ni proměnnou JAVA_HOME. Samotné NetBeans už pak klidně mohou běžet na JDK 10.

Dodatek dodatku:
Opatchovaná DEVELOPMENT VERSION (dle předchozího příspěvku) osmičky má nějaký bug, který se projevuje ve Windows 10 - IDE prý nejde spustit (já jsem hned po zakoupení notebooku downgradoval z Win 10 na 7, takže u mě se bug neprojevil). Pokud se rozhodnu napsat opravdu podrobné notičky, tentokrát budu postup opakovat právě na počítači Win 10.

 
Nahoru Odpovědět  +1 8. srpna 13:55
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.