Calendrier de l'Avent PHP 2016 Ceci est l'article sur le 20e jour.
L'article Ecrire du code robuste en PHP7 est devenu un sujet brûlant. Je n'ai vu que les diapositives, mais il y avait beaucoup de choses avec lesquelles je sympathisais. À la lumière de cela, j'ai essayé de déterminer ce à quoi je fais attention et ce que je fais lorsque je développe avec php.
A l'origine, j'avais une longue expérience avec Java et utilisais IntelliJ IDEA, donc je développe avec PhpStorm depuis le même endroit. C'est une histoire que vous pouvez écrire du code avec un sentiment similaire à Java dans une certaine mesure en utilisant cette fonction.
Lorsque vous le sortez du conteneur symfony, vous pouvez avoir du mal à connaître le type et la méthode. Dans un tel cas, si vous commentez la variable locale comme indiqué ci-dessous, PhpStorm reconnaîtra le type de la variable et complétera la méthode, etc.
C'est une citation de http://symfony.com/doc/current/service_container.html, mais si elle est laissée comme ci-dessous, la méthode d'envoi de $ mailer
ne sera pas complétée.
class HelloController extends Controller
{
// ...
public function sendEmailAction()
{
$mailer = $this->get('app.mailer');
$mailer->send('[email protected]', ...);← Je ne connais pas le type, donc si c'est PhpStorm, un avertissement apparaîtra.
}
}
Si vous faites ce qui suit, l'avertissement disparaîtra et la méthode de la classe Mailer apparaîtra comme un candidat d'achèvement dans $ mailer
.
/* @var $mailer AppBundle\Mailer */
$mailer = $this->get('app.mailer');
Par exemple, lorsque vous souhaitez écrire un tableau avec un type spécifié tel que "tableau de chaînes de caractères" ou "tableau de classes que vous avez créé" dans phpdoc. Si vous êtes nouveau sur Java, vous le voudrez.
* @return string[]
* @return Sample[]
Donc, si vous faites «XXX []», c'est OK.
Vous pouvez savoir où une méthode est appelée en recherchant Alt + F7 (Rechercher les utilisations dans le menu contextuel) et en la listant. Ceci est utile pour connaître l'étendue de l'effet de la fixation d'une méthode et comment elle est utilisée.
public function isXXX() {...}← Focus sur le nom de la méthode, Alt+F7 ou clic droit
Mise en garde Lorsqu'il est utilisé sur un modèle tel que twig, ou lorsque PhpStorm ne peut pas déterminer le type (comme lors de son obtention avec un conteneur de service symfony), il n'apparaît pas dans les résultats de la recherche. De tels cas ne peuvent être détectés que par une recherche de chaîne de caractères dans le projet. Ctrl + Maj + F fera apparaître cette boîte de dialogue.
@ see
et @ deprecated
Lors de la modification ou de l'ajout de fonctions, il existe des cas où les anciennes et les nouvelles classes coexistent en raison du travail et des spécifications (ex: l'ancien routage est laissé et redirigé vers une nouvelle URL). À ce moment-là, une solution consiste à ajouter «@ obsolète» pour faciliter la compréhension de l'ancien et du nouveau. De plus, vous pouvez utiliser @ see
pour créer une route qui référence une nouvelle classe. Concentrez-vous sur le nom de la classe à @ see
et appuyez sur Ctl + B (raccourci pour appeler la partie déclaration) pour ouvrir la classe.
@ancienne classe d'usine obsolète
@voir NewFactory Nouvelle classe d'usine
public class OldFactory {
}
Puisque @ deprecated
peut être attaché à une méthode, je l'ai fait ad hoc et inévitablement, mais il semble qu'il puisse également être utilisé pour faire appel au fait que je ne veux pas qu'il soit utilisé ailleurs.
@obsolète Veuillez ne pas l'utiliser dans un nouveau développement car il a trop d'effets secondaires et il est dangereux de l'utiliser plus
public function dirty_method() {...}
Cependant, dans tous les cas, il est essentiel que l'équipe puisse se mettre d'accord sur la manière de les utiliser et sur le type de commentaires à laisser.
Ouvrez le fichier que vous souhaitez voir blâme ou historique, cliquez avec le bouton droit sur> Git> Annnotate pour afficher git blame et Afficher l'historique pour afficher une liste de l'historique des validations passées.
C'est utile lorsque vous souhaitez obtenir des informations du commentaire de validation sur le ticket dans lequel le processus a été entré et à quoi sert le processus, ou pour voir qui l'a écrit.
Comme GitHub, vous pouvez également passer du blâme au diff du commit correspondant, ce qui est utile si vous n'avez pas de navigateur de référentiel git ou si vous voulez simplement quelque chose d'un peu.
https://github.com/JetBrains/phpstorm-Téléchargez les stubs et accédez au répertoire standard,Preferences | Languages & Frameworks | PHP | Include path
Ajouté à.
Certains avertissements sortent parce qu'ils sont en conflit avec l'original, mais si cela ne vous dérange pas, d'une manière ou d'une autre.
C'est une histoire usée, mais j'ai été piégé plusieurs fois à cet égard, donc je ne peux pas l'organiser.
C'est une histoire que des résultats inattendus sont obtenus en raison d'une comparaison lâche par ==
. Par défaut dans PhpStorm, warn apparaît lors de la comparaison avec ==
, il est donc facile de le remarquer dans une certaine mesure, mais il s'adapte quand il convient, donc si vous connaissez le modèle du problème, ce sera la cause lorsque vous le rencontrerez C'est facile à atteindre.
Cela semble si célèbre que ça devient super.
$a = '2a';
$b = 2;
print ($a == $b);
// => true
Comme mentionné ci-dessus, c'est un phénomène que la chaîne de caractères «2a» et le nombre «2» sont les mêmes.
Cela peut être évité en faisant une comparaison stricte incluant le type avec ===
.
Il semble être célèbre pour comparer les valeurs de hachage de md5.
$a = '0e678342453'
$b = '0e123435465'
print ($a == $b);
// => true
C'est un phénomène que les chaînes de caractères semblent complètement différentes, mais elles sont identiques. Ce qui se passe, c'est que le e est interprété comme une notation exponentielle.
Puisque 0 ^ 673 = 0 = 0 ^ 123
, les deux valent 0, c'est donc la même chose qu'une comparaison lâche.
Cela peut également être évité en comparant avec ===
.
Puisque la comparaison des instructions switch dans le cas est ==
, il est facile de rester coincé dans le problème ci-dessus.
Les articles suivants sont bien organisés, veuillez donc les consulter.
Six choses que PHPer doit savoir sur les instructions switch