Portál AbcLinuxu, 13. července 2025 02:52
Zdravím, mám následující problém. Vytvořil jsem si (a zde pro zjednodušení oškubal co to šlo) třídu, která bude logovat nějaký message do databáze, souboru atd. Vytvářil jsem si tuto třídu:
class logging { public $log_file; public $save_in_db; ... public function __construct($log_file) { $this->log_file = $log_file; $this->save_in_db = true; // Defaultně se zpráva bude ukládat do databáze ... } public function write($message, $save_in_db = $this->save_in_db) { if($save_in_db){ // Uložit do DB } ...Mám představu, že defaultně se zpráva bude ukládat do databáze. Když zavolám funkci write s jedním parametrem, $save_in_db se automaticky nastaví na true a zpráva se uloží. Když ale zavolám funkci s druhým parametrem, který bude false, tak se zpráva neuloží. Bohužel když do funkce dám $this->neco, tak mi php skončí s chybou; PHP Parse error: syntax error, unexpected T_VARIABLE in /var/www/html/scripts/class/logging.class.php on line 34 a já nevím proč, protože logicky by to mělo fungovat. Díky za rady..
Řešení dotazu:
public function write($message, $save_in_db = NULL){ if(is_null($save_in_db)) $save_in_db = $this->save_in_db; if($save_in_db){ echo 'save'; } }
class logging { public $log_file; ... public function __construct($log_file) { $this->log_file = $log_file; ... } public function write($message, $save_in_db = true) { if($save_in_db){ // Uložit do DB } ...
no asi by se to spravne melo ukladat do predvoleneho typu :) proc pak volat tu metodu pokazde s jednim parametrem navic?
public function write($message);, následné:
public function write($message, $save_in_db = true);bych tedy já označil za špatné - sorry (minimálně dělající něco jiného).
public function write($message){ } public function writeForce($message,$save_in_db){ }bez nepovinných parametrů a možná obě opřel privátní fce
writeMsg()
, writeMsgToDb()
- ale to už jsme moc daleko…
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.