Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> metody i zmienne statyczne, sposoby użycia
bliitz
post
Post #1





Grupa: Zarejestrowani
Postów: 155
Pomógł: 12
Dołączył: 5.04.2008

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


Witam

Fragment przykładowej klasy:
  1. class Parse_Data
  2. {
  3. public $data = array();
  4. /**
  5.   * Create an instance of Parse_Data
  6.   *
  7.   * @staticvar empty $instance
  8.   * @return object
  9.   */
  10. public static function instance()
  11. {
  12. static $instance;
  13. empty( $instance ) AND $instance = new Parse_Data;
  14. return $instance;
  15. }
  16. /**
  17.   *
  18.   * @param array $post
  19.   * @param array $data
  20.   * @return boolean
  21.   */
  22. public function check( $post, array $data )
  23. {
  24. $this->data = new Validation( $post );
  25. $this->data->pre_filter( 'trim' );
  26. foreach( $data as $k => $v )
  27. {
  28. $this->data->add_rules( $k, $v );
  29. }
  30. return $this->data->validate();
  31. }
  32. }


i sposób w jaki chcę jej użyć:
  1. if( Parse_Data::check( $_POST, array( 'art_title' => 'required',
  2. 'art_content' => 'required',
  3. 'art_teen' => 'numeric' ) ) )


i teraz kilka pytań:
1. Dlaczego nie zwraca to błędu mimo iż check() nie jest statyczna?
2. W jaki sposób mogę dostać się do zmiennej $data z zewnątrz czyli coś w ten deseń Parse_Data::instance()->data ? ( oczywiście to nie działa tylko dlaczego )
3. Czy jedyny sposób do utworzenie zmiennej $data jako statycznej i odwołanie się do niej w postaci Parse_Data::$data czy pozostawienie jej zwykłą ( nie statyczną ) i utworzenie metody dzięki której będzie do niej dostęp ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
bliitz
post
Post #2





Grupa: Zarejestrowani
Postów: 155
Pomógł: 12
Dołączył: 5.04.2008

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


Hmm metoda tej klasy jest wywoływana wiele razy w różnych plikach. Uznałem, że lepiej zrobić ją statyczną niż za każdym razem tworzyć jej obiekt. Chyba, że jest inny sposób na taki przypadek niż metody statyczne?

Ten post edytował bliitz 7.01.2010, 09:36:11
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: 8.10.2025 - 22:12