Autor Zpráva
Shaim
Profil
Dobrý den,

nešlo by tento zápis zjednodušit na jeden řádek?
Orig:
    protected $limit = 0;
    protected $limit_tmp = 0;

Hodilo by se mi něco ve smyslu protected $limit, $limit_tmp = 0; (nebo tak něco, aby prostě obě proměnné měly stejnou hodnotu i viditelnost)

Napadlo mě to napsat v constructu např:
$this->limit = $this->limit_tmp = 0;

Ale rád bych to řešil přímo při deklaraci proměnné (navíc zde bych ještě musel stejně nastavovat viditelnost, takže by se kód zbytečně protáhl. Nějaké tipy?

Děkuji.
Tori
Profil
Shaim:
Hodilo by se mi něco ve smyslu protected $limit, $limit_tmp = 0;
Kdybyste si to rovnou zkusil, tak byste viděl, že to jde. Ale připadá mi to dost nepřehledné.
Shaim
Profil
Tori:
Však jsem to zkoušel a nefunguje to.

Dle toho, co píšete by test mělo mít hodnotu int (2), přitom má NULL, takže to asi nefunguje...
Nepřehledné to není. Když člověk má "příbuzné" proměnné, tak to naopak zjednodušuje zápis. Třeba obrazky_smazanane, obrazky_nove, apod.

Příklad:
Class test {

    public $test3 = 5;
    public $test, $test2 = 2;

    public function __construct() {

    }

}

$t = new test();
var_dump($t->test); // NULL
var_dump($t->test2); // int(2)
var_dump($t->test3); // int(5)
Tori
Profil
Shaim:
test mělo mít hodnotu int (2), přitom má NULL
A jakou hodnotu byste očekával u proměnných $test a $test1 v tomto případě? Bez třídy, jen tento skript, zkuste si to.
<?php
$test;
$test1, $test2 = 0;
var_dump($test, $test1, $test2);
To, co chcete, by se napsalo takto:
class Trida {
    public $test = 2, $test2 = 2;
}
- na tomto místě totiž nemůžete použít public $test = $test2 = 2;, protože tady lze přiřadit pouze konstantní hodnotu. Uvnitř některé metody by to už ale šlo.
Shaim
Profil
Tori:
Škoda, chtěl jsem si ušetřit práci a chtěl jsem jen hodnotu proměnné (ve Vašem případě "2") psát pouze jednou a ne ke každé proměnné. :-/

Pokud to nejde, tak neva, zůstanu u aktuálního zápisu. Můžu ještě poprosit o příklad? (reakce na část věty "Uvnitř některé metody by to už ale šlo. ")
Tori
Profil
Shaim:
To, co jste psal v [#1]: $this->limit = $this->limit_tmp = 0;
Amunak
Profil
Shaim:
Když člověk má "příbuzné" proměnné, tak to naopak zjednodušuje zápis. Třeba obrazky_smazanane, obrazky_nove, apod.
Jestli potřebujete takovéto proměnné, máte v objektovém návrhu nějakou chybu. Obrázek by totiž měl být vlastní objekt (měl by mít vlastní třídu), a měl by vlastnosti nové a smazané.

V nejhorším případě (ale pořád lepší než tohle) by bylo použít vícerozměrné pole:

$obrazky = array(
  'id-a'=>array('url'=>'asdfg.png', 'smazane'=>true, 'nove'=>false),
  'id-gg'=>array('url'=>'gg.png', 'smazane'=>false, 'nove'=>false),
);
nebo
$obrazky[] = array('url'=>'asdfg.png', 'smazane'=>true, 'nove'=>false);
$obrazky[] = array('url'=>'gg.png', 'smazane'=>false, 'nove'=>false);

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: