Skip to content

Instantly share code, notes, and snippets.

View marcelsud's full-sized avatar

Marcelo Santos marcelsud

View GitHub Profile
<?php
function validateEmail($email)
{
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
throw new InvalidArgumentException("Invalid email");
} else {
$domain = end(explode('@', $email));
if (!checkdnsrr($domain, 'MX')) {
@marcelsud
marcelsud / gist:6919308
Created October 10, 2013 14:29
Text editor in one line
data:text/html;charset=utf-8, <title>TextEditor</title> <link rel="shortcut icon" href="http://g.etfv.co/https://docs.google.com"/> <style> html{height: 100%;} body{background: -webkit-linear-gradient(#f0f0f0, #fff); padding: 3%; height: 94%;} .paper { font: normal 12px/1.5 "Lucida Grande", arial, sans-serif; width: 50%; height: 80%; margin: 0 auto; padding: 6px 5px 4px 42px; position: relative; color: #444; line-height: 20px; border: 1px solid #d2d2d2; background: #fff; background: -webkit-gradient(linear, 0 0, 0 100%, from(#d9eaf3), color-stop(4%, #fff)) 0 4px; background: -webkit-linear-gradient(top, #d9eaf3 0%, #fff 8%) 0 4px; background: -moz-linear-gradient(top, #d9eaf3 0%, #fff 8%) 0 4px; background: -ms-linear-gradient(top, #d9eaf3 0%, #fff 8%) 0 4px; background: -o-linear-gradient(top, #d9eaf3 0%, #fff 8%) 0 4px; background: linear-gradient(top, #d9eaf3 0%, #fff 8%) 0 4px; -webkit-background-size: 100% 20px; -moz-background-size: 100% 20px; -ms-background-size: 100% 20px; -o-background-size: 100% 20p
<?php
namespace Acme\Services;
class ServiceLocator {
private $services = array();
public function set($name, $instance)
{
$this->services[$name] = $instance;
}
<?php
namespace Acme\Movie;
class SomeDatabaseMapper
{
public function findAll($table)
{
//Find all entries in some way
}
}
<?php
namespace Acme\Services;
class SomeDatabaseMapper
{
public function findAll($table)
{
//Find all entries in some way
}
}
<?php
namespace Acme\Services;
class Container {
private $services = array();
public function set($name, $instance)
{
$this->services[$name] = $instance;
}
title isChild
XDebug
true

XDebug {#xdebug_title}

Uma das ferramentas mais úteis no desenvolvimento de software é um depurador apropriado. Ele permite que você trace a execução do seu código e monitore os itens na pilha de execução. XDebug, um depurador de PHP, pode ser utilizado por várias IDEs para prover breakpoints e inspecionar a pilha. Ele também lhe permite que ferramentas como PHPUnit e

@marcelsud
marcelsud / object-calisthenics-applied-to-php.md
Created July 28, 2014 01:58
Object Calisthenics applied to PHP

Object Calisthenics applied to PHP

  • OC#1 - Only one indentation level per method

  • OC#2 - Do not use the 'else' keyword

  • OC#3 - Wrap primitive types and string, if it has behaviour

  • OC#4 - Only one -> per line, if not getter or fluent

@marcelsud
marcelsud / json-definition.json
Last active August 29, 2015 14:14
workflow api draft
{
"start": "paymentTypeConditionalNode",
"paymentTypeConditionalNode": {
"credit_card": "creditcardSubWorkflow",
"debit_card": "debitSubWorkflow"
},
"creditcardSubWorkflow": "endMergeNode",
"debitSubWorkflow": "endMergeNode",
"endMergeNode": "end"
}

Tenha orgulho do seu (código) legado

Traduzido e adaptado de http://blog.8thlight.com/ginny-hendry/2014/07/11/take-pride-in-your-legacy-code.html

Um desenvolvedor se juntando a um projeto, a menos que o projeto esteja iniciando uma aplicação completamente nova, irá trabalhar com o temido "código legado". O processo de se tornar produtivo pode ser um pesadelo. Código legado ganhou sua reputação por geralmente ser mal estruturado, ter grande dificuldade de se trabalhar, não ser documentado, e ser obscuro. Você verá as evidências no código com diferentes estilos de programação dos diversos desenvolvedores que já trabalharam naquela codebase.

Agravando essa realidade está o fato de que o código legado está em produção. Qualquer melhoria que você queira fazer precisa ser incremental pois, por definição, código legado já possui usuários. Os usuários esperam zero downtime, baixo tempo de resposta, e um visual consiste