Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak sprawdzić, czy da się wykonać funkcję wewnątrz klasy
Asmox
post
Post #1





Grupa: Zarejestrowani
Postów: 359
Pomógł: 12
Dołączył: 16.01.2009

Ostrzeżenie: (0%)
-----


Robię sobie kontroler dla mojej strony, nie wiem czy dobrze, ale wygląda on tak:
  1. <?php
  2. class FrontController
  3. {
  4.  private $requests = array();
  5.  private $action;
  6.  private $action_parameters = array();
  7.  
  8.  private function __construct() {
  9.    GLOBAL $_GET;
  10.    GLOBAL $_POST;
  11.    $this->requests['get'] = $_GET;
  12.    $this->requests['post'] = $_POST;
  13.    $this->action = $this->requests['get']['ac'];
  14.    foreach($this->requests['get'] as $key => $val) {
  15.      if($key == "ac") continue;
  16.      $action_parameters[$key] = $val;
  17.    }
  18.  }
  19.  
  20.  static function GetInstance() {
  21.    static $controller;
  22.    
  23.    if(!isset($controller)) {
  24.      $controller = new FrontController();
  25.    }
  26.    return $controller;
  27.  }
  28.  
  29.  public function Dispatch() {
  30.    $funcName = '$this' . 'Action' . $this->action;
  31.    echo $funcName;
  32.    if(is_callable(array("$this", "Action{$this->action}")))
  33.    echo 'ok';
  34.  }
  35.  
  36.  public function Action00() {
  37.    echo "in action 00";
  38.  }
  39. }
  40. ?>

Nie wiem tylko jak sprawdzić, czy funkcję Action00 da się wykonać (patrz przedostatnia linijka funkcji Dispatch)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Pr0100
post
Post #2





Grupa: Zarejestrowani
Postów: 114
Pomógł: 24
Dołączył: 18.01.2008
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


  1. <?php
  2. foreach($this->requests['get'] as $key => $val) {
  3.  if($key == "ac") continue;
  4.  $action_parameters[$key] = $val;
  5. }
  6. ?>


robisz pętle po to aby usunąć element tablic? Ciekawy pomysł ale chyba trochę mało wydajny... O tym też czytałeś w tej książce? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

  1. <?php
  2. $action_parameters = $this->requests['get'];
  3.  
  4. if (key_exists("ac", $action_parameters))
  5. {
  6.  unset($action_parameters["ac"]);
  7. }
  8. ?>


Ten post edytował Pr0100 22.06.2009, 18:37:35
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 15:12