Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Ustawienia w jednym pliku
Rysh
post
Post #1





Grupa: Zarejestrowani
Postów: 821
Pomógł: 111
Dołączył: 11.09.2006
Skąd: Biała Podlaska

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


Witam, od pewnego czasu piszę aplikację w PHP i nadszedł czas kiedy chciałbym w niej zrobić porządki... Posłużę się przykładem:

Przepuśćmy mamy taką funkcję:
  1. <?php
  2. function dodaj_liczbe($liczba) {
  3. $liczba += 5;
  4. return $liczba;
  5. }
  6.  
  7. $xyz = 3;
  8. echo dodaj_liczbe($xyz);
  9.  
  10. ?>

Co chcę osiągnąć? Chciałbym wszystkie ustawienia przenieść do jednego pliku w którym miałbym wszystkie ustawienia np setting.php:
  1. <?php
  2. $setting = array(
  3. 'dodaj_liczbe' => 5,
  4. 'inne_ustawienie' => 2,
  5. );
  6. ?>

Aby kod ostatecznie wyglądał:
  1. <?php
  2. function dodaj_liczbe($liczba) {
  3. $liczba += $setting['dodaj_liczbe'];
  4. return $liczba;
  5. }
  6.  
  7. $xyz = 3;
  8. echo dodaj_liczbe($xyz);
  9.  
  10. ?>


Aby w przyszłości jeśli chciałbym zmienić jakieś ustawienia wystarczyło żebym zmienił w pliku setting.php zamiast szukać wszystkiego w kodzie.

Proszę o jakąś podpowiedz pod czym tego szukać. Dodam że zmienne globalne zostały wyłączone.
Pozdrawiam.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
Wicepsik
post
Post #2





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

Ostrzeżenie: (20%)
X----


include ?
Go to the top of the page
+Quote Post
qba10
post
Post #3





Grupa: Zarejestrowani
Postów: 264
Pomógł: 20
Dołączył: 19.08.2007
Skąd: Bryńsk k. Lidzbarka Welskiego (nie mylić z Warmińskim)

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


To zależy jak masz stworzony kod...
Ja na przykład też tworzę aplikację w której mam mnóstwo takich ustawień i wszystkie trzymam w pliku ini.
Cała moja aplikacja składa się z głównej klasy, w której są wykonywane i wczytywane inne pliki i aplikacje. Plik ini prasuje w tej głównej klasie więc w innych plikach wykonywanych w tej klasie bez problemu mogę wykorzystać wszystkie ustawienia z pliku ini.

Nie wiem jak to będzie u ciebie wyglądało, ale możesz też wczytać ustawienia do sesji i z nich korzystać. Sesje są tablicami super globalnymi, wiec będziesz miał do nich dostęp wszędzie.
Go to the top of the page
+Quote Post
Rysh
post
Post #4





Grupa: Zarejestrowani
Postów: 821
Pomógł: 111
Dołączył: 11.09.2006
Skąd: Biała Podlaska

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


Cytat(Wicepsik @ 13.02.2010, 23:55:56 ) *

Jeśli użyje include przed funkcją zmienna nie będzie widoczna w funkcji.

Przykład (ust.php):
  1. <?php $zmienna = array( 'dodaj' => 5, ); ?>

oraz test.php:
  1. <?php
  2. include("ust.php");
  3. function dodaj($liczba) {
  4. $liczba += $zmienna['dodaj'];
  5. return $liczba;
  6. }
  7. $abc = 8;
  8. echo dodaj($abc);
  9. ?>

test.php zwróci mi liczbę 8, a nie 13 (8+5).
Może nie do końca napisałem o co mi chodzi, mam około 30 funkcji i w większości mam jakieś ważne ustawienia, dlatego chciałbym w jakiś sposób załączyć raz plik z ustawieniami a następnie ich używać w każdej z funkcji.
Oczywiście istnieje wyjście używać w każdej funkcji include - jednak ja szukam innego wyjścia.
Istnieje funkcja global, ale chyba nie spełni moich oczekiwań.

Do $_SESSION również nie chcę tego wczytywać za dużo tych ustawień jest.

Ten post edytował Rysh 14.02.2010, 00:17:42
Go to the top of the page
+Quote Post
Pilsener
post
Post #5





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


Powszechnie przyjęta praktyka to pliki .ini i .cfg, jeśli musisz trzymać ustawienia w pliku .php (by nikt tego nie mógł pobrać) to najlepiej w postaci tablicy zserializowanej.

Jeśli chcesz zmiennych dostępnych w całym skrypcie to używaj tablic superglobalnych lub wprowadzaj tablicę ustawień do każdej funkcji jako parametr.
Go to the top of the page
+Quote Post
wookieb
post
Post #6





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Zainteresuj się klasami statycznymi.
Przykład
  1.  
  2. class Settings
  3. {
  4. private static $settings = array();
  5.  
  6. public static function load()
  7. {
  8. // tutaj ladujesz ustawienia do self::$settings;
  9. }
  10.  
  11. public static function dodaj($cos)
  12. {
  13. return self::$settings['liczba'] + $cos;
  14. }
  15. }
  16.  
Go to the top of the page
+Quote Post
Rysh
post
Post #7





Grupa: Zarejestrowani
Postów: 821
Pomógł: 111
Dołączył: 11.09.2006
Skąd: Biała Podlaska

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


Dzięki wookieb.
W takim razie czas rozpocząć przygodę z klasami i obiektami (tego się obawiałem (IMG:style_emoticons/default/smile.gif) ).

Pozdrawiam.
Go to the top of the page
+Quote Post
gothye
post
Post #8





Grupa: Zarejestrowani
Postów: 702
Pomógł: 65
Dołączył: 16.03.2009

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


dlatego nie widać zmiennej w funkcji ponieważ jest zadeklarowana przednią ,chcąc się do niej odwołać wewnątrz funkcji musisz użyć global;

  1. funkcja jakaś()
  2.  
  3. {
  4.  
  5.     global $zmienna ;
  6.  
  7.     echo $zmienna ;
  8.  
  9. }
  10.  


Go to the top of the page
+Quote Post
altruista2
post
Post #9





Grupa: Zarejestrowani
Postów: 127
Pomógł: 32
Dołączył: 8.02.2010

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


Plik ustawienia.php:
  1. $GLOBALS['ustawienia'] = Array(
  2. 'liczba' => 34,
  3. 'inna' => 22,
  4. 'tekst' => 'forum php'
  5. );


Plik PHP:
  1. include('ustawienia.php');
  2.  
  3. function dodaj($x) {
  4. return $GLOBALS['ustawienia']['liczba'] + $x;
  5. }
  6.  
  7. echo 'Wynik = '.dodaj(4);

wynik:
Cytat
Wynik = 38
Go to the top of the page
+Quote Post
Pilsener
post
Post #10





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


Tylko nie global wewnątrz funkcji! To bardzo zła praktyka i prędzej czy później zniknie z PHP. Po to są tablice superglobalne i tablice jako parametr funkcji + oczywiście obiektówka, by nie trzeba było tego robić. Inaczej Twoja funkcja niczym się nie różni od kawałka zaincludowanego kodu, czy zatem możemy wtedy jeszcze mówić o funkcji? Nie róbmy bałaganu w kodzie, gdy przerabiam jakiś kod i widzę pełno global to mnie mdli.
Go to the top of the page
+Quote Post
altruista2
post
Post #11





Grupa: Zarejestrowani
Postów: 127
Pomógł: 32
Dołączył: 8.02.2010

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


@up: też mnie mdli na ten widok... Pracuję na etat w dużym sklepie komputerowym, mój poprzednik który zrobił stronę, miał nawyki do:
  1. function funkcja() {
  2. global $x;
  3. global $y;
  4. global $z;
  5. global $bog_wie_co;
  6. }
  7.  
  8. $bog_wie_co = 34;
  9. $x = 2;
  10. $z = 66;
  11. funkcja();

I jeszcze zapytania mysql typu:
  1. mysql_query("SELECT * FROM Tablica WHERE ID=".$_POST['ID'])

I jeszcze to:
  1. global $search;
  2. echo 'Szukasz '.$search;

Pracuję już w tej firmie około 3 miesiące i do dziś nie dałem rady wyłapać wszystkich tych "smaczków"

Ten post edytował altruista2 14.02.2010, 12:09:41
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: 28.09.2025 - 19:27