Proměnné PHP

Ernst
21. srp 2015 19:27 #123127
Už mi to opravdu nemyslí, ale jak mám udělat proměnnou, kterou naplním v jedné funkci a v druhé funkci ji přečtu.
Například:

v první funkci:

$sort_by = $order ;
var_dump ($sort_by) dá výsledek "rating"

V jiné funkci var_dump ($sort_by) dá výsledek null

kde dělám chybu?

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Ernst
21. srp 2015 21:10 #123128
už jsem to vyřešil definicí proměnné jako global

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Cony
22. srp 2015 01:13 #123129
Což je asi ten nejnešťastnější způsob. Pokud jsou funkce metodami nějaké třídy, použijte proměnou té třídy, tedy např. $this->sort_by

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Ernst
22. srp 2015 16:31 #123131
To chápu, ale lepší řešení jsem nevymyslel.

Dávám si pozor na název proměnný (dlouhá a česky)

Potřebuji v jedné funkci promennou $hodnota_cesky_1111=.f.

přečíst v jiné funkci.

takže proměnnou třídy asi nemohu použít (jsou v jiných třídách)

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od H13
22. srp 2015 23:10 #123135
Pak bych si vzal příklad z Joomly! a udělal to např. pomocí singletonů.

např: JFactory::getDBO();

vždy, v jakýkoliv funkci dostaneš informace o spojení s databází (nevytváří se neustále znovu, pokud je jednou vytvořené, použije se to již vytvořené). A může tuto funkci volat v jakékoliv třídě, v jakékoliv funkci.

je to vlastně náhrada za global, s tím, že je v tom větší pořádek, protože vždy voláš třídu a metodu, takže přesně víš, kde jsou instrukce té metody uloženy. Zatímco u globálních proměnných můžeš po určité době mít problém s orientací - kde byla proměnná vytvořena, uložena, atd.

Phoca Gallery - http://www.phoca.cz/phocagallery - obrázková galerie (Joomla!)
Phoca Guestbook - http://www.phoca.cz/phocaguestbook - kniha návštěv (Joomla!)
Phoca Download - http://www.phoca.cz/phocadownload - stahování souborů (Joomla!)
Phoca Cart - http://www.phoca.cz/phocacart - e-shop,...

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Ernst
23. srp 2015 09:23 - 23. srp 2015 09:24 #123137
tak jsem to vyzkoušel, zrušil jsem proměnné global a v požadované funkci jsem dal:
$sort_by_moje = $this->filterOrder[$order]
a to nefunguje, proměnná se nemění

původně funkční bylo, že tato proměnná je globální a v jiné funkci mám:
$sort_by_moje= $this->filterOrder[$order];
a to funguje, proměnná se mění dle toho, jak je to setřízeno

Potřebuji si někde přečíst, dle čeho je setříděno a pak to pomocí IF rozvětvit

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Ernst
23. srp 2015 10:28 - 23. srp 2015 10:30 #123138
dopracoval jsem se ještě k jednomu řešení:
$test=($query->order) ;
var_dump($test) ;

to mi vypíše"

object(JDatabaseQueryElement)[709]
protected 'name' => string 'ORDER BY' (length = 8 )
protected 'elements' =>
array (size=1)
0 => string 'p.dist asc' (length=10)
protected 'glue' => string ',' (length=1)

jak se dostanu k tomu řetězci 'p.dist asc' ?
výraz var_dump($test->elements) ; nebo var_dump($test->elements[0])
mi končí chybou.

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.