Ga naar inhoud
Log in om dit te volgen  
aarclay

$this werkt niet in method?

Aanbevolen berichten

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?
 

Deel dit bericht


Link naar bericht
Delen op andere sites

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)

Deel dit bericht


Link naar bericht
Delen op andere sites

Die werking van static i.p.c. $this was ik even vergeten. Dankjewel voor het herinneren eraan 😛

aangepast door aarclay

Deel dit bericht


Link naar bericht
Delen op andere sites

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

aangepast door pepijniscool

Deel dit bericht


Link naar bericht
Delen op andere sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reageer op dit topic...

×   Geplakt als RTF formaat tekst.   Plak in plaats daarvan als platte tekst

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

Log in om dit te volgen  

×
×
  • Nieuwe aanmaken...