Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: deklaracja wartości zmiennej w klasie
Forum PHP.pl > Forum > PHP
Maciek1705
Witam moi drodzy ma do Was ogromną prośbę czy pomogli byście mi w pewnej sprawie. Otóż mam klasę napisaną w oop służy ona do zmiany języka strony. Mam także skrypt który po ip rozpoznaje kod kraju czyli np. pl, de, en, us. Chce połączyś te dwa skrypty ze sobą.
  1. <?php
  2. include("geoip.inc");
  3. $gi = geoip_open("GeoIP.dat",GEOIP_STANDARD);
  4. $country_code = geoip_country_code_by_addr($gi, $_SERVER['REMOTE_ADDR']);
  5. $country_name = geoip_country_name_by_addr($gi, $_SERVER['REMOTE_ADDR']);
  6. geoip_close($gi);
  7.  
  8. if($country_code == "PL"){
  9. //ustaw domyslny jezyk polski
  10. }
  11. else if($country_code == "EN"){
  12. //ustaw domyslny jezyk angielski
  13. }
  14. else if($country_code == "DE"){
  15. //ustaw domyslny jezyk niemiecki
  16. }
  17. else //ustaw domyslny jezyk angielski
  18. ?>


skrypt z klasą od zmiany języka jest następujący
  1. <?php
  2. class Lang
  3. {
  4. private $languages = array('pl' => 'Polski', 'en' => 'English', 'de' => 'Deutch');
  5. private $current_language = FALSE;
  6. private $lines = array();
  7.  
  8. private static $instance = FALSE;
  9.  
  10. ...
  11.  
  12. }
  13. ?>


zmienna current language jest odpowiedzialny za bierzący jezyk
sęk w tym że to są moje początki oop i nie wiem czy w tego if co podałem wcześniej mogę wstawić po prostu $current_language = 'pl'; czy robi się this lub podobnymi proszę o pomoc w tej kwestii.

Drugie pytanko jest banalne dla tych co z oop mieli już do czynienia :
  1. //jeśli mam strone a na niej sam kod html bez otwartych znaków <?php?> to zmienna wygląda tak
  2. <?= __('main_page') ?> // samo jej wyświetlenie
  3.  
  4. //co zrobić gdy mam już otwarty znacznik php i chce wstawić tą zmienną czy robię to tak?
  5. echo $alfa = '<h2>'.= __('main_page').'</h2>';
  6. //czy tak
  7. echo $alfa = '<h2>';?> <?= __('main_page') ?><?php echo '</h2>';
jarmiar
Aby ustawic wartosc zmiennej klasowej uzywasz konstrukcji:

  1.  
  2. $this -> zmienna = 'wartosc';
  3.  
Maciek1705
ok dzięki za podpowiedź.
Wstawiam sobie ten fragment wewnątrz klasy tuż po linii "private static $instance = FALSE;"
  1. include("geoip.inc");
  2. $gi = geoip_open("GeoIP.dat",GEOIP_STANDARD);
  3. $country_code = geoip_country_code_by_addr($gi, $_SERVER['REMOTE_ADDR']);
  4. $country_name = geoip_country_name_by_addr($gi, $_SERVER['REMOTE_ADDR']);
  5. geoip_close($gi);
  6. if($country_code == "PL"){
  7. //ustaw domyslny jezyk polski
  8. $this -> current_language = 'pl';
  9. }
  10. else if($country_code == "EN"){
  11. //ustaw domyslny jezyk angielski
  12. $this -> current_language = 'en';
  13. }
  14. else if($country_code == "DE"){
  15. //ustaw domyslny jezyk niemiecki
  16. $this -> current_language = 'de';
  17. }
  18. else $this -> current_language = 'en'; //ustaw domyslny jezyk angielski
  19.  


dziwna rzecz się dzieje bo pokazuje mi błą na include i nie wiem w czym rzecz, jak to przerobić na obiektowe php?questionmark.gif sorki za takie pytania - wybaczcie
viking
W klasie są metody. Nie możesz tak po prostu tego wrzucić.

  1. class cos {
  2. private static $instance = FALSE;
  3.  
  4. public function xxx() {}
  5. }


Poczytaj jakiś kurs. http://tworzenie-stron-www.org/article/8/p...obiektowe_w_php
Maciek1705
dzięki chłopaki za wskazówki poczytałem kurs i działa będę wdzięczny jak jeszcze nakierujecie mnie z tą drugą kwestią
  1. //jeśli mam strone a na niej sam kod html bez otwartych znaków <?php?> to zmienna wygląda tak
  2. <?= __('main_page') ?> // samo jej wyświetlenie
  3.  
  4. //co zrobić gdy mam już otwarty znacznik php i chce wstawić tą zmienną czy robię to tak?
  5. echo $alfa = '<h2>'.= __('main_page').'</h2>';
  6. //czy tak
  7. echo $alfa = '<h2>';?> <?= __('main_page') ?><?php echo '</h2>';


z góry dzięki
Uriziel01
Cóż to za konstrukcja ? To jest jakiś system szablonów czy coś podobnego ?
  1. <?= __('main_page') ?>


Bo pod kod PHP nie podchodzi.
strife
To nie jest wyświetlenie zmiennej tylko funkcji.

@Uriziel01 - Osobiście domyślam się, że __() określa zastosowanie jakiejś konstrukcji z rodziny i18n, spotkałem się z tym kilka razy (chyba nawet w Symfony było).

@Maciek1705 - po prostu robisz echo, w tej sposób.

  1. <?php echo '<h2>' . __('main_page') . '</h2>'; ?>
Maciek1705
nie nie nie to nie jest system szablonów znalazłem taki typ odwołanie na internecie że to jest wywołanie zmiennej zapisanej w pliku do którego odwołuje się klasa, dla mnie było to dziwne bo myślałem że przez samo echo wystarczy ale tak jak pokazałem działa więc się tego tzymałem, strife dzięki za pomoc dziś przetestuje czy działa.
viking
I jeszcze mała uwaga. Raczej staraj się nie stosować zapisu skrócnego <??> bo możesz mieć z tym problemy.
Maciek1705
ok dzięki wielkie wszystko działa temat do zamknięcia.
PS dzięki za poradę zmienię skrócony zapis na pełny <?php ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.