¿Es posible usar el equivalente para los atributos del método .NET en PHP, o de alguna manera simularlos?¿Atributos del método falso en PHP?
Contexto
Tenemos una clase de enrutamiento en el local URL que nos gusta mucho. La forma en que funciona hoy en día es que primero tenemos que registrar todas las rutas con un gestor de ruta central, así:
$oRouteManager->RegisterRoute('admin/test/', array('CAdmin', 'SomeMethod'));
$oRouteManager->RegisterRoute('admin/foo/', array('CAdmin', 'SomeOtherMethod'));
$oRouteManager->RegisterRoute('test/', array('CTest', 'SomeMethod'));
Siempre que se encuentra una ruta, el método de devolución de llamada (en los casos anteriores son métodos estáticos de clase) se llama. Sin embargo, esto separa la ruta del método, al menos en el código.
Busco algún método para poner la ruta más cerca del método, ya que podría haber hecho en C#:
<Route Path="admin/test/">
public static void SomeMethod() { /* implementation */ }
Mis opciones como las veo ahora, son o bien para crear una especie de phpDoc extensión que me permite algo como esto:
/**
* @route admin/test/
*/
public static function SomeMethod() { /* implementation */ }
Pero eso requeriría la escritura/reutilización de un analizador de phpDoc, y lo más probable es que sea bastante lento.
La otra opción sería separar cada ruta en su propia clase, y tienen métodos como los siguientes:
class CAdminTest extends CRoute
{
public static function Invoke() { /* implementation */ }
public static function GetRoute() { return "admin/test/"; }
}
Sin embargo, esto todavía requeriría registrar cada clase única, y no habría un gran número de de clases como esta (por no mencionar la cantidad de código adicional).
¿Cuáles son mis opciones aquí? ¿Cuál sería la mejor manera de mantener la ruta cerca del método que invoca?
Muy bueno. Me interesaste en hacer algo similar a esto para proyectos futuros. – Kevin
¡Gracias por destacar este punto! de mucha ayuda – Hilmi