| Autor | Zpráva | ||
|---|---|---|---|
| kuba123 Profil * |
#1 · Zasláno: 15. 6. 2013, 12:09:23 · Upravil/a: kuba123
Trying to get property of non-object
<?php
class Search{
public $colors, $genders, $gencount, $usc;
function reset(){
$this->colors=array();
$this->genders=array();
$this->gencount=array();
$this->usc=0;
}
}
class Results{
public $search;
public $search;
__Constructor {
$this->search = New Search();
}
}
$results = New Results();
?>V momentě kdy se zkouším vyresetovat hodnoty v objektu tak dostávám tuto chybovou hlášku. Taky to zkouším takto, ale ani jedna varianta nefunguje. Co s tím? <?php
class Search{
public $colors, $genders, $gencount, $usc;
function reset(){
global $results;
$results->search->colors=array();
$results->search->genders=array();
$results->search->gencount=array();
$results->search->usc=0;
}
}
class Results{
public $search;
public $search;
__Constructor {
$this->search = New Search();
}
}
$results = New Results();
?>Ještě podotýkám, že do toho objektu $results->search mohu normálně přistupovat či nastavovat hodnoty, ale ta metoda na reset mi nejede |
||
| Alphard Profil |
#2 · Zasláno: 15. 6. 2013, 13:05:18
kuba123:
„__Constructor“ :-) viz php.net/manual/en/language.oop5.decon.php Neukazujete přesný kód, ale předpokládám, že je problém v tom, že instance třídy Search prostě neexistuje. |
||
| juriad Profil |
#3 · Zasláno: 15. 6. 2013, 13:15:58
Druhou variantu zahoď, zanáší neviditelnou závislost pomocí global.
Metoda, která se zavolá, když se vytváří instance objektu se v PHP jmenuje __construct.
Každý atribut můžeš deklarovat ve třídě jen jednou, viz řádku 14 a 15. K chybě dochází kvůli tomu, že __Constructor se nikdy nezavolá (nevolá se automaticky, na to blbě jmenuje, a nevoláš ho ani ty sám), tedy $search má výchozí prázdnou hodnotu.
|
||
| kuba123 Profil * |
#4 · Zasláno: 15. 6. 2013, 13:21:19
Dík.
|
||
| kuba123 Profil * |
#5 · Zasláno: 15. 6. 2013, 14:57:25 · Upravil/a: kuba123
Stále mi to nejede a stále stejná chyba:
<?php
class Search{
public $colors, $genders, $gencount, $users;
}
class Results{
public $search;
__construct() {
$this->search = New Search();
$this->reset();
}
public function SQL($query,$UseCache=false){
$tmp = New CacheQuery($query,$UseCache);
return $tmp->data;
}
public function reset(){
$this->search->colors=array();
$this->search->genders=array();
$this->search->gencount=array();
$this->search->users=0;
}
}
$results = New Results();
?>Call to a member function reset() on a non-object Je to vcelku jedno jestli to resetuju před voláním SQL nebo až pak, v obou případech to hlásí chybu že ta instance neexistuje $results->reset();
$data = $results->SQL("SELECT gender, count(*) as c FROM ".C_MYSQL_MEMBERS_MAIN." WHERE status > '6' group by gender order by c desc",IsCache(1,64));
print_r($data);Tak jsem to vyřešil. Zjistil jsem, že ten soubor se třídou se vůbec nenačetl a to vážně nechápu, protože jsem ho před tím už používal... |
||
| juriad Profil |
A ještě,
__construct je také funkce, musí mít uvedené function.
|
||
|
Časová prodleva: 13 let
|
|||
0