как то не понятно отношение переменныех к интерфейсу.
Если для реализации функционала требуются переменные(свойства), то их надо объявлять всегда и не забывать в коментарии указывать их тип.
Плохие пример который будет работать
class X
{
public function __construct()
{
$this->neizvestnaja = 'neizvestnaja';
}
public function getNeizvestnaja()
{
return $this->neizvestnaja;
}
}
$x = new X();
echo $x->getNeizvestnaja()."\n";
echo $x->neizvestnaja;
Сразу видно:
1) что необъявленая переменная берется в функции из не откуда, и пока ты не зааглянеш специально в конструктор, то и не догадаешся вообще от куда она берется.
2) echo $x->neizvestnaja; Здесь мы видем, что переменная эта еще и доступна с наружи и является public. Tak же не понятно от куда она берется.
Еще пример для введения в заблуждение
class Y {
public function getBublik(){ return $this->bublik; }
}
$y = new Y;
$y->bublik = "prjanik";
echo $y->getBublik()."\n";
$y = new Y;
echo $y->getBublik();
попробуй потом через месяц разобратся почему в первом вызове работает а во втором нет, А самое главное почему это должно вообще работать :)
Короче обьявляй все что можно.
Что касается Видемости свойст класса, то лучше их все держать только privat.
Общатся с ними только при помощи set и get методов и тогда даже отпадет надобность делать эти переменные protected.
Конструкции типа $objekt->peremennaja = "vlaue" преминять только в stdClass или в нетипизированных конструкциях без функционала.
_____________
↓↓↓↓↓↓↓↓↓↓ответ может быть здесьили в mysql_error();