OK, solo estoy tratando de mejorar al hacer clases más sueltas, etc. en PHP solo para mejorar mis habilidades. Tengo una base de datos de prueba local en mi computadora y para la tabla de usuarios tengo una columna llamada "función". Intento crear una función que sea una función general para obtener permisos para un usuario, por lo que no depende de una tarea específica que esté intentando hacer.almacenando permisos en una matriz multidimensional php
Cuando un usuario intenta hacer algo como crear un nuevo tema de foro, etc, quiero consultar la base de datos y si "papel" es un valor determinado, permisos de almacén en una matriz multidimensional como la siguiente:
$permissions = array(
'forums' => array("create", "delete", "edit", "lock"),
'users' => array("edit", "lock")
);
Luego deseo poder buscar ese conjunto para obtener un permiso específico sin escribir lo siguiente en la parte superior de cada archivo PHP después de que un usuario publique un formulario marcando isset ($ var). Así que si el usuario está tratando de editar un usuario que quiero ser capaz de hacer algo como lo siguiente a través de un método de la clase si es posible
if (Class::get_permissions($userID),array($permissionType=>$permission))) {
// do query
} else {
// return error message
}
¿Cómo sería una buena manera de tener un permiso de acoplamiento flexible función de comprobación que se ser capaz de hacer algo como esto? No tiene que estar dispuesto exactamente como este, sino que debe estar ligeramente acoplado para poder reutilizarlo y no estar sujeto a una determinada tarea. Pero quiero poder tener una serie de permisos en lugar de simplemente "admin", "usuario", etc. para la reutilización, por lo que no restringe mis opciones en el futuro. Porque tengo un montón de código que es así ahora en la parte superior de mis archivos de script php.
if (Class::get_permissions($userID) == "admin") {
// allow query
} else {
// return error
}
Gracias por cualquier entrada para ayudar a conseguir esto a donde yo no sigo escribiendo las mismas cosas una y otra vez.
La sección ACL de Zend tiene una introducción ok sobre cómo funciona su acl: http://framework.zend.com/manual/en/zend.acl.introduction.html –