2016-05-17 15 views
12

Come adattare il formattatore di codice PHP Eclipse per Symfony coding standards?Adapt Eclipse formattare il codice PHP per gli standard di codifica Symfony

In particolare, voglio liberarmi di spaces around concatenation operator che il programma di formattazione del codice aggiunge con uno qualsiasi dei profili predefiniti durante la scrittura.

$a = $b->bar.'*'.$c->baz; // not $b->bar . '*' . $c->baz 

in codice permette di export and import a profile in XML, ma non è chiaro che la direttiva in esso è responsabile per gli spazi di cui sopra.


Vedere questo slightly modified PSR-2 profile Ho usato come punto di partenza, senza successo.

+1

Non so come farlo in eclipse, ma se usi git come controllo di versione, puoi usufruire di alcuni hook di pre-commit che lo aggiusteranno per te (dai un'occhiata a [cs-fixer] (https://github.com/FriendsOfPHP/PHP-CS-Fixer)) o puoi anche eseguirlo manualmente – DonCallisto

+0

@DonCallisto cs-fixer va bene e bene, ma posso farlo anche dall'IDE? – sanmai

+0

Davvero non lo so, io uso PHPStorm (che, per me, è molto meglio) :) btw davvero non so nemmeno come averlo direttamente in PHPStorm ma è più sicuro avere un fixer come puoi sempre modificare tu stesso il modello base del tuo ide – DonCallisto

risposta

2

Nella configurazione del profilo, scheda spazi, è necessario deselezionare: Prima operatore> Operatore binario Dopo operatore> Operatore binario

Purtroppo, questo non influisce solo l'operatore di concatenazione su stringa, altro operatore sarà anche senza spazi.

Lo scopo di un formatore è quello di avere tutti gli operatori con lo stesso formato, quindi questo ha senso perché the dot is an operator secondo i documenti.

+0

Impossibile accettare questa causa. Devo lasciare intatti gli spazi attorno agli altri operatori. – sanmai

+0

Mi sono trovato con lo stesso dilemma – Paul

0

Molto probabilmente non penserai che sia una risposta, ma pubblicandola comunque.

Gli standard di codifica di symfony non cambieranno nulla a come funziona il tuo progetto, né lo renderà più veloce se lo segui.
Alla fine, è il tuo server che sta facendo il lavoro, e accetta PHP indipendentemente da come è stato formulato, purché non ci siano errori.

Lo standard di codifica di Structude è principalmente qui per semplificare la lettura del codice e per evitare errori di base.

La convenzione di denominazione, servizi inclusi, è una base in qualsiasi progetto PHP.

e noterete presto che non importa cosa, è necessario utilizzare PHPDoc (es: ParamConverter)

Alla fine, non importa se si scrive o if (1==1)if(1 == 1), né mettendo staffa aperta nella riga successiva (lo tengo sulla stessa riga).
Fin tanto che il tuo codice è pulito e puoi facilmente capirlo, è quello che importa di più.
Tranne se sei come qualcuno che conosco e codice tutto su una singola riga (storia vera), allora sei fregato.

Per quanto riguarda la tua domanda, Eclipse non è abbastanza flessibile per fare ciò che vuoi.
E molto probabilmente non lo sarà mai, perché è gratuito, nessuno è pagato per svilupparlo.

ho trascorso alcuni anni a trovare un buon IDE ...
E io consiglio voi con lo stesso consiglio ho ottenuto 2 anni fa, e che alcuni altri si suggeriscono così, utilizzare PhpStorm da JetBrains.

Se sei uno studente o un insegnante, puoi ottenerlo gratuitamente.
Altrimenti, dovrete pagare per questo, ma per essere onesti, la licenza per i singoli clienti è abbastanza a buon mercato/anno.

Aggiungerò anche che avere un IDE completo e valido ti aiuterà a migliorare le tue cattive abitudini di codifica.
Sono sicuro che la maggior parte degli utenti di PhpStorm non può contare il numero di cattive abitudini che hanno corretto con lo strumento di ispezione PhpStorm.

Spero che questa risposta sia soddisfacente.

2

Purtroppo questo non è possibile senza modificare la fonte. Puoi piuttosto cambiare il codice sorgente tu stesso o chiedere una richiesta di funzionalità per farlo accadere, che nessuno sa se qualcuno lo farà.

Qui ci sono le preferenze modificabili e non vedo da nessuna parte.

https://github.com/eclipse/pdt/blob/master/plugins/org.eclipse.php.formatter.core/src/org/eclipse/php/formatter/core/CodeFormatterPreferences.java

+1

Beh, probabilmente dovrei scoprire come si costruisce Eclipse PDT dal sorgente ... Solo se potessi evitare questo. – sanmai

2

Non faccio uso di Eclipse, tuttavia, questo dovrebbe funzionare:

Secondo coding standards di Symfony:

Symfony segue gli standard definiti nel PSR-0, PSR 1, documenti PSR-2 e PSR-4.

Ciò significa che è necessario trovare un programma di formattazione del codice PSR per Eclipse.

Ecco un formattatore Eclipse per PSR:

Ho anche usato uno strumento non Eclipse che gira su Linux: The PHP Coding Standards Fixer. È abbastanza carino e include il supporto di Symfony.

Documentation mostra che qualcosa come questo dovrebbe funzionare:

$ php php-cs-fixer.phar fix /path/to/project [email protected] 

E, un po 'più di me scavo ha portato alla scoperta di un plugin Eclipse che include il PHP Coding Standards Fixer, nel caso in cui non si vuole usare solo il comando linea.

+0

Lo controllerò, ma fino ad ora ha lo stesso aspetto che utilizzo - il che aggiunge spazi agli operatori di concatenazione. – sanmai

+0

Sto già usando cs-fixer. Ho bisogno che sia fatto in Eclipse. – sanmai

+0

Mi sono collegato a un plug-in Eclipse che include cs-fixer. Buona fortuna a prescindere. – smcjones