Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Nadpisywanie tablicy, Stałe nadpisywanie tablicy
MMySlime
post
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
Sephirus
post
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?
Go to the top of the page
+Quote Post
MMySlime
post
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
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? (IMG:style_emoticons/default/smile.gif)

Ten post edytował Sephirus 19.10.2012, 08:22:04
Go to the top of the page
+Quote Post
MMySlime
post
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
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
Go to the top of the page
+Quote Post
MMySlime
post
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. (IMG:style_emoticons/default/wink.gif)
Dzięki wam za pomoc!
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: 14.09.2025 - 20:00