Похоже, что PDO не поддерживает заглавные буквы для переменных-членов.
В качестве альтернативы я предлагаю вам сопоставить данные из базы данных с частными членами вашего класса, а вы предоставляете для доступа методы получения и установки.им:
class Category
{
private $shortname;
...
public function getShortname()
{
return $this->shortname;
}
public function setShortname($name)
{
$name = (string) $name;
if (!$name)
{
throw new InvalidArgumentException('Can\'t delete the name.');
}
$this->shortname = $name;
}
...
}
Это позволяет вам отображать поля независимо от их имени, и вы можете контролировать, можно ли записывать свойства или нет (например, ID).В любом случае они не должны быть публичными.
В дальнейшем вы можете улучшить это, переместив код доступа к данным в базовый класс и расширив его для ваших классов данных, таких как Category, или, тем не менее, они будут названы.