9. David Zülke
M. Dowling
Leo Feyer
G. Blanco
Larry Garfield
Taylor Otwell
Nate Abele
Brett Bieber
P. Sturgeon
Evert Pot
John Mertic
miércoles 6 de noviembre de 13
Ivan Habunek
Kris Wallsmith
Paul Jones
Larry Masters
Jordi Boggiano
André Romcke K. Dambekalns Lukas Smith
Don Gilbert
Nils Adermann Mike van Riel Paul Dragoonis
Will Durand
B. Schussek
Cal Evans
Alex. Makarov
Pádraic Brady
10. Do you want to become a
member?
miércoles 6 de noviembre de 13
30. <?php
namespace VendorPackage;
use FooInterface;
use BarClass as Bar;
use OtherVendorOtherPackageBazClass;
class Foo extends Bar implements FooInterface
{
public function sampleFunction($a, $b = null)
{
if ($a === $b) {
bar();
} elseif ($a > $b) {
$foo->bar($arg1);
} else {
BazClass::bar($arg2, $arg3);
}
}
final public static function bar()
{
// method body
}
}
miércoles 6 de noviembre de 13
31. <?php LF
namespace VendorPackage; LF
use FooInterface; LF
use BarClass as Bar; LF
use OtherVendorOtherPackageBazClass; LF
class Foo extends Bar implements FooInterface LF
{
public function sampleFunction($a, $b = null) LF
{ LF
if ($a === $b) { LF
bar(); LF
} elseif ($a > $b) { LF
$foo->bar($arg1); LF
} else { LF
BazClass::bar($arg2, $arg3); LF
} LF
} LF
final public static function bar() LF
{ LF
// method body
} LF
} LF
LF
miércoles 6 de noviembre de 13
32. <?php
namespace VendorPackage;
use FooInterface;
use BarClass as Bar;
use OtherVendorOtherPackageBazClass;
class Foo extends Bar implements FooInterface
{
public function sampleFunction($a, $b = null)
{
if ($a === $b) {
bar();
} elseif ($a > $b) {
$foo->bar($arg1);
} else {
BazClass::bar($arg2, $arg3);
}
}
final public static function bar()
{
// method body
}
}
miércoles 6 de noviembre de 13
80
120
33. <?php
namespace VendorPackage;
use FooInterface;
use BarClass as Bar;
use OtherVendorOtherPackageBazClass;
class Foo extends Bar implements FooInterface
{
public function sampleFunction($a, $b = null)
{
if ($a === $b) {
bar();
} elseif ($a > $b) {
$foo->bar($arg1);
} else {
BazClass::bar($arg2, $arg3);
}
}
final public static function bar()
{
// method body
}
}
miércoles 6 de noviembre de 13
35. true, false and null all lowercase
miércoles 6 de noviembre de 13
36. <?php
namespace VendorPackage;
LF
use FooInterface;
use BarClass as Bar;
use OtherVendorOtherPackageBazClass;
LF
class Foo extends Bar implements FooInterface
{
public function sampleFunction($a, $b = null)
{
if ($a === $b) {
bar();
} elseif ($a > $b) {
$foo->bar($arg1);
} else {
BazClass::bar($arg2, $arg3);
}
}
final public static function bar()
{
// method body
}
}
miércoles 6 de noviembre de 13
37. <?php
namespace VendorPackage;
use FooInterface;
use BarClass as Bar;
use OtherVendorOtherPackageBazClass;
class Foo extends Bar implements FooInterface
{
public $foo = null;
final public static function bar($arg1, &$arg2)
{
// body
}
}
miércoles 6 de noviembre de 13
38. <?php
namespace VendorPackage;
use FooInterface;
use BarClass as Bar;
use OtherVendorOtherPackageBazClass;
class Foo extends Bar implements FooInterface
{
public $foo = null;
final public static function bar($arg1, &$arg2)
{
// body
}
}
miércoles 6 de noviembre de 13
39. <?php
namespace VendorPackage;
use FooInterface;
use BarClass as Bar;
use OtherVendorOtherPackageBazClass;
class Foo extends Bar implements FooInterface
{
public $foo = null;
final public static function bar($arg1, &$arg2)
{
// body
}
}
miércoles 6 de noviembre de 13
40. <?php
namespace VendorPackage;
use FooInterface;
use BarClass as Bar;
use OtherVendorOtherPackageBazClass;
class Foo extends Bar implements FooInterface
{
public $foo = null;
final public static function bar($arg1, &$arg2)
{
// body
}
}
miércoles 6 de noviembre de 13
41. <?php
namespace VendorPackage;
use FooInterface;
use BarClass as Bar;
use OtherVendorOtherPackageBazClass;
class Foo extends Bar implements FooInterface
{
public $foo = null;
final public static function bar($arg1, &$arg2)
{
// body
}
}
miércoles 6 de noviembre de 13
42. <?php
namespace VendorPackage;
use FooInterface;
use BarClass as Bar;
use OtherVendorOtherPackageBazClass;
class Foo extends Bar implements FooInterface
{
public $foo = null;
final public static function bar($arg1, &$arg2)
{
// body
}
}
miércoles 6 de noviembre de 13
43. <?php
namespace VendorPackage;
use FooInterface;
use BarClass as Bar;
use OtherVendorOtherPackageBazClass;
class Foo extends Bar implements FooInterface
{
public $foo = null;
final public static function bar($arg1, &$arg2)
{
// body
}
}
miércoles 6 de noviembre de 13
44. <?php
namespace VendorPackage;
use FooInterface;
use BarClass as Bar;
use OtherVendorOtherPackageBazClass;
class Foo extends Bar implements FooInterface
{
public $foo = null;
final public static function bar($arg1, &$arg2)
{
// body
}
}
miércoles 6 de noviembre de 13
45. <?php
namespace VendorPackage;
use FooInterface;
use BarClass as Bar;
use OtherVendorOtherPackageBazClass;
class Foo extends Bar implements FooInterface
{
public $foo = null;
final public static function bar($arg1, &$arg2)
{
// body
}
}
miércoles 6 de noviembre de 13
46. and the list goes on and on and on
... methods and function calls
... control structures
... closures
... multiple lines
...
http://www.php-fig.org/psr/psr-2/
miércoles 6 de noviembre de 13
47. > phpcs --standard=PSR2 *.php
https://github.com/squizlabs/PHP_CodeSniffer
miércoles 6 de noviembre de 13
48. > php php-cs-fixer.phar fix .
https://github.com/fabpot/PHP-CS-Fixer
miércoles 6 de noviembre de 13
50. <?php
namespace PsrLog;
interface LoggerInterface
{
public function alert($message, array $context = array());
public function critical($message, array $context = array());
public function error($message, array $context = array());
public function warning($message, array $context = array());
public function notice($message, array $context = array());
public function info($message, array $context = array());
public function debug($message, array $context = array());
public function log($level, $message, array $context = array());
}
miércoles 6 de noviembre de 13
51. RFC 5424
Emergency – the system is unusable
Alert – immediate action is required
Critical – critical conditions
Error – errors that do not require immediate attention but should be monitored
Warning – unusual or undesirable occurrences that are not errors
Notice – normal but significant events
Info – interesting events
Debug – detailed information for debugging purposes
http://tools.ietf.org/html/rfc5424
miércoles 6 de noviembre de 13
52. $message = "{DB}: SELECT * FROM user";
$context = array("DB" => "MY_PROJECT");
$logger->debug($message, $context); // "MY PROJECT": SELECT * FROM user"
miércoles 6 de noviembre de 13
54. <?php
namespace PsrLog;
abstract class AbstractLogger implements LoggerInterface
{
public function emergency($message, array $context = array())
{
$this->log(LogLevel::EMERGENCY, $message, $context);
}
.
.
.
public function debug($message, array $context = array())
{
$this->log(LogLevel::DEBUG, $message, $context);
}
}
miércoles 6 de noviembre de 13
55. <?php
namespace PsrLog;
trait LoggerTrait
{
public function emergency($message, array $context = array())
{
$this->log(LogLevel::EMERGENCY, $message, $context);
}
.
.
.
abstract public function log($level, message, array $context)
}
miércoles 6 de noviembre de 13
56. <?php
namespace PsrLog;
class NullLogger extends AbstractLogger
{
public function log($level, $message, array $context = array())
{
}
}
miércoles 6 de noviembre de 13