Friday 7 June 2019

php - What does this mean? "Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM"




T_PAAMAYIM_NEKUDOTAYIM sounds really exotic, but most certainly absolutely nonsense to me. I traced it all down to this lines of code:



Class Context {
protected $config;

public function getConfig($key) { // Here's the problem somewhere...
$cnf = $this->config;
return $cnf::getConfig($key);

}

function __construct() {
$this->config = new Config();
}
}
?>


In the constructor I create a Config object. Here's the class:




final class Config {
private static $instance = NULL;
private static $config;

public static function getConfig($key) {
return self::$config[$key];
}

public static function getInstance() {

if (!self::$instance) {
self::$instance = new Config();
}
return self::$instance;
}

private function __construct() {
// include configuration file
include __ROOT_INCLUDE_PATH . '/sys/config/config.php'; // defines a $config array
$this->config = $config;

}
}


No idea why this doesnt work / what the error means...


Answer



T_PAAMAYIM_NEKUDOTAYIM is the double colon scope resolution thingy PHP uses - ::



Quick glance at your code, I think this line:




return $cnf::getConfig($key);


should be



return $cnf->getConfig($key);


The first is the way to call a method statically - this code would be valid if $cnf contained a string that was also a valid class. The -> syntax is for calling a method on an instance of a class/object.


No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...