$this werkt niet in method?

Gestart doorAarclay3 reacties764 weergaven

4 berichten · pagina 1 van 1

Aarclay

Lid · Topicstarter

Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
Kan iemand mij uitleggen waarom die $this-> opeens niet kan in createFilename(). Ik krijg steeds:
Fatal error: Using $this when not in object context in /home/***/UploadConverter.class.php on line 63
Ik wil de bestandsnaam daarvan oproepen in getUploadData().


	Â Â Â  public function getUploadHash($hash) {
    $this->uploadhash = $hash;
    return $this->uploadhash;
    
    }
    
    /* Create Filename, which not exists*/
    private static function createFilename($filename) {
    while (true) {
        $timecreated = time();
        $file = pathinfo($filename);
        $prefix = uniqid();
        $filename_new = $timecreated.'_'.$prefix;
        if (!file_exists($filename_new)) break;
    }
    $this->filename = $filename_new;
    return $filename_new;
    }
	public function getUploadData() {
    $filedata['Name'] = $this->filename;
    $filedata['Type'] = '';
    $filedata['UploadID'] = $this->uploadID;
    $filedata['Author'] = '';
    return $filedata;
    }
	
Opmerkelijk is dat als voorbeeld die    $this->uploadhash = $hash; wel weer mag?

Waar gaat het mis?
Â
0
Rik

Lid

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
Omdat createFilename een static function is, en static functions kun je niet in een object-context aanroepen. Je kan daarbij dus ook geen $this gebruiken.

Wat je wel kan doen is de functie óf niet static maken, of gebruik maken van self:: in plaats van $this (https://stackoverflow.com/a/151976/2299364)
0
Aarclay

Lid · Topicstarter

Berichten
10.421
Reputatie
4
Punten
0,00
Lid sinds
Laatst gezien
Die werking van static i.p.c. $this was ik even vergeten. Dankjewel voor het herinneren eraan puh
0
Berichten
204
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Handig om te benoemen is dat self binnen de scope wordt gebruikt met operator :: en dat het werkt in non-static en in static contexts.

Ook een leuk stukje: https://www.leaseweb.com/labs/2014/04/static-versus-self-php/

Self refereert dus naar de scope en static naar de gerefereerde class.

correct me if I'm wrong
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren