Forum » Programiranje » [php]Spreminjanje included datoteke
[php]Spreminjanje included datoteke
sash69 ::
Torej, imam en problemček. V svoj class (mojclass.php) includam neko php datoteko (data.php), v kateri je samo en array s podatki (iz datoteke data.php bere podatke nek drug, zelo obširen modul). Sedaj želim iz tega svojega classa spremeniti vrednosti v tistem array-u includane datoteke . Kako? :)
data.php
mojclass.php
Nekako takole naj bi zgledalo vse skupaj. Nikakor mi ne rata naresti tako, da bi se spremenil vsebino arraya $custom_data v data.php. Poskusil sem tudi z generiranjem stringa z vsebino nove, spremenjene datoteke data.php in shranjevanjem oz. prepisom originalne datoteke...
...vendar to tudi ne dela. Čeprav se ti ukazi uspešno izvedejo, originalna datoteka ostaja nespremenjena (sploh ni potrebno gledati vsebine, čas zadnje spremembe ostaja nespremenjen). Sicer sem prišel do neke grde rešitve tako, da predno zapišem $newDataPhp string, izbrišem originalno datoteko (kar je v zgornji kodi v komentarju) in nato ustvarim novo z istim imenom. Tako stvar deluje kakor želim :) a je to res zelo grd način in verjamem,da obstaja boljši.
data.php
<?php $custom_data = array ( 'custom_data1' => 'neki, se neki', 'custom_data2' => 'primer1, primer2'); ?>
mojclass.php
<?php class mojclass extends parentclass { function change() { include_once('data.php'); $temp_data1 = $custom_data['custom_data1']; $temp_data2 = $custom_data['custom_data2']; //podatke se iz arraya v $temp_data1 in $temp_data2 prebere normalno //torej imata sedaj vrednosti: $temp_data1 = 'neki, se neki' in $temp_data2 = 'primer1, primer2' //sedaj bi rad spremenil $temp_data1 ali $temp_data2, //in želel da se spremembe odražajo in shranijo v originalnem ($custom_data) arrayu v data.php } } ?>
Nekako takole naj bi zgledalo vse skupaj. Nikakor mi ne rata naresti tako, da bi se spremenil vsebino arraya $custom_data v data.php. Poskusil sem tudi z generiranjem stringa z vsebino nove, spremenjene datoteke data.php in shranjevanjem oz. prepisom originalne datoteke...
function overwriteData() { $newDataPhp = " <?php $custom_data = array ( 'custom_data1' => 'blabla, test, test2, test3', 'custom_data2' => 'primer1'); ?>"; //unlink('data.php'); $fh = fopen('data.php', 'w); fwrite($fh, $newDataPhp); fclose($fh); }
...vendar to tudi ne dela. Čeprav se ti ukazi uspešno izvedejo, originalna datoteka ostaja nespremenjena (sploh ni potrebno gledati vsebine, čas zadnje spremembe ostaja nespremenjen). Sicer sem prišel do neke grde rešitve tako, da predno zapišem $newDataPhp string, izbrišem originalno datoteko (kar je v zgornji kodi v komentarju) in nato ustvarim novo z istim imenom. Tako stvar deluje kakor želim :) a je to res zelo grd način in verjamem,da obstaja boljši.
- spremenil: sash69 ()
sash69 ::
A nebi bilo bolj preprosto da bi imel kakšen xml ali pa txt file?
Ja sej to sem pozabil dodat. :) Dejansko bi bilo bolj pametno uporabiti XML datoteko, ampak to pomeni tudi spreminjanje tistega modula, ki to datoteko dejansko uporablja za svoje delovanje, tega pa ne bi ravno rad počel. Saj drugače mi ni problem, z DOM ali pa simpleXML se taksna datoteka enostavno generira in bere, pač, rad bi pustil sestavo in ostale datoteke tistega modula nedotaknjene.
Morda web server proces nima pravic za spreminjanje te datoteke.
Mja, kar je pa zanimivo je to, da lahko datoteko brutalno pobrišem brez težav, prepisati je pa ne morem. :)
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Davčne blagajne (strani: 1 2 3 4 … 24 25 26 27 )Oddelek: Programiranje | 334601 (74604) | Macketina |
» | UJP Eracuni - B2BOddelek: Programiranje | 3075 (1399) | matmul |
» | PHP davčna blagajnaOddelek: Programiranje | 8156 (6180) | brble |
» | Visual C# problemOddelek: Programiranje | 3153 (2325) | mladec |
» | Jasper subreportOddelek: Programiranje | 1652 (1401) | nightrage |