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

Maak een account aan of log in om te reageren

Je moet lid zijn om een reactie te kunnen achterlaten

Account aanmaken

Maak een account aan in onze gemeenschap. Het is makkelijk!

Registreer een nieuw account

Aanmelden

Ben je al lid? Meld je hier aan.

Nu aanmelden
Log in om dit te volgen  

×