Staattiset menetelmät ja $this OOP:ssa PHP:ssä
Staattisten menetelmien sisällä $this ei ole saatavilla.
Tämä johtuu siitä, että staattisia menetelmiä
voidaan kutsua olion kontekstin ulkopuolella,
yksinkertaisesti viitattaessa luokan nimeen.
Tavallisissa menetelmissä sekä staattiset että tavalliset ominaisuudet ja menetelmät ovat saatavilla.
Katsotaanpa esimerkein. Esimerkki tavallisesta menetelmästä:
<?php
class Test
{
public static $staticProperty = 'static';
public $usualProperty = 'usual';
public function method()
{
echo self::$staticProperty; // tulostaa 'static'
echo $this->usualProperty; // tulostaa 'usual'
}
}
$test = new Test;
$test->method();
?>
Esimerkki staattisesta menetelmästä:
<?php
class Test
{
public static $staticProperty = 'static';
public $usualProperty = 'usual';
public static function method()
{
echo self::$staticProperty; // tulostaa 'static'
echo $this->usualProperty; // aiheuttaa virheen
}
}
$test = new Test;
$test::method();
?>