2013-09-13 1 views
1

Хотя я уже давно разрабатываю объекты для PHP, абстрактные классы для меня несколько новы. По моему мнению, я бы использовал абстрактный класс, когда я хочу определить список методов, которые я хочу, чтобы я или другие разработчики следовали, а также предоставляя некоторые базовые методы для разработки.Модификаторы доступа для свойств в абстрактных классах

Похоже, что нет способа определить свойства в абстрактном классе, что я считаю нечетным. Возьмем следующий код:

abstract class Gateway { 

    abstract public function process(); 

    public function set_gateway_key($key) { 

      $this->key = $key; 

    } 

} 

Ключ такого рода является то, что вы, как правило, требуется ограничить доступ для того, чтобы запустить через какой-то проверки. Возможно, вы могли бы представить и другие сценарии. Тем не менее, вы вынуждены полагаться на разработчика, расширяющего этот абстрактный класс, чтобы установить этот модификатор доступа.

Я что-то упустил? Или нет способа сделать это?

+0

Отлично подходит для меня, какую версию PHP вы используете? Сделал [быстрый тест] (http://sandbox.onlinephpfunctions.com/code/0c0dd7205ecba00a9034d1aee31ea32087002e1b) – elclanrs

ответ

5

Абстрактные классы могут иметь свойства.

abstract class AbstractClass { 
    protected $key; 

    public function setKey($key) { 
     $this->key = $key; 
    } 
} 
+0

@ dev-null-dweller Спасибо - веселый Я не ставил «абстрактные» в классе, когда говорил об абстрактных классах !! ! – Rottingham

+0

Хорошо, у вас оно есть. Думаю, я должен был попробовать это первым. Google не всегда является лучшим местом для ответа ... – Chris

+0

@Chris Лучший способ научиться программированию - попробовать. – Rottingham