O Phabricator é um aplicativo PHP incrivelmente bem codificado, mas falta um pouco na parte da documentação. Mas, novamente, que projeto de código aberto não é assim? Nos últimos meses, tenho integrado lentamente o Phabricator, uma nova ferramenta de revisão, ao Bugzilla, uma ferramenta muito mais antiga. Na etapa mais recente, precisei adicionar um campo personalizado (DifferentialCommitMessageCustomField class extension) às revisões:
Criando o DifferentialCommitMessageCustomField foi bastante simples, mas, devido à estrutura do DifferentialRevision e de outras classes do Phabricator, recuperar o valor do campo não é tão fácil quanto se espera. Depois de tentar vários métodos e vasculhar o código-fonte da cadeia de classes, foi Aviv Eyal quem forneceu uma função utilitária interessante para recuperar dados de campo personalizados para um determinado tipo de objeto do Phabricator:
function get_custom_field_value($object, $key_field) {
$field = PhabricatorCustomField::getObjectField(
$object,
PhabricatorCustomField::ROLE_DEFAULT,
$key_field
);
id(new PhabricatorCustomFieldStorageQuery())
->addField($field)
->execute();
$value = $field->getValueForStorage();
return $value;
}
No meu caso, o $object era um DifferentialRevision e o $key_field é differential:bugzilla-bug-id, definido em meu DifferentialCommitMessageCustomField . Se o senhor estiver adicionando um CustomField de qualquer tipo a qualquer aplicativo Phabrication, o senhor pode usar esse mesmo método.
Quando há falta de documentação e níveis de herança com uma dúzia de níveis de profundidade, é ótimo que os membros da comunidade possam ajudar uns aos outros – isso diz muito sobre o projeto.
5 APIs HTML5 que o senhor não sabia que existiam
Quando se diz ou se lê “HTML5”, é de se esperar que dançarinas exóticas e unicórnios entrem na sala ao som de “I’m Sexy and I Know It”. Mas o senhor pode nos culpar? Assistimos à estagnação das APIs fundamentais por tanto tempo que um recurso básico…
Criar classes com espaço de nome com o MooTools
O MooTools sempre foi um pouco criticado por não usar e padronizar inerentemente classes JavaScript baseadas em namespaced, como faz o Dojo Toolkit. Muitos desenvolvedores criam suas classes como globais, o que geralmente é mal visto. Na maioria das vezes, não concordo com essa posição, mas cada um tem a sua. De qualquer forma…
Marca d’água “Top” usando MooTools
Sempre que tiver uma página longa de conteúdo, geralmente o usuário deseja adicionar um link de âncora “top” na parte inferior da página para que o usuário não precise rolar a página para chegar ao topo. O único problema com esse método é que…
Usar gráficos personalizados de imagens ausentes usando o MooTools
A falta de imagens em seu site pode fazer com que você ou sua empresa pareçam completamente amadores. Infelizmente, às vezes uma imagem é excluída ou corrompida sem o seu conhecimento. O senhor concorda comigo que o ícone “x vermelho” padrão do IE parece horrível, então por que não usar
 seu próprio gráfico de imagem ausente?