Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Nadpisywanie tablicy, Stałe nadpisywanie tablicy
MMySlime
post 18.10.2012, 15:48:46
Post #1





Grupa: Zarejestrowani
Postów: 45
Pomógł: 1
Dołączył: 22.08.2012

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


Witam, od jakiegoś czasu piszę własny system CMS.
Jestem na etapie dokańczania panelu administracyjnego.
Cały plik z konfiguracją mam zapisany w pliku config.inc.php.
Wszystkie dane są zapisywane w formach tablicy, np.:
  1. $config['lang'] = 'pl';

Jak te tablice nadpisać żeby wyglądały tak jak w przykładzie i żeby były na tych samych miejscach? (w tych samych linijkach)
Dziękuję za pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
Sephirus
post 18.10.2012, 16:14:32
Post #2





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


Ok mogę jedynie domyślać się o co chodzi...

Czy chodzi Ci o to żeby móc ten plik config edytować z poziomu CMS? Czyli zapisywać w nim nową tablice z nowymi wartościami?

Jeśli tak odsyłam do funkcji var_export - odpowiedni zwraca tablicę w taki sposób by można ją było zapisać w pliku PHP dodając jedynie <?php i ?>.

Config:

  1. <?php
  2. $config = array(
  3. 'opcja' => 'wartosc',
  4. 'opcja2' => 'wartosc'
  5. )
  6. ?>


Wynik działania var_export na zmiennej $config:

Kod
array(
    'opcja' => 'wartosc',
    'opcja2' => 'wartosc'
)


wystarczy zatem:

  1. file_put_contents('config.inc.php','<?php $config = ' . var_export($config,1) . '; ?>');


O to chodziło?


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
MMySlime
post 18.10.2012, 16:25:37
Post #3





Grupa: Zarejestrowani
Postów: 45
Pomógł: 1
Dołączył: 22.08.2012

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


Mam rozumieć że jeżeli mam kod np. taki:
  1. $config['title'] = 'Strona tytułowa';
  2. $config['author'] = '...';
  3. $config['charset'] = 'UTF-8';
  4. $config['keywords'] = 'Strona testowa';
  5. $config['desc'] = 'Strona testowa';

To po wykonaniu funkcji
  1. file_put_contents('config.inc.php','<?php $config['charset'] = ' . var_export($config,1) . '; ?>');
ta tablica będzie ciągle na tej samej linijce?

Ten post edytował MMySlime 18.10.2012, 16:25:50
Go to the top of the page
+Quote Post
Sephirus
post 19.10.2012, 08:19:46
Post #4





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


Nie. Ale jeśli zamiast zapisu:

  1. $config['title'] = 'Strona tytułowa';
  2. $config['author'] = '...';
  3. $config['charset'] = 'UTF-8';
  4. $config['keywords'] = 'Strona testowa';
  5. $config['desc'] = 'Strona testowa';


dasz:

  1. $config = array (
  2. 'title' => 'Strona tytułowa',
  3. 'author' => '...',
  4. 'charset' => 'UTF-8',
  5. 'keywords' = 'Strona testowa',
  6. 'desc' => 'Strona testowa'
  7. );


To za pomocą var_export łatwo i szybko możesz nadpisywać config. Jeśli z jakiegoś (dziwnego IMHO) powodu koniecznie chcesz zachować kolejność linijek to i wyświetlać to w taki sposób to możesz ewentualnie posłużyć się pętlą:

  1. $content = '';
  2. foreach($config AS $key => $value) {
  3. $content.= '$'."config['{$key}'] = '{$value}';\n";
  4. }
  5.  
  6. file_put_contents('config.inc.php',"<?php\n{$content}\n?>");


I uzyskasz wówczas efekt kolejności. Jeśli chcesz inaczej podejść do tematu to jest już to kwestia parsowania dokumentu itd...

Czemu musi to być w linijkach? smile.gif

Ten post edytował Sephirus 19.10.2012, 08:22:04


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
MMySlime
post 19.10.2012, 10:39:19
Post #5





Grupa: Zarejestrowani
Postów: 45
Pomógł: 1
Dołączył: 22.08.2012

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


Musi gdyż po tej tablicy mam sekcje z funkcją define która po części korzysta z tych tablic.
Zrobiłem tak wówczas dlatego iż nie wiedziałem jak można by było nadpisywać define...
Go to the top of the page
+Quote Post
!*!
post 19.10.2012, 10:46:23
Post #6





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Za bardzo kombinujesz, umieść tablice w jednym pliku a stałe w drugim i używaj var_export. Poza tym jeśli stałe korzystają z tych tablic, to coś tu jest nie tak.

Ten post edytował !*! 19.10.2012, 10:47:14


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
MMySlime
post 19.10.2012, 11:16:59
Post #7





Grupa: Zarejestrowani
Postów: 45
Pomógł: 1
Dołączył: 22.08.2012

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


Zrobię tak jak we dwóch radziliście.
Wszystko wsadzę w oddzielne pliki i za pomocą funkcji var_export będę nadpisywać tablice. wink.gif
Dzięki wam za pomoc!
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 22.06.2025 - 22:10