| 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: 15 let
|
|||
0