Portál AbcLinuxu, 30. listopadu 2025 15:54
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.