PhpStorm Tips, ticks and standard setup
- Tips and Tracks for PHPStorm (PHPStorm Tips and Tricks.md)
- Standard setup for PHP projects (Standard.md)
This focuses on generating the certificates for loading local virtual hosts hosted on your computer, for development only.
Do not use self-signed certificates in production ! For online certificates, use Let's Encrypt instead (tutorial).
/* https://leahayes.wordpress.com/2011/08/28/documenting-javascript-with-jsdoc3/ | |
Namespaces can still be documented when a more abstract mechanism is used. @lends allows members to be added to an existing namespace: | |
*/ | |
/** | |
* Root namespace | |
* @namespace root | |
*/ | |
$namespace('root', /** @lends root **/ { | |
/** |
You should use merge operation on entities which are in detached state and you want to put them to managed state.
Merging should be done like this $entity = $em->merge($detachedEntity)
. After that $entity
refers to the fully managed copy returned by the merge operation. Therefore if your $form
contains detached entities, you should adjust your code like this:
$doctrineManager = $this->getDoctrine()->getManager();
foreach ($form->getData()->getEntities() as $detachedEntity) {
$entity = $doctrineManager->merge($detachedEntity);
$doctrineManager->remove($entity);
}
$doctrineManager->flush();
Quick tip for handling CSRF Token Expiration - common issue is when you use csrf protection is that if | |
a form sits there for a while (like a login form, but any the same) the csrf token in the form will | |
expire & throw a strange error. | |
Handling it is simple, and is a good lesson for dealing with other types of errors in a custom manner. | |
In Middleware you will see a file VerifyCsrfToken.php and be tempted to handle things there. DON'T! | |
Instead, look at your app/Exceptions/Handler.php, at the render($request, Exception $e) function. | |
All of your exceptions go through here, unless you have excluded them in the $dontReport array at the |
.wrapper{ | |
width: 550px; | |
text-align: justify; | |
background: firebrick; | |
font-size: 0; | |
font-size: 12px\9; /* IE6-9 only hack */ | |
} | |
.wrapper div{ | |
background: white; |
'use strict'; | |
// simple express server | |
var express = require('express'); | |
var app = express(); | |
var router = express.Router(); | |
app.use(express.static('public')); | |
app.get('/', function(req, res) { | |
res.sendfile('./public/index.html'); |
When the directory structure of your Node.js application (not library!) has some depth, you end up with a lot of annoying relative paths in your require calls like:
const Article = require('../../../../app/models/article');
Those suck for maintenance and they're ugly.
# delete local tag '12345' | |
git tag -d 12345 | |
# delete remote tag '12345' (eg, GitHub version too) | |
git push origin :refs/tags/12345 | |
# alternative approach | |
git push --delete origin tagName | |
git tag -d tagName |