Il s’avère qu’il y a un long chemin entre “j’ai un contrat de livre” et “je sais tout ce qu’il y a à savoir pour écrire ce livre”.
Peu importe à quel point vous vous sentez expert. Peu importe combien de temps vous avez passé à apprendre et à enseigner. Dans l’ensemble, tous les auteurs techniques à qui j’ai parlé ont décrit à quel point ils ont appris…avait apprendre—quand ils ont écrit un livre.
j’ai appris un parcelle par écrit Laravel: Up and Running. Et je veux le partager avec vous.
Je voulais écrire un livre que tu aimeras
J’avais deux grandes peurs quand j’ai commencé à écrire Laravel : opérationnel.
D’abord, j’avais peur de n’avoir rien à proposer d’autre que ce qui était déjà sur mon blog. Cette peur était rapidement apaisé quand j’ai réalisé à quel point il y avait à couvrir.
Et deuxièmement, j’avais peur d’écrire un livre qui serait utile pour les débutants mais inutile pour tout le monde. Encore une fois, cette peur n’a pas duré longtemps.
Il y a autant de contenu dans ce livre que j’ai dû apprendre que j’ai écrit qu’il y a de contenu que je connaissais déjà. La quantité de plongées à la source que j’ai dû faire et de tests d’applications que j’ai dû écrire pour que ce livre soit correct est incroyable. Pendant plusieurs chapitres, j’ai passé plus de temps à coder, tester et lire le code source qu’à écrire le livre lui-même.
Quelques choses que j’ai apprises
Aucun article de blog ne pourrait contenir toutes les nouvelles choses que j’ai apprises en écrivant ce livre. J’utilise et enseigne Laravel depuis des années, et j’ai toujours été choqué par le nombre d’outils, d’aides et de fonctionnalités que j’ai découverts.
En voici quelques-uns qui se démarquent pour moi que je n’avais jamais vus avant d’écrire le livre.
1. Le Cookie Façade est un cookie spécial
Les cookies sont un peu différents des autres outils similaires (cache, session, etc.) en ce sens que PHP ne peut pas les écrire au milieu d’une requête utilisateur. Au contraire, ils doivent être retournés avec la réponse.
Cela signifie que Cookie Facade (et le monde cookie()
helper) n’a rien comme Cookie::put()
pour vous permettre de déposer directement un cookie. Traditionnellement, nous avons créé des cookies, puis les avons attachés à la réponse à l’aide d’un code comme celui-ci :
Route::get('dashboard', function () {
$cookie = cookie('saw-dashboard', true, 15);
return view('dashboard')->withCookie($cookie);
});
Mais en écrivant le livre, j’ai appris qu’il y a un queue()
méthode sur la façade des cookies (et seul sur la façade, pas l’assistant ou la classe injectée) que vous pouvez utiliser avant la réponse, et Laravel’s AddQueuedCookiesToResponse
le middleware supprimera la file d’attente de ce cookie et le joindra à votre réponse après le retour de votre route. Cela rend donc ce code possible:
Route::get('dashboard', function () {
Cookie::queue('saw-dashboard', true, 15);
return view('dashboard');
});
Dans cet exemple, cela n’a pas beaucoup d’importance, mais dans une méthode de contrôleur plus longue, vous apprécierez peut-être la possibilité de définir votre cookie plus tôt, ou même de le définir ailleurs que sur votre contrôleur, si vous le souhaitez.
2. Joindre des fichiers aux e-mails est plus facile que vous ne le pensez
J’ai toujours su que vous pouviez joindre des fichiers à vos e-mails, mais j’ai pensé que c’était quelque chose comme “obtenir l’objet Swift sous-jacent, puis exécuter cinquante lignes de magie pour y arriver”.
Non. C’est bêtement simple.
Mail::send('emails.whitepaper', [], function ($m) {
$m->to('barasa@wangusi.ke');
$m->subject('Your whitepaper download');
$m->attach(storage_path('pdfs/whitepaper.pdf'));
});
Il est également incroyablement simple d’intégrer une image directement dans votre modèle d’e-mail :
// emails/has-image.blade.php
Here's that image we talked about sending:
<img src="https://mattstauffer.com/blog/{{ $message->embed(storage_path("embed.jpg')) }}">
Thanks!
La magie.
3. Vous pouvez enchaîner plus de méthodes Scheduler que ne le montrent les docs
La documentation montre que vous pouvez enchaîner quelques types de méthodes Scheduler pour définir le calendrier d’exécution de vos commandes. Mais il s’avère que vous pouvez enchaîner n’importe quelle combinaison raisonnable de temps ensemble.
Cela rend le planificateur beaucoup plus puissant que ce que la documentation laisse entendre. Vous pouvez maintenant faire quelque chose comme ceci :
// Run once an hour, weekdays, from 8-5
$schedule->command('do:thing')->weekdays()->hourly()->when(function () {
return date('H') >= 8 && date('H') <= 17;
});
Vous pouvez également écrire des ordonnanceurs plus complexes dans d’autres classes et les transmettre avec une Closure :
$schedule->command('do:thing')->everyThirtyMinutes()->skip(function () {
return app('SkipDetector')->shouldSkip();
});
4. Vous pouvez affirmer qu’une vue reçoit certaines données
Il semble que tout le monde devrait le savoir, mais d’une manière ou d’une autre, je n’étais jamais tombé dessus. Dans vos tests, vous pouvez affirmer que, si vous visitez un itinéraire particulier, la vue de cet itinéraire obtient des données transmises. Vous pouvez donc écrire un itinéraire comme celui-ci :
Route::get('test', function () {
return view('test')->with('foo', 'bar');
});
Et puis écrivez ce test:
public function test_view_gets_data()
{
$this->get('test');
$this->assertViewHas('foo'); // true
$this->assertViewHas('foo', 'bar'); // true
$this->assertViewHas('foo', 'baz'); // false
}
Obtenez votre échantillon gratuit ici, les amis !
Il y a un parcelle plus que j’ai appris que je n’ai pas couvert ici. Une grande partie de cela transparaîtra dans les petits détails, ce qui le rend moins adapté à un article de blog comme celui-ci, mais croyez-moi, il y en a beaucoup.
Si vous voulez consulter le livre lui-même, j’ai un échantillon gratuit disponible sur le site que j’ai mis en place pour le livre : laravelupandrunning.com
Vous voulez en savoir plus aujourd’hui ?
Enfin, si vous savez déjà que vous voulez le livre, il est disponible pour pré-commande de livres imprimés et numériques sur O’Reillyet si vous pré-commandez le livre électronique dès maintenant, vous obtiendrez une copie gratuite des 12 premiers chapitres, directement sortis de mon éditeur de texte, avant qu’ils n’aient vu la frappe du stylo d’un éditeur.
Merci de vérifier cela. Je suis convaincu que, peu importe qui vous êtes (sauf vous, Taylor, et peut-être vous, Jeffrey), vous apprendrez quelque chose de ce livre. Je me suis cassé les fesses pour que cela soit utile non seulement aux personnes qui découvrent Laravel, mais à tous les membres de la communauté Laravel, et je pense que vous allez tous l’adorer.