fork download
  1. <?php
  2.  
  3. // Questão https://pt.stackoverflow.com/questions/228769/%C3%89-poss%C3%ADvel-interceptar-chamadas-a-fun%C3%A7%C3%B5es-de-uma-classe
  4.  
  5.  
  6. ## EXEMPLO
  7. ## TABELA USUARIOS
  8. ## +-------------------+
  9. ## | ID | NOME |
  10. ## +-------------------+
  11. ## | 1 | USER01 |
  12. ## | 2 | USER02 |
  13. ## | 3 | USER03 |
  14. ## +-------------------+
  15. ##
  16. ## TABELA PERMISSOES
  17. ## +-----------------------------------------+
  18. ## | ID | USER_ID | CREATE | EDIT | DELETE |
  19. ## +-----------------------------------------+
  20. ## | 1 | 1 | 1 | 0 | 0 |
  21. ## | 1 | 2 | 1 | 1 | 1 |
  22. ## | 1 | 3 | 0 | 0 | 1 |
  23. ## +-----------------------------------------+
  24. ##
  25. ## USO DE 0, PARA INDICAR QUE NÃO É PERMITIDO,
  26. ## USO DE 1, PARA INDICAR QUE É PERMITIDO
  27. $Users = [
  28. 1 => [
  29. 'id' => 1,
  30. 'nome' => 'USER01',
  31. 'permissoes' => [
  32. 'create' => 1,
  33. 'edit' => 0,
  34. 'delete' => 0
  35. ]
  36. ],
  37. 2 => [
  38. 'id' => 2,
  39. 'nome' => 'USER02',
  40. 'permissoes' => [
  41. 'create' => 1,
  42. 'edit' => 1,
  43. 'delete' => 0
  44. ]
  45. ],
  46. 3 => [
  47. 'id' => 3,
  48. 'nome' => 'USER03',
  49. 'permissoes' => [
  50. 'create' => 1,
  51. 'edit' => 1,
  52. 'delete' => 1
  53. ]
  54. ],
  55. 4 => [
  56. 'id' => 4,
  57. 'nome' => 'USER04',
  58. 'permissoes' => [
  59. 'create' => 0,
  60. 'edit' => 0,
  61. 'delete' => 1
  62. ]
  63. ]
  64. ];
  65.  
  66.  
  67. Class usuarios {
  68. /**
  69.   * Função para verificar se o usuário logado
  70.   * tem permissão para acessar uma página / método etc..
  71.   */
  72. function verificarPermissao($UserID, $FuncName) {
  73. global $Users;
  74. if($Users[$UserID]["permissoes"][$FuncName] === 1) {
  75. $this->$FuncName();
  76. } else {
  77. echo "Usuário não tem permissão para executar: {$FuncName}\n";
  78. }
  79.  
  80. }
  81.  
  82. function create() {
  83. echo "Usuário tem permissão para criar\n";
  84. }
  85.  
  86. function edit() {
  87. echo "Usuário tem permissão para editar\n";
  88. }
  89.  
  90. function delete() {
  91. echo "Usuário tem permissão para deletar\n";
  92. }
  93. }
  94.  
  95. $user1 = new usuarios();
  96. $user1->verificarPermissao(1, 'edit');
  97. $user1->verificarPermissao(1, 'create');
  98. $user1->verificarPermissao(1, 'delete');
  99. echo "\n\n";
  100. $user2 = new usuarios();
  101. $user2->verificarPermissao(2, 'edit');
  102. $user2->verificarPermissao(2, 'create');
  103. $user2->verificarPermissao(2, 'delete');
  104. echo "\n\n";
  105. $user3 = new usuarios();
  106. $user3->verificarPermissao(3, 'edit');
  107. $user3->verificarPermissao(3, 'create');
  108. $user3->verificarPermissao(3, 'delete');
  109. echo "\n\n";
  110. $user4 = new usuarios();
  111. $user4->verificarPermissao(4, 'edit');
  112. $user4->verificarPermissao(4, 'create');
  113. $user4->verificarPermissao(4, 'delete');
  114.  
Success #stdin #stdout 0.01s 82880KB
stdin
Standard input is empty
stdout
Usuário não tem permissão para executar: edit
Usuário tem permissão para criar
Usuário não tem permissão para executar: delete


Usuário tem permissão para editar
Usuário tem permissão para criar
Usuário não tem permissão para executar: delete


Usuário tem permissão para editar
Usuário tem permissão para criar
Usuário tem permissão para deletar


Usuário não tem permissão para executar: edit
Usuário não tem permissão para executar: create
Usuário tem permissão para deletar