ugrás a tartalomhoz

Fájlba írás

mauladam · 2013. Júl. 21. (V), 18.00
Sziasztok!

Van egy problémám, amit sikerült valamelyest megoldanom, de elég körülményes módszernek tartom. Abban kérném a segítségeteket, hogy ha esetleg akad egy elegánsabb megoldás erre a feladatra, akkor írjátok le nekem.

Szerettem volna egy fájlba beírni a következő sorokat:
<?php
$valtozo = "valami";
?>
Mivel a $valtozo php kódban értelmeződik, ezért ez a módszer nem lehetséges:
fwrite($fajl, "$valtozo = 'valami'");
Ennek fényében csak egyetlen működő megoldást találtam:
fwrite($fajl, "$"."valtozo = 'valami'");
Ez viszont nagyon csúnya így, és kizártnak tartom, hogy nincs ne lehetne ennél szebben/egyszerűbben megoldani.

Köszönöm a segítséget!
 
1

Használd a szimpla

bamegakapa · 2013. Júl. 21. (V), 18.28
Használd a szimpla idézőjeleket:
fwrite($fajl, '$valtozo = "valami";');
A szimpla idézőjelek használata esetén nem értékeli ki sem a változóneveket, sem a bekszlessel eszképelt kifejezéseket (\n, \t és társai, kivéve \' és \\). Javaslom a dokumentáció tanulmányozását.

Ha valamilyen okból ragaszkodnál a dupla idézőjelekhez (mondjuk sortörést akarsz használni - \n), a dollár jel eszképelése is megoldás lehet:
fwrite($fajl, "\$valtozo = 'valami';");
Én inkább a szimpla idézőjeleket ajánlanám.
2

???

aztek · 2013. Júl. 22. (H), 01.43
igaza van az előttem szólónak, ha konkrétan ezt szeretnéd kivitelezni, akkor csak fel kell cserélni az idézőjelet, mert a '' közé írt szöveget nem nézi át a parser változók után kutatva, míg a "" közé írt stringet igen.
<?php

$foo = 'World';

echo "Hello $foo!";	// Hello World!
echo 'Hello $foo!';	// Hello $foo!

?>
MI A CÉL EZZEL?

mert ha egy változót szeretnél így eltárolni egy fájlban és a fájlt megnyitva feltölteni a $valtozo értékét, akkor számtalan más lehetőséged is van.
<?php

$d = array(
	'foo' => true,
	'bar' => 34,
	'msg' => 'valami'
);
$f = 'file.txt';
$c = null;

//	JSON
//	http://php.net/manual/en/book.json.php

if (file_put_contents($f, json_encode($d)) {
	$c = json_decode(file_get_contents($f)), true);
}

//	SERIALIZATION
//	http://php.net/manual/en/function.serialize.php
//
//	Nagyobb terjedelmű fájlt produkál, csak PHP számára értelmezhető vagy írsz
//	hozzá parsert más nyelvekhez, viszont osztályok példányait is 
//	képes tárolni..

if (file_put_contents($f, serialize($d))) {
	$c = unserialize(file_get_contents($f));
}

//	Mindkét esetet követően az alábbi feltétel igaz lesz
//	$c === $d

?>
3

Köszönöm

mauladam · 2013. Júl. 23. (K), 13.41
Köszönöm szépen a válaszokat.
A cél ezzel egy mysql_config.php fájl létrehozása, és a következő sorokat írnám bele:
<?php
    $mysql_host = "valami";
    $mysql_username = "valami";
    $mysql_password = "valami";
    $mysql_database = "valami";
?>
Bamegakapa javaslata megfelel erre a célra, úgyhogy ezzel a téma meg is oldódott.
Még egyszer köszönöm a segítséget!
4

És ennek célja?

Pepita · 2013. Júl. 24. (Sze), 23.55
És azt elárulnád, hogy miért a PHP progid csinálja a saját adatbázishozzáfárási configját? Ez miért változik? Ugyanaz az alkalmazás másik adatbázishoz, sőt, másik kapcsolattal csatlakozik? Ráadásul magának állítja?
Lehet én vagyok értetlen, de abszolút elképzelésem sincs, ez mire lenne jó. Legtöbbször egyetlen kapcsolat, egyetlen db, a config meg jól védett, rejtett és álcázott helyen, Az miért nem jó neked? Csak nem PHPMyAdmin 128-ast akarsz írni?