Graças a algumas mudanças aqui no trabalho, tivemos que repensar o uso do Code Igniter como framework para os sistemas PHP. A idéia é aproximar programadores Java e PHP, e fazer com que ambos sejam capazes de desenvolver em qualquer uma das duas linguagens. Por isso eu disse que estava bebendo do café, uns tempos atrás.
Pra facilitar o trabalho de todo mundo, e até mesmo facilitar o entendimento da framework Struts do Java, pelos programadores PHP, resolvemos testar alguns portes desta aplicação. Com a ajuda do Leonardo Rodrigues, que programa Java e PHP, adotamos o Studs por ela ser, segundo ele, bem fiel ao Struts.
Achei a documentação um pouco fraca, e não esclarece muito como a framework funciona, mas entender o funcionamento das coisas, pelo menos até aqui, não foi muito difícil.
De cara o Leonardo achou uma diferença entre o Struts e o Studs, que é a possibilidade de definir qual método da classe será acionado pela action, configurado pela propriedade parameter do elemento action no struts-config.xml. Mas nada que uma mexida no núcleo não resolva.
. Basta abrir o arquivo RequestProcessor.php, na pasta WEB-INF/studs/action/. Procure o método processActionExecute. Segue o método alterado:
function &processActionExecute(&$request, &$response, &$action, &$form, &$mapping)
{
$parameter = $mapping->getParameter() ? $mapping->getParameter() : 'execute';
// try {
$result =& $action->$parameter($mapping, $form, $request, $response);
//$result =& $action->execute($mapping, $form, $request, $response);
// } catch (RootException $e) {
if ($e = catch_exception())
{
$result =& $this->processException($request, $response, $e, $form, $mapping);
}
// }
return $result;
}
Dessa forma você não precisará fazer uma classe pra cada Action, e, se não definir um parameter, o Struds vai assumir o comportamento padrão, que é executar o método execute().