Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] problem z include w class
troian
post
Post #1





Grupa: Zarejestrowani
Postów: 184
Pomógł: 2
Dołączył: 3.02.2013

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


Witam, mam problem z załadowaniem za pośrednictwem include_once pliku php, oto jak wygąda szkielet strony:



index.php wczytuje takie pliki: script.php, funcrion.php, lang.php, oto jak wygląda wczytywanie plików:

  1. if(file_exists('_script/function.php'))
  2. include_once '_script/function.php';
  3. else
  4. die("Error load file function.php!");


I jeżeli chodzi o komunikację między plikami function a script to nie ma problemu, jednak zabawa zaczyna się z dołączeniem pliku lang.php.

oto jak wygląda wczytanie pliku lang.php w index
  1. $lang = '_lang/'.lang().'/lang.php';
  2. if(file_exists($lang))
  3. include_once $lang;
  4. else
  5. die("Error load file lang.php!");


Funkcja lang()
  1. function lang()
  2. {
  3. if(!isset($_COOKIE['lang']))
  4. {
  5. setcookie('lang', 'pl-PL', time() + (86400 * 30), "/");
  6. return 'pl-PL';
  7. }else{
  8. $lang = $_COOKIE['lang'];
  9. return $lang;
  10. }
  11. }


w pliku script.php mam stworzoną klasę oraz wewnątrz tej klasy funkcję:
Kod
class web
{
    
    public function register()
    {    
        [...]
        $info = $error_1;
        [...]
    }
}


$error_1 ma być pobierane z lang.php, i tutaj jest problem bo jeżeli napiszę import lang.php w index.php
to na całej stronie mogę pobierać zmienne z pliku jednak w funkcji register nie mogę wyświetlić informacji,
zaź kiedy ustawie import pliku bezprośrednio w funkcji register to wtedy wczytuje ów zmienne ale muszę usunąć wtedy
import lang.php z indexu gdyż wszystko się gryzie, i tutaj pytanie mam jak napisać funkcje lang tak aby do wszystkich
plików w drzewie oraz do wszystkich klass importowała zawartość pliku lang.php

Bardzo pszepraszam jak nie czytalnie coś napisałem, nie umiem bardziej tego wyjaśnić (IMG:style_emoticons/default/smile.gif)

Ten post edytował troian 19.08.2015, 10:38:07
Go to the top of the page
+Quote Post
bobek358
post
Post #2





Grupa: Zarejestrowani
Postów: 143
Pomógł: 22
Dołączył: 17.11.2007

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


Przekaż zawartość pliku lang (domniemywam że to zwykła tablica) do konstruktora klasy web i przypisz ją do pola klasy. Będziesz mógł używać wewnątrz klasy.
Go to the top of the page
+Quote Post
troian
post
Post #3





Grupa: Zarejestrowani
Postów: 184
Pomógł: 2
Dołączył: 3.02.2013

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


Cytat(bobek358 @ 19.08.2015, 11:46:39 ) *
Przekaż zawartość pliku lang (domniemywam że to zwykła tablica) do konstruktora klasy web i przypisz ją do pola klasy. Będziesz mógł używać wewnątrz klasy.


Jak zamienić to w tablice?
Kod
$registration_error_login_1 = 'Podany login jest zbyt długi!';
$registration_error_login_2 = 'Podany login jest zbyt krótki!';
$registration_error_pass_1 = 'Podane hasło jest zbyt długie!';
$registration_error_pass_2 = 'Podane hasło jest zbyt krótkie!';
$registration_error_pass_3 = 'Hasła nie są takie same!';
$registration_error_email_1 = 'Błędny adres e-mail!';
$registration_error_kup_1 = 'Błędny kod usuwania postaci!';
$registration_error_pin_1 = 'Błędny kod pin!';
Go to the top of the page
+Quote Post
id4
post
Post #4





Grupa: Zarejestrowani
Postów: 223
Pomógł: 1
Dołączył: --
Skąd: Rogożnik /K-ce/

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


Próbowałeś zapisać w ten sposób?
  1. $lang = '_lang/'.(lang()).'/lang.php';
Go to the top of the page
+Quote Post
troian
post
Post #5





Grupa: Zarejestrowani
Postów: 184
Pomógł: 2
Dołączył: 3.02.2013

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


Cytat(id4 @ 19.08.2015, 12:03:23 ) *
Próbowałeś zapisać w ten sposób?
  1. $lang = '_lang/'.(lang()).'/lang.php';


Nie wiem w czym to ma niby pomóc, ale dla świętego spokoju sprawdziłem. Nie działa niestety.
Go to the top of the page
+Quote Post
bobek358
post
Post #6





Grupa: Zarejestrowani
Postów: 143
Pomógł: 22
Dołączył: 17.11.2007

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


Możesz zrobić np tak:
  1. $lang['registration_error_login_1'] = 'Podany login jest zbyt długi!';
  2. $lang['registration_error_login_2'] = 'Podany login jest zbyt krótki!';
  3. $lang['registration_error_pass_1'] = 'Podane hasło jest zbyt długie!';
  4. ...


i wtedy przekazujesz tablicę $lang do klasy.
Ogólnie, plik z językiem do statycznych elementów lepiej zrobić na tablicy, niż w osobnych zmiennych dla każdego elementu.

Ten post edytował bobek358 19.08.2015, 11:14:38
Go to the top of the page
+Quote Post
troian
post
Post #7





Grupa: Zarejestrowani
Postów: 184
Pomógł: 2
Dołączył: 3.02.2013

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


Cytat(bobek358 @ 19.08.2015, 12:13:43 ) *
Możesz zrobić np tak:
  1. $lang['registration_error_login_1'] = 'Podany login jest zbyt długi!';
  2. $lang['registration_error_login_2'] = 'Podany login jest zbyt krótki!';
  3. $lang['registration_error_pass_1'] = 'Podane hasło jest zbyt długie!';
  4. ...


i wtedy przekazujesz tablicę $lang do klasy.
Ogólnie, plik z językiem do statycznych elementów lepiej zrobić na tablicy, niż w osobnych zmiennych dla każdego elementu.


Powiedz mi jeszcze tylko w jaki sposób mam załadować tablicę lang jedocześnie do klasy jak i do pojedynczych plików php, czy da się to jakoś przez index.php czy muszę do każdej klasy pisać include i do każdego pliku php ?
Go to the top of the page
+Quote Post
bobek358
post
Post #8





Grupa: Zarejestrowani
Postów: 143
Pomógł: 22
Dołączył: 17.11.2007

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


W pliku index.php masz ją cały czas dostępną tylko nie odwołujesz się przez
  1. echo $registration_error_login_1;

tylko
  1. echo $lang['registration_error_login_1'];


A co do dostępności w klasie tworzysz pole $lang w klasie web i przy jej wywołaniu przekazujesz tablicę:

  1. $web = new web($lang);

i w klasie web masz konstruktor:
  1. public function __construct($lang)
  2. {
  3. $this->lang = $lang;
  4. }

i teraz odwołujesz się do tych języków wewnątrz klasy poprzez
  1. $this->lang['registration_error_login_1']


Ten post edytował bobek358 19.08.2015, 11:33:17
Go to the top of the page
+Quote Post
troian
post
Post #9





Grupa: Zarejestrowani
Postów: 184
Pomógł: 2
Dołączył: 3.02.2013

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


Znalazłem nieco inne rozwiązanie problemu (IMG:style_emoticons/default/wink.gif) zamiast importować lang do kalsy, wysyłam z klasy nazwę zmiennej w tabeli np $error_register[2] = 'error_2';

a w pliku index.php piszę:
$lang[$error_login[2]];

i wszystko działa (IMG:style_emoticons/default/wink.gif)

Ten post edytował troian 19.08.2015, 11:49:06
Go to the top of the page
+Quote Post
viking
post
Post #10





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


  1. $this->lang
Go to the top of the page
+Quote Post

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: 22.08.2025 - 14:52