This just posted on stackoverflow.
I recently had trouble with this as I was trying to handle destruction specifically for the case where the server experiences a timeout and I wanted to include class data in the error log. I would receive an error when referencing &$this (although I've seen it done in a few examples, possibly a version issue or a symfony side-effect), and the solution I came up with was fairly clean:
class MyClass
{
protected $myVar;
/**
* constructor, registers shutdown handling
*/
public function __construct()
{
$this->myVar = array();
// workaround: set $self because $this fails
$self = $this;
// register for error logging in case of timeout
$shutdown = function () use (&$self) {
$self->shutdown();
};
register_shutdown_function($shutdown);
}
/**
* handle shutdown events
*/
public function shutdown()
{
$error = error_get_last();
// if shutdown in error
if ($error['type'] === E_ERROR) {
// write contents to error log
error_log('MyClass->myVar on shutdown' . json_encode($this->myVar), 0);
}
}
...
Hope this helps!
News
My campaign to produce Shakespeare's Sonnets: A Graphic Novel Adaptation needs your help! Please sign up at https://www.patreon.com/fisherking for access to exclusive content and the opportunity to be a part of the magic!
I'm also producing a podcast discussing the sonnets, available on
industrial curiosity, itunes, spotify, stitcher, tunein and youtube!
For those who prefer reading to listening, the first 25 sonnets have been compiled into a book that is available now on Amazon and the Google Play store.
I'm also producing a podcast discussing the sonnets, available on
industrial curiosity, itunes, spotify, stitcher, tunein and youtube!
For those who prefer reading to listening, the first 25 sonnets have been compiled into a book that is available now on Amazon and the Google Play store.
Labels
algorithms
(2)
art
(2)
automation
(8)
aws
(4)
azure
(2)
bamboo
(1)
banking
(2)
blockchain
(1)
books
(5)
c#
(7)
cloud
(4)
collaboration
(5)
comics
(3)
comments
(4)
communication
(6)
crypto
(1)
data ownership
(1)
database
(5)
deployment
(10)
design
(3)
design patterns
(2)
development
(32)
devops
(5)
documentation
(16)
dynamodb
(1)
encryption
(6)
formatting
(4)
git
(1)
golang
(1)
google
(1)
hiring
(1)
html5
(5)
iis
(1)
installation
(5)
integration
(2)
interfaces
(2)
java
(1)
javascript
(11)
lambda
(2)
linux
(5)
mysql
(1)
node.js
(7)
open source
(15)
plugins
(3)
privacy
(2)
processes
(2)
promotions
(1)
python
(4)
readability
(3)
recruitment
(1)
regex
(2)
reviews
(1)
security
(13)
self-publishing
(2)
shakespeare
(3)
sql server
(1)
tattoos
(2)
tools
(21)
user experience
(1)
version control
(3)
virtualization
(1)
Tuesday, 28 July 2015
Thursday, 23 July 2015
Setting up Squiz Labs code sniffer for PHPStorm on Windows
PHPStorm is a brilliant piece of software that's highly extensible. One of the extensions that's particularly useful is Squiz Labs' PHP Code Sniffer. It wasn't quite apparent from other documentation I found online that it's really simple to set up for Windows! So with the help of a co-worker I put together the following tutorial:
To install the code sniffer for PHPStorm:
To install the code sniffer for PHPStorm:
- Download and install PHP for Windows
- Download https://squizlabs.github.io/PHP_CodeSniffer/phpcs.phar
- Create a file called phpcs.bat in the C:\php directory
@echo off
"C:\php\php.exe" -f "C:\PATH_TO_DOWNLOADED_PHAR\phpcs.phar" -- %* - In PHPStorm
- Open File->Settings
- Select Languages & Frameworks->PHP
- Add a local interpreter that points to C:\php\php.exe
- Select Languages & Frameworks->PHP->Code Sniffer
- Update the local configuration to point to C:\php\phpcs.bat
- increase the Tool process timeout if you're working on remote code
- Click Validate to ensure that the code sniffer is loaded correctly
- Click Apply
- Select Editor->Inspections
- Select the checkbox for PHP Code Sniffer validation
- Select PHP Code Sniffer validation
- Set the coding standard (you'll probably want PSR2)
- To run the code sniffer
- Press CTRL + ALT + SHIFT + I
- Type "code sniffer" and press enter
- Select the current file
And there you go!
Subscribe to:
Posts (Atom)