У меня есть класс UserFavorite, расширяющий пользователя. Когда я создаю новый объект с помощью конструкторов конструкторов классов, нельзя устанавливать свойства.PHP OOP Не удается установить частные свойства
Constructor:
public function __construct($username, $tabId, $favName, $favUrl = null, $favPosition = null, $favComment = null) {
parent::__construct($username);
$this->tabId = $this->setTabId($tabId);
$this->favName = $this->setFavName($favName);
$this->favUrl = $this->setFavUrl($favUrl);
$this->favPosition = $this->setFavPosition($favPosition);
if ($favComment) {
$this->favComment = $this->setFavComment($favComment);
}
}
сеттер:
public function setFavUrl($favUrl) {
$url = filter_var($favUrl, FILTER_VALIDATE_URL);
if (!$url) {
echo $this->showError(...);
exit;
}
echo $url; // THIS LOGS THE URL
$this->favUrl = $url;
}
Я creatirng новый экземпляр $fav = new UserFavorite($user->getUsername(), 1, 'favorite', 'http://abv.bg', 5, 'mamatisiebalo');
И когда я напечатать $fav
я получаю:
favorite<pre>UserFavorite Object
(
[favName:UserFavorite:private] =>
[tabId:UserFavorite:private] =>
[favUrl:UserFavorite:private] =>
[favPosition:UserFavorite:private] =>
[favComment:UserFavorite:private] =>
[_favId:UserFavorite:private] =>
[username:protected] => myUserName
[_userId:protected] => 1
)
Любые идеи?
Если эти свойства являются частной собственностью в классе 'User', то вы не можете получить к ним доступ из класса' UserFavourites' ... это то, что 'private' означает –
' $ this-> tabId = $ this- > setTabId ($ tabId); 'Почему вы устанавливаете его вручную и вызываете сеттер? Он должен быть либо '$ this-> setTabId ($ tabId);' OR '$ this-> tabId = $ tabId;' – Jessica
+1 к тому, что сказал Марк Бейкер. Если вы расширяете класс и хотите получить доступ к родительским переменным, используйте 'protected' вместо' private'. – Crackertastic