Autor | Zpráva | ||
---|---|---|---|
Honza_n Profil * |
#1 · Zasláno: 3. 7. 2010, 23:32:02
Definoval jsem stdClass $pod_jmena mimo třídu word a chci ji zpřístupnit ze třídy word.
class words { var $poj; // podstatná jména function &init() { $this->poj=$pod_jmena; print_r($this->poj); } } Zkoušel jsem i global ale nic nejde to zpřistupnit. Jak na to? |
||
Honza_n Profil * |
#2 · Zasláno: 3. 7. 2010, 23:34:27
tak teda ze třídy words
|
||
martindeveloper Profil |
#3 · Zasláno: 3. 7. 2010, 23:37:17
Přesně nechápu co potřebujete ale zkusím.
public $poj; A potom můžete $pod = $instance->poj; |
||
Majkl578 Profil |
#4 · Zasláno: 3. 7. 2010, 23:53:38
martindeveloper:
var má stejnou viditelnost jako public , akorát je to vykopávka z PHP 4.
Z jakého důvodu funkce vrací (ve skutečnosti nevrací) referencí? K dotazu: musíš ji nějak předat, nejspíš argumentem. |
||
Honza_n Profil * |
#5 · Zasláno: 3. 7. 2010, 23:55:50
Nejde o funkci. Jde o dtd třídu - objekt $pod_jmena . $pod_jmena jsem definoval ještě před definováním třídy. Uvnitř funkce se nezobrazuje
|
||
Honza_n Profil * |
#6 · Zasláno: 3. 7. 2010, 23:56:18
oprava:
jde o std třídu - objekt $pod_jmena |
||
Honza_n Profil * |
#7 · Zasláno: 3. 7. 2010, 23:57:15
global $pod_jmena;
nezabira |
||
Majkl578 Profil |
#8 · Zasláno: 3. 7. 2010, 23:58:16 · Upravil/a: Majkl578
To na tom co jsem řekl nic nemění.
Uveď příslušnou část kódu, ne jen útržek. |
||
Honza_n Profil * |
#9 · Zasláno: 4. 7. 2010, 00:04:52
$pod_jmena = (object) array( 'vzory' => (object) array ( 'm' => array ('mz1', 'mz2', 'md1', 'md2', 'ml1', 'ml2' ), 'z' => array ('zz1', 'zz2', 'zd1', 'zd2' ), 's' => array ('sz1', 'sz2' ), 'mz' => array ('mz1', 'mz2' ), 'zz' => array ('zz1', 'zz2' ), 'sz' => array ('sz1', 'sz2' ), 'm1' => array ('mz1', 'md1', 'ml1' ), 'z1' => array ('zz1', 'zd1' ), 's1' => array ('sz1' ), 'm2' => array ( 'mz2', 'md2', 'ml2' ), 'z2' => array ( 'zz2', 'zd2' ), 's2' => array ( 'sz2' ), '1' => array ('mz1', 'md1', 'ml1', 'zz1', 'zd1', 'sz1' ), '2' => array ('mz2', 'md2', 'ml2', 'zz2', 'zd2', 'sz2' ) ) ); |
||
Honza_n Profil * |
#10 · Zasláno: 4. 7. 2010, 00:18:30
Já jsem to trochu zkrátil. Ve words je constructor
function words( $params = array() ) { $this->init(); } a volám to takto if ($what=="define"): include_once "class_words.php"; $w = new words(); endif; No ale jde o ten objekt $pod_jmena že nejde vidět uvnitř metody |
||
Majkl578 Profil |
#11 · Zasláno: 4. 7. 2010, 00:19:04
Napsal bych to nějak takto:
<?php $podstatnaJmena = (object) array( 'vzory' => (object) array ( 'm' => array ('mz1', 'mz2', 'md1', 'md2', 'ml1', 'ml2' ), 'z' => array ('zz1', 'zz2', 'zd1', 'zd2' ), 's' => array ('sz1', 'sz2' ), 'mz' => array ('mz1', 'mz2' ), 'zz' => array ('zz1', 'zz2' ), 'sz' => array ('sz1', 'sz2' ), 'm1' => array ('mz1', 'md1', 'ml1' ), 'z1' => array ('zz1', 'zd1' ), 's1' => array ('sz1' ), 'm2' => array ( 'mz2', 'md2', 'ml2' ), 'z2' => array ( 'zz2', 'zd2' ), 's2' => array ( 'sz2' ), '1' => array ('mz1', 'md1', 'ml1', 'zz1', 'zd1', 'sz1' ), '2' => array ('mz2', 'md2', 'ml2', 'zz2', 'zd2', 'sz2' ) ) ); class Words { private $podstatnaJmena; // podstatná jména public function __construct(\stdClass $podstatnaJmena) { $this->podstatnaJmena = $podstatnaJmena; var_dump($this->podstatnaJmena); } } new Words($podstatnaJmena); |
||
Honza_n Profil * |
#12 · Zasláno: 4. 7. 2010, 00:34:30
OK dík za tip. Ale jsou na to dva pohledy. V linuxu a obzvláště v perlu lidi se řídí pravidlem čím kratší, tím lepší. A jelikož chci aby se mi s těmi vlastnostmi dobře pracovalo a bylo to rychlé aj nechci vypisovat celá jména jako pridavna_jmena ale pouze prj ... to má taky svou logiku. Ale jinak jo. Já jsem strukturu opisoval podle nějakého starého kódu.
Já mám spíš dotaz k tomu cos napsal. Znamena to, že to musim dostat do té třídy jako argument a jinak to nejde? |
||
Honza_n Profil * |
#13 · Zasláno: 4. 7. 2010, 00:49:59
A co znamená to
\stdClass mě to píše unexpecter character in input, takže jsem to smazal ale jinak to jede, díky |
||
Majkl578 Profil |
#14 · Zasláno: 4. 7. 2010, 01:31:24
Honza_n:
„Znamena to, že to musim dostat do té třídy jako argument a jinak to nejde?“ Je to jediný čistý způsob. Věci jako global apod. jsou nevhodné. > A co znamená to > \stdClass Jmenný prostor, máš staré PHP. „Já jsem strukturu opisoval podle nějakého starého kódu.“ Nejhorší chyba, kterou může začátečník udělat. |
||
Lamicz Profil |
Majkl578:
IMHO v tomto pripade bych namespaces neresil ;) Moderátor Str4wberry: Tvůj projev je špatně srozumitelný, piš prosím s diakritikou.
|
||
Časová prodleva: 14 let
|
0