Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Nadpisywanie tablicy
Forum PHP.pl > Forum > PHP
MMySlime
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.
Sephirus
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?
MMySlime
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?
Sephirus
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
MMySlime
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...
!*!
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.
MMySlime
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!
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.